Nous pouvons utiliser split
filtrer et utiliser -map
deux fois.
Si l'entrée comporte à la fois des flux vidéo et audio, nous pouvons utiliser split
pour la vidéo et asplit
pour l'audio, et nous devons mapper à la fois la vidéo et l'audio.
Nous ne pouvons pas utiliser tee
muxer pour l'encodage avec deux codecs différents - tee
muxer divise un flux déjà encodé (peut diviser en deux conteneurs/formats différents).
Exemple avec une vidéo synthétique :
ffmpeg -f lavfi -i testsrc=size=192x108:rate=1:duration=10 -filter_complex "split[v0][v1]" -vcodec bmp -f image2 -map "[v0]" frame%05d.bmp -vcodec libx264 -pix_fmt yuv420p -f mp4 -map "[v1]" test_output.mp4
-
-filter_complex "split[v0][v1]"
divise le flux vidéo d'entrée en deux flux avec des noms temporaires [v0]
y [v1]
.
-
-map "[v0]" frame%05d.bmp
cartes [v0]
à frame%05d.bmp
sortie ( [v0]
codec et format définis par -vcodec bmp -f image2
).
-
-map "[v1]" test_output.mp4
cartes [v1]
à test_output.mp4
sortie ( [v1]
codec et format définis par -vcodec libx264 -pix_fmt yuv420p -f mp4
).
Exemple avec votre commande (non testé) :
ffmpeg -y -an -timeout 10000000 -rtsp_transport tcp -i rtsp://rtsp.stream/pattern -filter_complex "transpose=1,split[v0][v1]" -c:v bmp -f image2pipe -map "[v0]" - -c:v libx264 -preset veryfast -tune zerolatency -f flv -map "[v1]" rtmp://127.0.0.1/live