FFMPEG-Mosaikstottern
BEARBEITEN: Plötzlich ist das Problem mit den gleichen Skripten auf der gleichen Hardware verschwunden. Ich bin immer noch neugierig auf die Ursache, aber bis ich sie noch einmal reproduzieren kann, gibt es nur wenige Diagnosemöglichkeiten. Entschuldigen Sie.
Ich verwende FFMPEG, um Live-Feeds von mehreren Webcams zu erhalten. Wenn die Feeds unabhängig sind (dh jeder v4l2
Eingang läuft durch seine eigene Pipeline innerhalb des filter_complex
eigenen xv
Ausgangs), funktioniert alles sehr gut: Es gibt etwa eine halbe Sekunde Verzögerung, mit der ich leben kann, und alle Videos laufen reibungslos .
Ich würde es vorziehen, diese Videos zusammen zu mosaikieren, sowohl für das Live-Ansehen als auch für die Kopie, die auf der Festplatte gespeichert wird. Wenn ich dies versuche, entweder mit einer Reihe von overlay
s oder mit hstack
+ vstack
, beginnt das Video zu stottern: Ein Feed läuft einige Sekunden lang ruhig, während die anderen still stehen, und ein anderer läuft ein paar Sekunden lang, während der erste einfriert, und so weiter. Das Video kommt immer noch in quasi-Echtzeit, daher ist es aus Sicherheitsgründen nicht furchtbar, aber das Folgen der Bewegung ist sehr schwierig.
Kann ich irgendetwas tun, um das Problem zu beheben oder zumindest das Stottern zu reduzieren? Ich würde gut mit einer niedrigeren Framerate auskommen, solange sie konstant ist.
Skript, das funktioniert:
ffmpeg \ -f lavfi -thread_queue_size 1024 -i color=s=$:c=000000 \ -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_ne \ -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_sw \ -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_se \ -f alsa -thread_queue_size 1024 -i $audio1 \ -f alsa -thread_queue_size 1024 -i $audio2 \ -filter_complex " [0:v] fifo, setpts=PTS-STARTPTS [v0]; [1:v] fifo, setpts=PTS-STARTPTS [v1]; [2:v] fifo, setpts=PTS-STARTPTS [v2]; [3:v] fifo, setpts=PTS-STARTPTS [v3]" \ -map "[v0]" -f xv - \ -map "[v1]" -f xv - \ -map "[v2]" -f xv - \ -map "[v3]" -f xv -
Skript, das nicht funktioniert:
ffmpeg \ -f lavfi -thread_queue_size 1024 -i color=s=$:c=000000 \ -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_ne \ -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_sw \ -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_se \ -f alsa -thread_queue_size 1024 -i $audio1 \ -f alsa -thread_queue_size 1024 -i $audio2 \ -filter_complex " [0:v] fifo, setpts=PTS-STARTPTS [v0]; [1:v] fifo, setpts=PTS-STARTPTS [v1]; [2:v] fifo, setpts=PTS-STARTPTS [v2]; [3:v] fifo, setpts=PTS-STARTPTS [v3]; [v0][v1] hstack [tmp1]; [v2][v3] hstack [tmp2]; [tmp1][tmp2] vstack [vout]" -map "[vout]" -f sdl2 -
(Ich verwende derzeit nur drei Videos, da ich vier CPU-Kerne habe.)
0 Antworten auf die Frage
Verwandte Probleme
-
3
Windows Media Center (Vista): Add-On oder Software zum Schneiden von TV-Aufnahmen?
-
3
Videobearbeitung mit ATI-Karten
-
1
Video-Skype zu Aspire One
-
1
VirtualDub für Linux
-
2
Wie viel Datenträgerverbrauch verwenden RAW-Videos?
-
1
Java Apps im Browser blinken / reißen beim Scrollen - warum?
-
3
Wiedergabe von Video-Rips mit Windows Media Center
-
5
Wie kann ich Internetfilme (Hulu usw.) am besten auf meinem Fernseher ansehen?
-
4
Eingebettetes Flash-Video in MS Word-Dokument (2003 oder 2007)
-
2
Auf der Suche nach einer preisgünstigen Einrichtung für die Hausüberwachung