题
我有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块并以合理的并发编程方式单独解码...