Trimmen Sie ein Live-Segment mit H.264/FLV-Codierung mit ffmpeg

Ich codiere ein Video mit ffmpeg in H.264, das in einem FLV-Container gespeichert ist. Ich möchte in der Lage sein, Segmente dieses Videos herauszuschneiden, da es noch kodiert wird. Das Video enthält keinen Ton.

Ich codiere das Video wie folgt:

ffmpeg -i recording.mp4 -c libx264 output.flv

Und ich versuche, das Video zu trimmen mit:

ffmpeg -i output.flv -ss 00:00:00.000 -t 00:00:01.000 -c copy output2.mp4

Während das Video noch kodiert wird, sehe ich diesen Fehler, wenn ich versuche zu trimmen:

Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)

Auch beim Codieren mit ffprobe erhalte ich Informationen wie die folgenden:

Duration: 00:00:26.96, start: 0.080000, bitrate: 126 kb/s
  Stream #0:0: Video: h264 (High), yuv420p, 640x480, 25 fps, 25 tbr, 1k tbn, 50 tbc

Wie kann ich diese Datei kürzen, während sie noch codiert wird? Ich bin bereit, Containerformate bei Bedarf von FLV in etwas anderes zu ändern. Letztendlich muss ich in mp4 sein, aber es macht mir nichts aus, Container zu mischen, damit ich Teile herausschneiden kann, während ich noch kodiere.

Funktioniert hier. Welche ffmpeg-Version?
2.8.14. Aus den offiziellen Repos von Ubuntu 16.04
Holen Sie sich eine Binärdatei von johnvansickle.com/ffmpeg und überprüfen Sie sie.
Ich habe es gerade getan. Allerdings trimmt es jetzt ohne Fehler, aber die resultierende Datei hat eine Länge von 0 und es sind 0 Frames drin. Ich habe genau den gleichen Befehl wie oben verwendet, aber den von Ihnen verlinkten Build verwendet. Ich habe sowohl das Release als auch die Git-Builds ausprobiert. Verwenden Sie ein öffentlich verfügbares Beispielvideo, das ich irgendwo finden und selbst ausprobieren könnte?
Erhalten Sie das gleiche Verhalten, wenn Sie ein längeres Segment schneiden?
Ja, gleiches Verhalten bei einem längeren Segment

Antworten (1)

FLV beibehalten, aber mit Demuxer-Suche und -Dauer trimmen.

ffmpeg -ss 00:00:03.000 -t 00:00:01.000 -i output.flv -c copy output2.mp4

Überspringen Sie auch, -sswenn es 0zB Stream-Start ist.

Das Überspringen von -ss für den Anfang hat es für mich behoben. Es scheint, als hätte die Datei wirklich bei 0,080 begonnen. Wie würde ich das wissen, wenn ich ein Skript schreiben würde, um eine Datei zu trimmen?