【发布时间】:2013-06-27 20:32:28
【问题描述】:
我正在编写一个 UDP 局域网视频聊天系统,并且已经让视频和音频流正常工作。但是,我在音频中遇到了一点延迟(大约半秒),并且想知道哪种编解码器可以提供最少的延迟。我正在使用 NAudio (http://naudio.codeplex.com/),它让我可以访问以下编解码器进行流式传输;
- Speex 窄带 (VBR)
- Speex 宽带 (16kHz)(VBR)
- Speex 超宽带 (32kHz)(VBR)
- DSP 组 TrueSpeech (8.5kbps)
- GSM 6.10 (13kbps)
- 微软 ADPCM (32.8kbps)
- G.711 a-law (64kbps)
- G.722 16kHz (64kbps)
- G.711 mu-law (64kbps)
- PCM 8kHz 16 位未压缩 (128kbps)
我已经尝试过它们,但我并没有注意到太大的不同。还有其他我应该下载并尝试减少延迟的吗?我只会通过连接发送语音,但我并不太担心质量或背景噪音。
更新
我正在像这样以块的形式发送音频;
waveIn = new WaveIn();
waveIn.BufferMilliseconds = 50;
waveIn.DeviceNumber = inputDeviceNumber;
waveIn.WaveFormat = codec.RecordFormat;
waveIn.DataAvailable += waveIn_DataAvailable;
void waveIn_DataAvailable(object sender, WaveInEventArgs e)
{
if (connected)
{
byte[] encoded = codec.Encode(e.Buffer, 0, e.BytesRecorded);
udpSender.Send(encoded, encoded.Length);
}
}
【问题讨论】:
-
有时延迟是无法控制的。我可以运行相同的设备,运行低延迟的驱动程序,但运行不同的程序,差异是惊人的。有些程序有延迟缓冲区。我想你必须自己写。我想说1/2秒很长。在专业音频中,您与 ms 打交道。我不明白为什么如果你在交流为什么噪音和质量不重要。
-
哦,是的。我注意到 naudio 有一个 ASIO 选项。您在使用它吗(即您的硬件是否支持它?)?
-
我从 i5 MS Surface 运行到 Windows 7 i7 笔记本电脑,但我知道瓶颈可能在其他地方。我的意思是我愿意对我的背景噪音/质量进行打击,以减少延迟。我刚刚在两个系统中都安装了 ASIO4All,但我不熟悉它。它有助于编码/解码吗?
-
音乐对我来说是一种爱好,我不会为它编程。我来自使用音频 progs 的经验。它的好处是低延迟音频制作。编辑:我认为您可以将设备本身视为流。所以它就像一个 IO 连接,如果这有意义的话,音频被“记录”在接收器上。
-
不,通过路由器。根据研究,我猜你需要一个相当耐用的声卡才能使用 ASIO,而不仅仅是 ASIO4All。