MJPEG-Aufnahme mit FFMPEG, um Zeitinformationen zu erhalten

9354
Muhammad Adeel Zahid

Ich nehme das MJPEG-Video von einer IP-Kamera auf und speichere es in einer Datei. Das Problem ist jedoch, dass die Dauer der Datei viel geringer ist als die tatsächliche Aufnahmezeit. Das Video dauert etwa 9 Sekunden für eine Aufnahme von 2 Minuten. Ich habe versucht, die Befehle der Reihe nach auszuführen

ffmpeg -f mjpeg -r 8 -i http://c-cam.uchicago.edu/mjpg/video.mjpg -vcodec mpeg4 -b 1000000 -r 8 video_file.avi 

Dann habe ich die meisten Flaggen weggelassen und so versucht

ffmpeg -f mjpeg -i http://c-cam.uchicago.edu/mjpg/video.mjpg video_file.avi 

Das Problem ist jedoch, dass die Dauer der aufgenommenen Datei 9 Sekunden beträgt, während die tatsächliche Aufnahmedauer etwa 2 Minuten beträgt. Ich habe schließlich Setpts- Filter ausprobiert, der die Zeitstempel einfügen soll. Der Befehl lautet wie folgt

ffmpeg -f mjpeg -i http://c-cam.uchicago.edu/mjpg/video.mjpg -vf "setpts=1*PTS" video_file.avi 

Aber das Ergebnis war immer noch das gleiche. Die Aufnahmezeit war weit mehr als nur die Videodauer.

2
Vermissen Sie Bilder / Frames aus dem endgültigen Video (zB ist die Datei "zu kurz für mein Bauchgefühl")? Ist es nur die "Anzeige der Präsentationszeitstempel (PTS)", die Sie ärgert? akira vor 11 Jahren 0
Ich weiß nicht genau, ob Frames fallen gelassen werden. Ich denke, das liegt daran, dass Videos von einer Internetquelle aufgenommen werden. Die eigentliche Sache, die mir Sorgen bereitet, ist, dass ich ein Video für 2 Minuten aufnehme und das Endvideo nur 9 Sekunden wiedergibt. Ich denke es hat etwas mit Framerate zu tun. Beispiel: ffmpeg setzt die Bildrate auf 10 Bilder / Sekunde und empfängt über zwei Minuten 100 Bilder, würde sie aber nur 10 Sekunden lang abspielen. Das ist mein Verständnis des Problems! Muhammad Adeel Zahid vor 11 Jahren 0

2 Antworten auf die Frage

4
Jann

Ich weiß, dass dies eine alte Frage ist, jedoch funktionierte dies als Option für ffmpeg: -use_wallclock_as_timestamps 1

Die Beantwortung alter Fragen ist völlig akzeptabel. Möchten Sie näher auf die Auswirkungen dieser Option eingehen? Die relevanten Teile der Handbuchseite können zum Beispiel enthalten sein. Ярослав Рахматуллин vor 11 Jahren 0
This forces FFMPEG (a hack really) to use the recording SYSTEM's timestamp instead of trying to compute the time of the movie depending on the number of fps it detects. FPS detection is notoriously inaccurate, for instance -- as FFMPEG freely admits when it gives this error: `Estimating duration from bitrate, this may be inaccurate`. This also enables the -t flag (duration) to be realtime as well, instead of also being dependent on the fps calculation. Jann vor 11 Jahren 2
0
Dennis Jansky

Ich hatte ein ähnliches Problem und die -reOption hat es für mich gelöst. Dies bedeutet, dass ffmpegein Frame Grabber fungieren würde.