Как уменьшить задержку - потоковая передача VLC с веб-камеры
Я передаю видео и аудио с моей веб-камеры/микрофона через UDP. Когда я просматриваю поток (даже на той же машине), происходит отсрочка около 4 секунд. Я попытался установить параметр UDP Cache на 0 или 1, но он, похоже, не помогает. Я попытался уменьшить скорость передачи видео и аудио, используя монофонический звук и уменьшая частоту дискретизации до нуля.
Есть ли у кого-нибудь идеи, как я мог бы уменьшить задержку, что-то лучше подходит для видеоконференции, т.е. 1 секунда?
Есть ли способ, который я могу применить к средству просмотра/стримера, которое может помочь?
Спасибо,
Марк
Ответы
Ответ 1
В моем исследовании потоковой передачи VLC с веб-камерой я получил задержку в 2-3 секунды для многоадресного потока UDP, транскодированного с помощью WMV/ASF-контейнера + кодека WMV2 от веб-камеры Dell Creative Integrated с размером видео cif.
Если вы используете MP4/MOV-контейнер + H.264-кодек, я получил в два раза большую задержку первого с теми же настройками в битрейтах, fps и scale.
Я отключил звук в обоих настройках потоковой передачи, так как меня это не интересовало.
Я провел исследование с двумя версиями VLC:
- VLC 1.1.11 (последняя версия Windows с стабильной версией)
- VLC 2.1.0 (последняя версия с ночной версией)
В первой версии я мог транскодировать и передавать с веб-камеры, но он не мог правильно воспроизвести поток (он просто дал почерневший видеопоток)
Со второй версией он отлично работал для транскодирования, потоковой передачи и воспроизведения.
Это исследование проводилось на:
Intel Core 2 Duo T7250
4GB DDR2-667 SDRAM
SATA 7200 RPM HDD
GeForce 8400M GS 128MB GDDR3 (+ 128MB shared memory = 256MB video memory)
Windows XP Pro SP3
Ответ 2
Если вы используете протокол rtsp для потоковой передачи на видео/аудио, вы можете настроить задержку на
tools- > preferences- > all- > input/codecs- > demuxers- > RTP/RTSP- > кеширование
tools- > preferences- > all- > input/codecs- > demuxers- > RTP- > длина буфера для удаления флага RTP
Ответ 3
Попробуйте это.
#!/bin/sh
ETH=eth0
cvlc --miface=$ETH v4l2:///dev/video0 :input-slave=alsa://hw:0,0 :sout=#transcode{vcodec=h264,venc=x264{preset=ultrafast,tune=zerolatency,intra-refresh,lookahead=10,keyint=15},scale=auto,acodec=mpga,ab=128}:rtp{dst=224.10.0.1,port=5004,mux=ts} :sout-keep >/dev/null 2>/dev/null &
vlc1=$!
vlc --miface=$ETH rtp://224.10.0.1 >/dev/null 2>/dev/null &
vlc2=$!
wait $vlc2
kill -9 $vlc1
У меня есть 2-секундная задержка с веб-камерой 720p, она производит около 2,5 Мбит/с трафик и нагрузку для одного ядра ~ 30%.