我应该使用哪种音频编解码器?

时间:2010-03-03 01:35:15

标签: c# audio tcp codec speech

我应该为我的C#软件开发项目选择哪种音频编解码器,其中要转码/传输/使用的原始音频基于以下内容:

  1. 仅用于编码语音
  2. 音频可以是立体声或单声道
  3. 能够支持直播
  4. 文件大小和质量之间的良好权衡
  5. 以编码格式通过TCP / IP传输
  6. 可由现成的免费播放器播放而无需进一步处理
  7. 请注意,无需考虑是否有可用的免费编解码库来执行转码。

6 个答案:

答案 0 :(得分:7)

更新,更好的替代方案是Opus Codec

使用其他编解码器查看comparison以了解其效果如何。

答案 1 :(得分:5)

Speex是免费的开源编解码器,专为在需要低延迟的实时解决方案中编码语音而设计。诸如WMA或MP3之类的通用压缩方案可能会导致更多延迟,并且它们也可能无法以非常低的比特率运行良好。 http://www.speex.org/

答案 2 :(得分:2)

正如你提到目标平台的C#,我必须向accepted answer添加内容。在纯C#中有一个Speex编解码器的端口到.Net平台,称为NSpeex

答案 3 :(得分:0)

您可以将LAME用于带有“语音”预设的MP3编码。我建议测试不同的because of issues like this

MP3就是KPFA.org(现在我认为KQED)都用于直播。效果很好。不知道使用了什么服务器sw。

答案 4 :(得分:0)

鉴于您选择语言,如果可以安全地假设您使用的是Windows,我实际上会推荐使用Windows格式的WMA。这些库都将被内置,并且所有事情都被认为是一个非常可靠的编解码器。支持您的所有要求等。

但是,如果您要推送到Flash端点,请使用.fla,Flash Audio。 Flash肯定会优化使用它,虽然使用C#并不是那么容易,但你肯定会欣赏另一端的易用性。

答案 5 :(得分:0)

如果您只针对Windows,那么GSM编解码器可能是低带宽应用的理想选择。它通常被认为质量低于Speex,但也使用相当少的带宽。

Windows Media Player可以播放GSM,编码器是Vista及以上版本的Media Foundation的一部分(可能是XP及以下的一些Win32 API?)