我有G729编码的音频文件。我需要以编程方式将它们转换为WAV PCM(16位8kHz单声道),这也是在做其他事情的工具流程中。我有一个可执行文件,可以帮我。但每次转换时产生外部进程对资源来说太沉重了。特别是如果我需要其中许多并行完成。 寻找一个.NET库或代码,让我在我的进程中调用它。

有帮助吗?

解决方案

请点击此链接: VoiceAge Open G.729实施。它们还提供用C语言编写的g729解码器和编码器。

其他提示

根据维基百科,G.729包含多项专利,并获得 Sipra 许可,因此您可能获胜找到合适的小说有很多运气。除非您正在解码大量非常小的文件,否则产生新进程的成本与进行解码的成本相比不应该那么大,所以我要说使用您拥有的可执行文件。

就资源而言,是的,与使用线程相比,产生进程需要更多资源。但这并不重要,只要您只生成与机器中的核心一样多的进程即可。产生更多进程只会浪费资源,并不会带来任何额外的并行性。

维基百科说:“G.729包含来自多家公司的专利,并由Sipro授权( http:// www .sipro.com / )。在许多国家/地区,使用G.729可能需要许可费和/或许可费。“

但我想你已经在你的申请中考虑了这一点。

如果你绝对必须在进程中,一个解决方案(不是说它是最好的)可能是使用LGPL下的LibAVCodec。

免费使用的参考实施: http://www.readytechnology.co.uk/open/ipp-codecs-g729-g723.1/

请注意其他人提出的专利问题,参考实施仅在英特尔处理器上运行,并且您需要向英特尔支付费用,以便使用其IPP库作为商业产品的一部分来分发代码。

如果您的系统上有G729的ACM编解码器,那么您可以使用 NAudio 进行转换到PCM。使用NAudio附带的NAudioDemo应用程序,它将向您显示系统中可用的ACM编解码器,并使用它们解码文件。

当谈到g729转换器时,首先提示我的是ITU G729-A标准。一种非常麻烦的方法是将g729转换为pcm,首先在wav文件前添加一个wav头。这构造了一个.wav来自.g729。自国际电联官方g729a(并且官方不支持多线程......)lib高度参与这个想法,我想你必须考虑并发以及如何在g729a lib.I中正确编程一堆静态变量曾经参与像OP descibes这样的小项目,我基本上将巨大的g729文件拆分成g729块并以合理的并发编程方式单独解码...

如果您只想查看文件所需的编解码器,请转到 GSopt 并下载最新版本(你可以点击这里直接打开下载页面。)

下载后,解压缩文件打开文件夹并运行 EXE ,现在从浏览按钮中选择文件,加载文件后,将显示所有信息。 (如果浏览对话框中没有显示文件,只需从浏览文件对话中选择所有文件(*。*)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top