ffmpeg - Kodiert den Eingabestrom in eine Datei mit höherer Bildrate

551
EQWorry

Nach langen Nachforschungen und Tests kann ich immer noch nicht die gewünschte Framerate der Ausgabe erreichen, wenn ich einen Eingabestrom packe und ihn in eine beschleunigte Ausgabedatei codiere.

Mein Eingabestrom (HTTP, MJPEG von einer Kamera) ist auf 1 fps eingestellt. ffmpeg sollte die Stream-Bilder packen und als x264-Video in eine Datei kodieren, die mit 25 oder mehr fps gespeichert / wiedergegeben wird, ohne dass Frames fallen gelassen oder dupliziert werden. Das beste was ich erreichen konnte ist:

ffmpeg -re -i input_stream -codec libx264 -an -r 25 output_file 

Dies gibt mir eine 25-fps-Ausgabedatei, ohne dass Frames verworfen oder kopiert wurden. Überraschenderweise funktioniert die folgende höhere -r- Einstellung nicht wie erwartet:

ffmpeg -re -i input_stream -codec libx264 -an -r 50 output_file 

Die erzeugte Datei hat 50 Bilder pro Sekunde, aber jedes Bild ist doppelt vorhanden. Die tatsächliche Wiedergabegeschwindigkeit ist daher dieselbe wie oben. Warum ist das so?

Grundsätzlich führt jeder andere -r- Wert als 25 zu ungewöhnlichen Ergebnissen (duplizierte oder ausgelassene Frames). Ich vermute, die Eingabe -re ist die Ursache, aber ich kann sie nicht durch -r 1 ersetzen und die Ausgabe-Framerate mithilfe von -r oder Setpts erfolgreich bearbeiten . Ich würde mich daher über jede Hilfe sehr freuen.

1
Teilen Sie das komplette Protokoll. Gyan vor 7 Jahren 0

0 Antworten auf die Frage