我有G729编码的音频文件。我需要以编程方式将它们转换为WAV PCM(16位8kHz单声道),这也是在做其他事情的工具流程中。我有一个可执行文件,可以帮我。但每次转换时产生外部进程对资源来说太沉重了。特别是如果我需要其中许多并行完成。 寻找一个.NET库或代码,让我在我的进程中调用它。
答案 0 :(得分:3)
请点击此链接:The VoiceAge Open G.729 Implementation。它们还提供用C语言编写的g729解码器和编码器。
答案 1 :(得分:0)
根据维基百科的说法,G.729包含多项专利,并由Sipra许可,因此您可能没有太多运气找到合适的专辑。除非您正在解码大量非常小的文件,否则产生新进程的成本与进行解码的成本相比不应该那么大,所以我要说使用您拥有的可执行文件。
就资源而言,是的,与使用线程相比,产生进程需要更多资源。但这并不重要,只要您只生成与机器中的核心一样多的进程即可。产生更多进程只会浪费资源,并不会带来任何额外的并行性。
答案 2 :(得分:0)
维基百科说:“G.729包括来自多家公司的专利,并由Sipro(http://www.sipro.com/)许可。在许多国家/地区,使用G.729可能需要许可费和/或版权费。“
但我想你已经在你的申请中考虑了这一点。
如果你绝对必须在进程中,一个解决方案(不是说它是最好的)可能是使用LGPL下的LibAVCodec。
答案 3 :(得分:0)
免费使用的参考实施:http://www.readytechnology.co.uk/open/ipp-codecs-g729-g723.1/
请注意其他人提出的专利问题,参考实施仅在英特尔处理器上运行,并且您需要向英特尔支付费用,以便使用其IPP库作为商业产品的一部分来分发代码。
答案 4 :(得分:0)
如果您的系统上有G729的ACM编解码器,那么您可以使用NAudio将其转换为PCM。使用NAudio附带的NAudioDemo应用程序,它将向您显示系统中可用的ACM编解码器,并使用它们解码文件。
答案 5 :(得分:0)
当谈到g729转换器时,首先提示我的是ITU G729-A标准。一种非常麻烦的方法是将g729转换为pcm,首先在wav文件前添加一个wav头。这构造了一个.wav来自.g729。自国际电联官方g729a(并且官方不支持多线程......)lib高度参与这个想法,我想你必须考虑并发以及如何在g729a lib.I中正确编程一堆静态变量曾经参与像OP descibes这样的小项目,我基本上将巨大的g729文件拆分成g729块并以合理的并发编程方式单独解码...
答案 6 :(得分:0)
如果您只想查看文件所需的编解码器,请转到GSopt并下载最新版本(您可以click here直接打开下载页面。)
下载后,解压缩文件打开文件夹并运行EXE
,现在从浏览按钮中选择文件,文件加载后,将显示所有信息。 (如果文件未显示在browse dialogue box
中,只需从All Files(*.*)
选择browse file dialogue