Frage

Ich habe eine Website, die Menschen zum Hochladen von großen Videodateien in verschiedenen Formaten (AVI, MP4, MKV und FLV) ermöglicht. Ich brauche eine 1 Minute „Probe“ von der größeren Datei zu erzeugen, die hochgeladen wurden, und die Probe muss in dem gleichen Format, habe die gleichen Rahmenabmessungen und Bitrate wie die ursprüngliche Datei sein. Gibt es eine Möglichkeit, einfach einen Abschnitt der Datei in eine neue Datei ausschneiden? Vorzugsweise in ffmpeg (oder einem anderen Werkzeug, wenn ffmpeg unmöglich ist).

War es hilfreich?

Lösung

Zuerst sollten Sie verstehen, wie Video-Dateien tatsächlich funktionieren. Hier ist eine Reihe von Tutorials, die erläutern: Allzu Simplistic Guide to Internet Video .

Dann können Sie eine Vielzahl von Tools versuchen, die mit Schneiden aus einer Probe helfen können. Eine davon ist flvtool (wenn Sie Ihre Eingabe ist FLV) oder FFmpeg . Mit FFmpeg können Sie eine Startzeit angeben und anzuhalten, und es wird versucht, nur zu schneiden, was für Sie fragen (aber es wird den nächsten Schlüssel-Frame zu beginnen Schneiden finden müssen).

Hier ist die FFmpeg-Befehl eine Datei namens input.flv zu lesen, 15 Sekunden in das Video zu starten, und schneiden Sie dann die nächsten 60 Sekunden, aber ansonsten die gleichen Parameter halten für den Audiocode und Video-Codec, und schreiben Sie es auf eine Ausgabedatei:

ffmpeg -i input.flv -ss 15 -t 60 -acodec copy -vcodec copy output.flv

Schließlich, wenn Sie möchten, können Sie Computer-Code in C oder C ++ (mit FFmpegs libav Bibliotheken) oder Java (mit schreiben Xuggler ) zu diesem programmatisch zu tun, aber das ist ziemlich fortgeschritten für Ihren Anwendungsfall.

Andere Tipps

Wenn Sie Probleme haben, halten Auto und Video synchronisiert, wie ich war, folgendes kann helfen (auf einer anderen Website):

ffmpeg -sameq -i file.flv -ss 00:01:00 -t 00:00:30 -ac 2 -r 25 -copyts output.flv

Als Evan stellt fest, der Ansatz in der akzeptierten Antwort kann zu einem Verlust von A / V-Synchronisation zur Folge hat. Doch seine Lösung nicht richtig ist, weil -sameq entfernt wurde.

Wie bereits erwähnt unter https://trac.ffmpeg.org/wiki/Seeking der -ss Option sollte nicht nach, bevor -i kommen. Dieses Fest des Problems für mich.

Als nächste Option ist -fs Schalter zu verwenden. Beispiel:

ff -i ip.mkv -fs 500M -c copy ~/Movies/reservoir/carbohydrates.mkv

Extrahieren 500 Megabyte (500 × 1000 × 1000 Bytes + ‚Muxen Overhead‘) auf ausgewählte Quelle. -basierte auf Dateigröße, wie Sie sagen können

Eine Liebe. Und Respekt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top