j'ai un problème .. Je voudrais faire un streaming en direct avec ffmpeg depuis ma webcam.
Depuis un autre terminal, je lance ffmpeg pour diffuser avec cette commande .__ et cela fonctionne:
Sudo ffmpeg -re -f video4linux2 -i /dev/video0 -fflags nobuffer -an http://localhost:8090/feed1.ffm
Dans mon fichier de configuration, j'ai ce flux:
<Stream test.webm>
Feed feed1.ffm
Format webm
NoAudio
VideoCodec libvpx
VideoSize 720x576
VideoFrameRate 25
# Video settings
VideoCodec libvpx
VideoSize 720x576 # Video resolution
VideoFrameRate 25 # Video FPS
AVOptionVideo flags +global_header # Parameters passed to encoder
# (same as ffmpeg command-line parameters)
AVOptionVideo cpu-used 0
AVOptionVideo qmin 10
AVOptionVideo qmax 42
#AVOptionVideo quality good
PreRoll 5
StartSendOnKey
VideoBitRate 400 # Video bitrate
</Stream>
Je lance le flux avec
ffplay http: //192.168.1.2: 8090/test.webm Cela fonctionne mais j'ai un délai de 4 secondes et je voudrais minimiser ce délai car il est essentiel pour mon application . Merci
Le guide de diffusion en continu de FFMpeg contient une section spécifique sur la réduction de la latence. Je n'ai pas encore essayé toutes leurs suggestions. http://ffmpeg.org/trac/ffmpeg/wiki/StreamingGuide#Latency
Ils font une remarque particulière sur la latence. Ffplay présente:
Par défaut,
ffplay
introduit une petite latence qui lui est propre. Également utile estmplayer
avec son-nocache
pour tester la latence (ou-benchmark
). L'utilisation de la sortie SDL permet également d'afficher les images avec une latence minimale:ffmpeg ... -f sdl -
Vous pouvez essayer cette commande
ffplay -fflags nobuffer -rtsp_transport tcp rtsp://<Host>:<port>
ou un plus savoureux mais expérimental:
ffplay -fflags nobuffer -flags low_delay -framedrop \
-strict experimental -rtsp_transport tcp rtsp://<Host>:<port>
ou le hacky:
ffplay -probesize 32 -sync ext -rtsp_transport tcp rtsp://<Host>:<port>
Le -rtsp_transport
peut être configuré comme udp
ou tcp
en fonction de votre diffusion. Pour cet exemple, j'utilise tcp
.