Hier eine kleine Übersicht für ffmpeg mit den verschiedenen Parametern.
- -i → Inputvideo
-acodec → Ausgangscodec für Audiospur
-ac → Audiokanäle
-ar → Audiosamplerate
-ab → Audiobitrate
-vcodec → Ausgangscodec für Videospur
-b → VideoBitrate
-r → Framerate Outputvideo
-s → Seitenverhältnis
-ss → 00:01:00 Die erste Minute überspringen
-t → 00:01:30 1m30s des Films bearbeiten
Zu einem bestehenden Video (film.avi) eine neue Tonspur (ton.ac3) hinzufügen.
Hierbei wird die Videospur nicht erneut encodiert, sondern nur gemuxt. (zusammengeführt)
Bei einer 6-Kanal-Tonspur gab es bei mir ein paar Probleme. Wenn die untere Fehlermeldung beim Abspielen im VLC kommen sollte, muß der Container gewechselt werden. Vielleicht gibt es noch eine andere Möglichkeit oder es wird in den kommenden ffmpeg-Versionen gefixt. Für mich ist das aber im Moment die schnellste Variante.
VLC unterstützt das Audio- oder Videoformat „undf“ nicht. Leider können Sie daran nichts ändern.
Mit dem Befehl wird eine ac3 5.1 Audiospur zu einem bestehenden avi Video mit Tonspur hinzugefügt und der Container wird von avi auf mp4 geändert.
Video nach mp4 codieren. (iPhone kompatibel)
Vorher mit ffmpeg -i ./sample.avi das aktuelle Seitenverhältnis herausfinden und merken. Ihr könnt die Pixel (624×352) benutzen oder ihr nehmt DAR 39:22. Es wird also 22 / 39 * 320 gerechnet. Das iPhone hat eine Auflösung von 960 x 640 Pixel. Als Auflösung wähle ich immer 320, 640 oder 960. Bei dieser Rechnung kommt 180,51 raus, also benutzen wir den Parameter -s 320:180 bei den anderen Auflösungen dann 640:360 bzw. 960:540.
Video nach mov codieren. (wird von Quicktime erkannt und funktioniert auch auf dem MAC)
Hier wird nur das Videomaterial umgewandelt, Ton bleibt unverändert. Für den Ton sollte man die unteren Einstellungen benutzen.
Video nach mkv codieren.
Meine Digicam eine Canon Digital IXUS 100 IS nimmt Videos im mov-Format auf. Da die Videos sehr groß sind, bringe ich sie in ein anderes Format. Erst wollte ich die Filme in avi umwandeln, aber die Auflösung war zu groß. Ich wollte aber so wenig wie möglich an den Videos rumrechnen, da ich sie später noch in einem Schnittprogramm verarbeiten will. Deshalb habe ich mich für mkv als Videocontainer mit mp3lame als Audiocodec entschieden. Hier kann ich die Auflösung und den Codec so lassen wie sie sind und habe die wenigsten Verluste. Bei dem Ton hab ich mich für mp3lame entschieden, da meine Kammera eh nur mono aufnimmt.
Eine bestimmte Audiospur extrahieren und/oder umwandeln.
Die -map Option ist nur nötig, wenn es mehrere Audiospuren in einem Videocontainer gibt. Oft ist die 0:0 für die Videospur und die anderen für die Audiofiles. Ich hatte es aber auch schon das 0:0 die Subtitel waren und es bei 0:1 mit Video weiter ging. Einfach kontrollieren.
In dem unteren Code wird die erste mp2 Audiospur einfach gespeichert oder gleich in wav bzw. in mp3 konvertiert. Der Parameter -sn steht für disable Subtitel und -vn steht für disable Video.
ffmpeg -i sample.ts -sn -vn -map 0:1 -acodec pcm_s16le -ac 2 -ab 192k sample.wav
ffmpeg -i sample.ts -sn -vn -map 0:1 -acodec libmp3lame -ab 192k sample.mp3
Wenn man nur eine Tonspur hat kann man auch folgenden Code verwenden.
Die Ausgabeformate und auch die Bitraten sollte man sich aus der ersten Info (ffmpeg -i sample.ts) entnehmen.
Audiofile in MP3 codieren
Die Ausgabe ist dann 160Kbit/44,1KH MP3.
MP3 Dateien aneinander hängen.
Mit einer der beiden Varianten die verschiedenen Audiofiles zusammenführen.
cat audio{1-3}.mp3 > audio.mp3
Anschließend mit ffmpeg den Dateiheader neu schreiben.
Audiofile für eine Elmeg Telefonanlage konvertieren.
Die original Files der Telefonanlage waren mit pcm_alaw, 8000 Hz, mono, s16, 64 kb/s codiert. Jetzt brauchen wir nur ein Audiofile ins gleiche Format bringen.
Videobearbeitung XVID-avi mit dem 2-Pass Verfahren.
Hier versuche ich einen kleinen Ablauf für die Konvertierung in ein Video im XVID-Container zu geben. Mein Ausgangsmaterial ist mit einer Dreambox 8000 aufgenommen worden. Ist aber eigentlich egal, das Ergebnis ist wichtig. 🙂
ffmpeg -i sample.ts -vn sample.audio.mp2
# Ton umrechnen
ffmpeg -i sample.audio.mp2 -acodec libmp3lame -ab 192k sample.mp3
# Die ersten 2 Schritte kann man eventuell auch zusammenfassen
ffmpeg -i sample.ts -sn -vn -acodec libmp3lame -ab 192k sample.mp3
# Video umrechnen ohne Ton 2 Durchggänge
ffmpeg -i sample.ts -y -pass 1 -f avi -vcodec libxvid -vtag XVID -aspect 16:9 -b 1200k -an sample.out.ohne.ton.avi && ffmpeg -i sample.ts -y -pass 2 -f avi -vcodec libxvid -vtag XVID -aspect 16:9 -b 1200k -an sample.out.ohne.ton.avi
# Bild und Ton wieder zusammenführen -async 50 ist für die Ton/Bildsynchronisation da.
ffmpeg -i sample.out.ohne.ton.avi -i sample.audio.mp3 -vcodec copy -acodec copy -async 50 sample.avi
Der folgende Code muß noch richtig getestet werden. Bei mir hat er mit einem kleinen Testfile ca. 3min ganz gut funktioniert. Hier wird aber nur das Videomaterial neu gerechnet, Audio bleibt wie es ist. War bei dem Test aber nicht so kritisch, da im Digitalfernsehen der Stereoton in mp2 vorliegt. Da gewinnt man nicht so viel Speicherplatz wie bei wav (DVD).
Video direkt auf dem iPhone umwandeln.
Hier bin ich noch am testen, ich hätte gern eine Einstellung die einen guten Kompromiss zwischen Geschwindigkeit und Größe darstellt.
Bei dem zweiten Code ist das Video auf ca 10% geschrumpft. (von 9,2MB auf 923KB)
erster Durchgang:
real 16m22.302s
user 13m24.637s
sys 0m0.000s
zweiter Durchgang:
real 15m27.776s
user 13m22.950s
sys 0m0.000s
Dreamboxaufnahmen in ein anderes Format umwandeln.
In diesem Beispiel ist die erste Tonspur stereo de und die dritte ac3 de.
Jetzt muß noch das Format gewählt werden und dann kann es schon los gehen.
Für ein Telefon oder ein Tablet sollten eigentlich 800×480 reichen. Wenn ich richtig gelesen habe ist das die Displayauflösung des Galaxy SII.
ffmpeg -i sample.ts -sn -vn -map 0:3 -acodec copy sample.ac3 # dritte Tonspur wählen –Stream #0.3[0x783](ger): Audio: ac3–
# Video im 2pass Verfahren in ein XVID umrechnen. Auflösung [PAR 1:1 DAR 16:9] ist 16:9
ffmpeg -i sample.ts -y -pass 1 -f avi -vcodec libxvid -vtag XVID -aspect 16:9 -r 25 -s 800:450 -b 1200k -an sample.out.ohne.ton.avi && ffmpeg -i sample.ts -y -pass 2 -f avi -vcodec libxvid -vtag XVID -aspect 16:9 -r 25 -s 800:450 -b 1200k -an sample.out.ohne.ton.avi
# Audio und Video zusammenführen. Wenn nur eine Tonspur gewünscht wird, dann einfach das -i sample.* weglassen.
ffmpeg -i sample.out.ohne.ton.avi -i sample.mp2 -i sample.ac3 -vcodec copy -acodec copy -async 50 sample.avi
Hallo!
Auf der Suche nach geeigneten Commandlinetools zum Konvertieren meiner DM8000 Aufnahmen (DVB-S und S2) bin ich auf deinen Blog gestoßen. Ich quäle mich auf einem Debian-Linuxserver mit mencoder und jetzt auf mit ffmpeg meine Aufnahmen in ein Format zu bringen, dass ich dann auf meinem Smartphone (Galaxy S2) und/oder Android-Tablet unterwegs abspielen kann.
Hättest du da ein paar Tips für mich?
Ich hab schon das Problem die richtige Audiospur mit mencoder zu identifizieren. Gibt es dafür ein tool oder gewisse Regeln?
Würde mich über eine Antwort sehr freuen!
Danke und schönes Wochenende!
Kleiner Tipp zum umrechnen, nimm mit der Box am besten einen kleines Stück Film auf, ca 10-30s und teste deine Einstellungen an diesem File.
Wenn defekte avi’s entstehen, dann schau dir mal ProjektX an. Dieses Programm hatte ich früher um meine D-Box Aufnahmen auf meinen PC zu bekommen. Dabei wurden schon verschiedene Fehler im Stream beseitigt. So oft rechne ich DVB-Aufnahmen nicht mehr um, daher fehlt mir da die Praxis. Aber das was ich bis jetzt gemacht hab, hat eigentlich immer funktioniert, auch ohne ProjektX.