Audio-Stream aus XVID-Dateien entfernen

3969
Kyle Brandt

Ich habe eine Reihe von Xvid-Dateien, die jeweils einen Audiostream haben, den ich nicht möchte. Wie kann ich die Audiospur entfernen, die ich nicht mit der Linux-Befehlszeile verwenden möchte?

Ich brauche nicht das ganze Skript (Schleife), nur den Befehl, den ich verwenden würde, um die einzelnen avi-Dateien einzeln zu verarbeiten (es sei denn, in cmd selbst ist eine Batch-Änderung enthalten).

Ich glaube nicht, dass sich die Datei in einem mkv-Container befindet, da mkvinfo nichts findet. Hier ist ein Teil der Ausgabe von mplayer (danke ~ quack):

[aviheader] Video stream found, -vid 0 ID_AUDIO_ID=1 [aviheader] Audio stream found, -aid 1 ID_AUDIO_ID=2 [aviheader] Audio stream found, -aid 2 VIDEO: [XVID] 512x384 12bpp 25.000 fps 1013.4 kbps (123.7 kbyte/s) 
3

3 Antworten auf die Frage

5
T. Kaltnekar

Mit ffmpeg können Sie folgendes tun

ffmpeg -i input -map 0: 0 -map 0: 1 -vcodec copy -acodec copy-Ausgabe

Das sollte einen neuen Film mit Video und erstem Audiostream machen. Um den zweiten Audiostrom zu verwenden, ändern Sie -map 0: 1 in -map 0: 2. Mit copy für -vcodec und -acodec kopieren Sie Streams ohne erneute Codierung.

Ich denke, das ist genau das, was ich will, muss überprüfen, wann die Verarbeitung abgeschlossen ist. Kennen Sie zufällig einen Befehl, der mir die Sprache einer Audiodatei sagt? ;-) Kyle Brandt vor 14 Jahren 0
@ Kyle: Vielleicht musst du es nur noch einmal abspielen und sehen. Ich denke, Matroska (mkv) -Container enthalten ein Sprachflag im Audio-Stream-Header, das jedoch nicht immer gesetzt ist. Sie sind sich nicht sicher, ob AVI-Container dasselbe bieten, und auch wenn Sie es getan haben, können Sie nicht sicher sein, ob sie richtig eingestellt sind. quack quixote vor 14 Jahren 0
Je nach Player ist bei dieser Methode entweder der Ton hackig oder das Video wird viel langsamer abgespielt ... bei vlc ist es abgehackt Kyle Brandt vor 14 Jahren 0
Das ist merkwürdig, da die Kopien -vcodec und -acodec nur die Streams kopieren sollen, ohne sie neu zu codieren. Ich habe derzeit keinen Dual-Audio-Film, um zu prüfen, was das Problem sein könnte. T. Kaltnekar vor 14 Jahren 0
3
quack quixote

Ehrlich gesagt, ich denke, Sie bevorzugen die ffmpegLösung. Aber ich dachte mir mencoder( mplayerEncoder) könnte das auch ... und das kann, aber nur als Nebeneffekt - da er auf einem Player aufgebaut ist, kann er immer nur einen Audiostrom verarbeiten. Wenn Sie den Vorgang umkehren (Hinzufügen eines zweiten Audiostreams zu einer Datei, die nur über einen verfügte), benötigen Sie ein anderes Werkzeug.

Die -aid XOption wählt den Audiostrom aus (ersetzen Sie X durch die ID-Nummer des Streams). mplayerAnscheinend zeigt die Ausgabe, die Sie zitiert haben, bereits die richtigen ID-Nummern. Versuchen Sie es mit diesen. Dies hält den ersten Audiostrom (verwenden -aid 2Sie, wenn Sie den zweiten möchten):

$ mencoder orig.avi -o new.avi -oac copy -ovc copy -aid 1 

Andere Befehlszeilen-AVI-Tools, die hilfreich sein könnten, sind:

  • avidemux(Sie können mit Skript schreiben -nogui)
  • transcode
Danke, wenn ich Probleme habe, schön, eine zweite Option zu haben. Im Moment werden alle Dateien mit ffmpeg verarbeitet (in einer Schleife). Hoffentlich habe ich den richtigen Audiostream gewählt, aber wenn nicht, kann ich es einfach nochmal machen. Kyle Brandt vor 14 Jahren 0
Ein schnelles Beispiel, das ich gemacht habe, scheint nicht abgehackt zu sein (vs ffmpeg), so dass dies das Ticket sein könnte. Kyle Brandt vor 14 Jahren 0
0
joe

Wenn Sie eine Windows-Maschine haben. Verwenden Sie virtualdubmod, wählen Sie dann streams> stream list und deaktivieren Sie den Audiostream. Fügen Sie Ihre benutzerdefinierte Audiospur hinzu. Wählen Sie video-> direct stream copy und letzte Datei-> save as avi. Sie können Ihren eigenen Audio-Editor wie Audacity erstellen.

Für Linux:

ffmpeg (hat eine Befehlszeilenoption)

Avidemux

Cinelerra

dvd :: rip

Vielen Dank für die Liste, aber ich suche ein Beispiel mit einem Befehlszeilenprogramm, wenn Sie eines wissen ... Kyle Brandt vor 14 Jahren 0
ffmpeg hat eine Befehlszeile joe vor 14 Jahren 0