我正在尝试使用 FFmpeg 通过网络将麦克风中的音频传输到 VLC,但无法将延迟控制在半秒以下,这对于我的目的来说是不可接受的。我能够几乎无延迟地传输原始视频(来自同一网络摄像头设备),因此我期望对音频也能做到同样的事情,因为涉及的数据较少。
FFmpeg 命令:
ffmpeg -f dshow -i audio="Microphone (2- Microsoft LifeCam VX-5000)" -f wav udp://127.0.0.1:12000
控制台输出:
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, dshow, from 'audio=Microphone (2- Microsoft LifeCam VX-5000)':
Duration: N/A, start: 1047373.188000, bitrate: N/A
Stream #0:0: Audio: pcm_s16le, 44100 Hz, 2 channels, s16, 1411 kb/s
[wav @ 04fffba0] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
Output #0, wav, to 'udp://127.0.0.1:12000':
Metadata:
ISFT : Lavf57.36.100
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
Metadata:
encoder : Lavc57.40.100 pcm_s16le
Stream mapping:
Stream #0:0 -> #0:0 (pcm_s16le (native) -> pcm_s16le (native))
我在 VLC 中接收此信息,并将缓存设置为 10ms,但声音和 VLC 播放之间的实际延迟约为半秒。
另外,如果我在实际启动 FFmpeg 流之前不启动 VLC 尝试接收流,它就不起作用。我可以轻松解决这个问题,但这似乎有点奇怪。
有什么方法可以进一步减少延迟?