2016-05-12 16 views
0

Ich habe Video-Datei in einige Stücke aufgeteilt. Geteilte und zufällige Dateipositionen aufteilen, aber Chunks sind groß genug.Parsing Split-Video mit ffmpeg

Ich muss jedes Teil mit verschiedenen Instanzen von AVFormatContext analysieren. Brocken kommen nacheinander in der richtigen Reihenfolge. Ich denke, es gibt hier zwei Möglichkeiten:

  1. Speichern und Wiederherstellen AVFormatContext Zustand;
  2. Speichern Sie den Header der Videodatei (vom ersten Chunk) und hängen Sie ihn an jeden Chunk an.

Ich versuchte beide, aber keinen Erfolg. Der erste Ansatz erfordert, zu weit über die öffentliche API von ffmpeg hinauszugehen. Mit dem zweiten Ansatz kann ich Header mit neuem Chunk nicht zusammenführen, damit ffmpeg damit umgehen kann.

Können Sie mir dabei helfen?

Vielen Dank.

Antwort

2

Es hängt vollständig vom Dateityp ab. MP4 zum Beispiel muss der Header komplett neu geschrieben werden und kann nicht einfach kopiert werden. FLV der Header kann wahrscheinlich nur kopiert werden, aber muss auf Rahmengrenze und nicht zufällig aufgeteilt werden. TS könnte dies tun, aber Sie würden einen Rahmen am Schnittpunkt vermissen.

Realistisch, die Datei muss neu zusammengesetzt werden, die Teilung richtig.

+0

Ich kann einen Teil des vorherigen Chunk für die nächste Chunk-Analyse speichern. Wir können also davon ausgehen, dass die Datei ordnungsgemäß aufgeteilt wurde. – mtomy

+0

Ich sehe Header kopieren ist keine Lösung. Denken Sie, dass es besser ist, AVFormatContext zu speichern/wiederherzustellen? – mtomy

+0

Das Speichern eines Teils des vorherigen Chunks erfolgt nicht ordnungsgemäß. Sie müssen verstehen, wie eine Datei aufgebaut ist. Verbringe ein paar Tage und schreibe einen MP4 Parser. Sie werden dann verstehen, wie Sie es richtig aufteilen. – szatmary