Wie entferne ich einen Track aus der Videodatei mit ffmpeg?

8

Wie wird nur eine Spur (nicht alle) aus dem Videodatei-Container (.vob oder .mkv) mit ffmpeg entfernt?

Ich weiß, dass ich einfach Video ( -c:v copy -an ) und spezifische Audiospur vom Container in zwei getrennte Dateien kopieren und dann verbinden kann.

Aber gibt es einen leichteren Weg? Kann ich bestimmte Tonspuren einfach aus dem Container entfernen? ffmpeg Befehl?

    
user25 02.07.2016, 15:28
quelle

2 Antworten

15

Verwenden Sie negative Zuordnung , um bestimmte Datenströme auszuschließen:

%Vor%

In diesem Beispiel wird alles außer dem zweiten Audiostream abgebildet.

    
LordNeckbeard 02.07.2016, 16:23
quelle
2

Sie suchen -map .

Ich habe geändert, um avconv zu verwenden, aber es sollte ungefähr dasselbe sein.

Nehmen wir an, Sie haben eine Datei namens "input.vob" mit einem Video und zwei Audiospuren; und du willst "output.vob" mit dem Video und dem letzten Audio haben.

Sie würden tun:

%Vor%

Sie sollten das bemerken:

  1. Ich habe -map 0:1 nicht kopiert
  2. Ich musste -an nicht machen, weil es Audiospuren gibt. Wenn jedoch keine Audiospuren vorhanden sind, müssen Sie möglicherweise ein solches Attribut verwenden.
  3. Manchmal sind die Streams nicht wie beschrieben nummeriert, zum Beispiel kann Audio vor Video kommen.
  4. Wenn dort Untertitel-Streams vorhanden sind, müssen Sie herausfinden, wie Sie mit ihnen umgehen.

Sie können nicht an Dateien "an Ort und Stelle" arbeiten, Sie müssen in einer anderen Datei speichern.

P.S. Möglicherweise möchten Sie diese Fragen nächstes Mal auf video.stackexchange.com stellen.

    
v010dya 02.07.2016 16:12
quelle

Tags und Links