5

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

4

7 回答 7

3

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

于 2008-10-17T17:21:04.150 回答
0

根据 Wikipedia,G.729 包含多项专利并由Sipra授权,因此您可能不会很幸运地找到合适的图书馆。除非您要解码大量非常小的文件,否则与进行解码的成本相比,生成新进程的成本不应该那么大,所以我会说使用您拥有的可执行文件。

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

于 2008-10-17T17:16:44.813 回答
0

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

但我猜你已经在你的应用程序中考虑到了这一点。

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

于 2008-10-17T17:20:05.837 回答
0

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

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

于 2008-10-17T17:39:03.287 回答
0

如果您的系统上有用于 G729 的 ACM 编解码器,则可以使用NAudio将其转换为 PCM。尝试使用 NAudio 中包含的 NAudioDemo 应用程序,它将向您显示系统上可用的 ACM 编解码器,并使用它们解码文件。

于 2008-10-20T18:15:12.793 回答
0

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

于 2012-03-26T07:32:54.657 回答
0

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

After download, extract file open folder and run the EXE, Now select the file from the browse button and after file is loaded all its information will be shown. (If file is not shown in the browse dialogue box just select All Files(*.*) from browse file dialogue)

于 2012-08-24T08:02:22.143 回答