Я пытаюсь транслировать аудио с микрофона с помощью 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 с кэшированием, установленным на 10 мс, но фактическая задержка между звуком и воспроизведением VLC составляет около половины секунды.
Кроме того, если я не запускаю VLC, пытающийся получить поток, прежде чем я фактически запускаю поток FFmpeg, это не работает. Я легко могу обойти эту проблему, но она кажется немного странной.
Есть ли способ для меня, чтобы еще больше сократить время ожидания?