ffmpeg
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| ffmpeg [2025-09-04 19:30:32] – [Lautstärke verändern] manfred | ffmpeg [2025-09-04 19:33:13] (aktuell) – [Lautstärke verändern] manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== FFmpeg ====== | ||
| + | |||
| + | Von **[[https:// | ||
| + | |||
| + | * __probier es einfach mal aus:__ | ||
| + | * **ASP@L5:** '' | ||
| + | * **ASP@L4:** '' | ||
| + | |||
| + | Diese Optionen haben folgende Bedeutung: | ||
| + | | ||
| + | -benchmark | ||
| + | | ||
| + | -probesize 9223372036854M -analyzeduration 9223372036854M -> durchsucht den GANZEN Film, sonst werden beispielsweise Untertitelspuren nicht gefunden, die erst sehr spät im Film einsetzen (hier wurden die größtmöglichen Werte gewählt, um auf jeden Fall absolut jeden Film komplett zu durchsuchen) | ||
| + | | ||
| + | -fflags +genpts+igndts | ||
| + | |||
| + | FFmpeg 4.1.3 (Sept. 2019): | ||
| + | opus in MP4 support is experimental, | ||
| + | Could not write header for output file #0 (incorrect codec parameters ?): Experimental feature | ||
| + | Error initializing output stream 0:1 -- | ||
| + | |||
| + | * // | ||
| + | * // | ||
| + | |||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * [[https:// | ||
| + | * __[[:: | ||
| + | * __[[:: | ||
| + | * **[[:: | ||
| + | * [[https:// | ||
| + | * mögliche Voreinstellungen ('' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * mögliche Profile ('' | ||
| + | * __//Die Option '' | ||
| + | * mögliche Level ('' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **[[:: | ||
| + | * mögliche Voreinstellungen ('' | ||
| + | * alles was hinter der Option ''" | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **[[:: | ||
| + | - **'' | ||
| + | - **'' | ||
| + | - '' | ||
| + | - '' | ||
| + | * **'' | ||
| + | * **[[:: | ||
| + | - **'' | ||
| + | - **'' | ||
| + | * **'' | ||
| + | - **'' | ||
| + | * **'' | ||
| + | - **'' | ||
| + | * **'' | ||
| + | - **'' | ||
| + | |||
| + | **__In einem nicht repräsentativen FullHD-Transkodier-Test wurden bei gleicher Qualität (gleiche Optionen: '' | ||
| + | |||
| + | [[http:// | ||
| + | * ffmpeg/ | ||
| + | * ffserver/ | ||
| + | * ffplay/ | ||
| + | * [[ffprobe]]/ | ||
| + | * libavcodec enthält alle ffmpeg Audio- und Video-Encoder bzw. -Decoder. Die meisten Codecs wurden von Grund auf neu geschrieben, | ||
| + | * libavformat enthält alle Container-Parser und -Ersteller für alle herkömmlichen Audio- und Video-Containerformate (z. B. AVI, MKV, OGG, Media etc.) | ||
| + | |||
| + | Ubuntu verwendet in der Version 12.04 die FF- und die AV-Programme, | ||
| + | |||
| + | |||
| + | ===== unterstützte Codecs ===== | ||
| + | |||
| + | unterstützte Video-Codecs anzeigen: | ||
| + | > ffmpeg -encoders | ||
| + | ... | ||
| + | | ||
| + | ... | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | ... | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | ... | ||
| + | |||
| + | die möglichen Optionen zu einem Codec anzeigen lassen: | ||
| + | > ffmpeg -h encoder=libx264 | ||
| + | Encoder libx264 [libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10]: | ||
| + | General capabilities: | ||
| + | Threading capabilities: | ||
| + | Supported pixel formats: yuv420p yuvj420p yuv422p yuvj422p yuv444p yuvj444p nv12 nv16 nv21 yuv420p10le yuv422p10le yuv444p10le nv20le gray gray10le | ||
| + | libx264 AVOptions: | ||
| + | -preset | ||
| + | -tune < | ||
| + | -profile | ||
| + | -fastfirstpass | ||
| + | -level | ||
| + | -passlogfile | ||
| + | -wpredp | ||
| + | -a53cc | ||
| + | -x264opts | ||
| + | -crf < | ||
| + | ... | ||
| + | | ||
| + | > ffmpeg -h encoder=libx265 | ||
| + | | ||
| + | > ffmpeg -h encoder=libvpx-vp9 | ||
| + | | ||
| + | > ffmpeg -h encoder=libaom-av1 | ||
| + | > aomenc --help | ||
| + | |||
| + | |||
| + | ===== Beschriftung von Tonspur und Untertitel ===== | ||
| + | |||
| + | In diesem Beispiel hat der Film drei Tonspuren (deutsch, englisch und französisch) und ein Untertitelspur (deutsch). | ||
| + | |||
| + | die drei Tonspuren werden so beschriftet: | ||
| + | # -metadata: | ||
| + | # -metadata: | ||
| + | # -metadata: | ||
| + | |||
| + | die Untertitelspur wird so beschriftet: | ||
| + | # -metadata: | ||
| + | |||
| + | so könnte beispielsweise ein DVD-Rip (Original: 16/9 mit 720x576 Bildpunkten) aussehen, welcher in quadratische Bildpunkte (1024x576) ähnlicher Bildpunkteanzahl (858x432) umgerechnet wird: | ||
| + | > ffmpeg | ||
| + | |||
| + | |||
| + | ===== FFmpeg Metadata (Tag) ===== | ||
| + | |||
| + | Mit [[::FFmpeg Metadata (Tag)]] in eine Multimediadatei einbinden. | ||
| + | |||
| + | |||
| + | ===== Bildformat ändern ===== | ||
| + | |||
| + | das generiert ein 16/9-Video mit der Auflösung von 1024:576: | ||
| + | > ffmpeg -i Film.mkv | ||
| + | |||
| + | oder wenn der vorliegende Film im Zeilensprungformat (interlace) vorliegt und der MP4-Film im Vollbildmodus (progressiv) gewünscht wird: | ||
| + | > ffmpeg -i Film.mkv | ||
| + | |||
| + | siehe auch: [[mp4#MP4 verlustbehaftet aus einem MKV erstellen]] | ||
| + | |||
| + | |||
| + | ===== spezielle FFmpeg-Optionen ===== | ||
| + | |||
| + | Zum " | ||
| + | |||
| + | | ||
| + | -analyzeduration | ||
| + | -probesize | ||
| + | -formatprobesize | ||
| + | -fpsprobesize | ||
| + | |||
| + | $ ffmpeg | ||
| + | |||
| + | |||
| + | ==== pad ==== | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | Fügen Sie dem Eingabevideo Paddings mit der Farbe „Violett“ hinzu. Die Größe des Ausgabevideos beträgt 640x480, und die obere linke Ecke des Eingabevideos wird in Spalte 0 (von links), Zeile 40 (von oben) platziert: | ||
| + | pad=640: | ||
| + | |||
| + | Das obige Beispiel entspricht dem folgenden Befehl: | ||
| + | pad=width=640: | ||
| + | |||
| + | Füllen Sie die Eingabe auf, um eine Ausgabe mit um 3/2 vergrößerten Abmessungen zu erhalten, und platzieren Sie das Eingabevideo in der Mitte des aufgefüllten Bereichs: | ||
| + | pad=" | ||
| + | |||
| + | Füllen Sie die Eingabe auf, um eine quadratische Ausgabe mit einer Größe zu erhalten, die dem Maximalwert zwischen Eingabebreite und -höhe entspricht, und platzieren Sie das Eingabevideo in der Mitte des aufgefüllten Bereichs: | ||
| + | pad=" | ||
| + | |||
| + | Füllen Sie den Eingang auf, um ein endgültiges w/ | ||
| + | pad=" | ||
| + | pad=' | ||
| + | |||
| + | Im Fall von anamorphotischem Video ist es notwendig, um das Seitenverhältnis der Ausgabeanzeige korrekt einzustellen, | ||
| + | (ih * X / ih) * sar = output_dar | ||
| + | X = output_dar / sar | ||
| + | |||
| + | Daher muss das vorherige Beispiel modifiziert werden: | ||
| + | pad=" | ||
| + | |||
| + | Verdoppeln Sie die Ausgabegröße und platzieren Sie das Eingabevideo in der unteren rechten Ecke des aufgefüllten Ausgabebereichs: | ||
| + | pad=" | ||
| + | |||
| + | |||
| + | === Lautstärke verändern === | ||
| + | |||
| + | <code bash> | ||
| + | # ohne Lautstärkeanpassung | ||
| + | ffmpeg -i input.mkv -map 0:a:0 -c:a:0 libopus -b:a:0 128k -vbr:a:0 on -mapping_family: | ||
| + | |||
| + | # mit Lautstärkeverdopplung | ||
| + | ffmpeg -i input.mkv -map 0:a:0 -c:a:0 libopus -b:a:0 128k -vbr:a:0 on -mapping_family: | ||
| + | |||
| + | # Nur um 6dB anheben (empfohlen für erste Versuche) | ||
| + | -filter:a:0 " | ||
| + | |||
| + | # Lautstärke verdreifachen | ||
| + | -filter:a:0 " | ||
| + | |||
| + | # Mit automatischer Normalisierung (verhindert Übersteuerung) | ||
| + | -filter:a:0 " | ||
| + | |||
| + | Die wichtigsten Parameter für Lautstärke-Anpassung: | ||
| + | volume=2.0 | ||
| + | volume=0.5 | ||
| + | volume=10dB | ||
| + | volume=-5dB | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Filme in ein HTML5-kompatibles MP4-Format umrechnen ===== | ||
| + | |||
| + | > ffmpeg -nostdin -fflags +genpts -i film.avi -c:v libx264 -crf 20 -c:a libfaac -b:a 160k -f mp4 -y film.mp4 | ||
| + | |||
| + | zum Beispiel (ohne änderung des Bildformates): | ||
| + | > ffmpeg -i Jack_Reacher_-_720x576.avi -map 0:v -c:v libx264 -crf 20 -keyint_min 2-8 -map 0:a:0 -c:a libfaac -b:a 160k -f mp4 -y Jack_Reacher_-_originalformat.mp4 | ||
| + | |||
| + | oder so, Bildformat wird auf 4/3 mit quadratischen Pixeln umgewandelt: | ||
| + | > ffmpeg -i Jack_Reacher_-_720x576.avi -map 0:v -c:v libx264 -crf 20 -vf scale=736x552, | ||
| + | |||
| + | oder so, Bildformat wird auf 16/9 mit quadratischen Pixeln umgewandelt: | ||
| + | > ffmpeg -i Jack_Reacher_-_720x576.avi -map 0:v -c:v libx264 -crf 20 -vf scale=864x486, | ||
| + | |||
| + | oder einfach mit Skript (siehe: [[https:// | ||
| + | > / | ||
| + | > / | ||
| + | |||
| + | |||
| + | ==== Bitrate abschätzen an Hand von CRF ==== | ||
| + | |||
| + | Diese Beispielreihe wurde an Hand von einem Ausschnitt aus //Thor 3 - Tag der Entscheidung// | ||
| + | - '' | ||
| + | - '' | ||
| + | |||
| + | crf 15 ~ 8350 kb/s | ||
| + | crf 16 ~ 7250 kb/s | ||
| + | crf 17 ~ 6290 kb/s | ||
| + | crf 18 ~ 5460 kb/s | ||
| + | crf 19 ~ 4740 kb/s | ||
| + | crf 20 ~ 4130 kb/s | ||
| + | crf 21 ~ 3590 kb/s | ||
| + | crf 22 ~ 3130 kb/s | ||
| + | crf 23 ~ 2720 kb/s | ||
| + | crf 24 ~ 2370 kb/s | ||
| + | crf 25 ~ 2070 kb/s | ||
| + | crf 26 ~ 1810 kb/s | ||
| + | crf 27 ~ 1590 kb/s | ||
| + | crf 28 ~ 1400 kb/s | ||
| + | crf 29 ~ 1240 kb/s | ||
| + | crf 30 ~ 1100 kb/s | ||
| + | crf 31 ~ 980 kb/s | ||
| + | crf 32 ~ 870 kb/s | ||
| + | crf 33 ~ 780 kb/s | ||
| + | crf 34 ~ 700 kb/s | ||
| + | crf 35 ~ 630 kb/s | ||
| + | |||
| + | '' | ||
| + | Es werden für '' | ||
| + | |||
| + | |||
| + | ===== Kapitel, Menüs oder leere Untertitelspuren entfernen/ | ||
| + | |||
| + | Mit '' | ||
| + | |||
| + | Beispiel: | ||
| + | > ffmpeg -i Venom_-_Let_There_Be_Carnage.en.mp4 -itsoffset -0.75 -i Venom_-_Let_There_Be_Carnage.de.mp4 -i Venom_-_Let_There_Be_Carnage.en.vtt -itsoffset 0.75 -i Venom_-_Let_There_Be_Carnage.de.vtt -c:v copy -c:a copy -c:s mov_text -map 0:v:0 -map 0:a:0 -map 1:a:0 -map 2:s:0 -map 3:s:0 -metadata: | ||
| + | |||
| + | |||
| + | ===== Kompilieren / Compile ===== | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | <code bash ~/ | ||
| + | # | ||
| + | |||
| + | set -o errexit | ||
| + | set -o nounset | ||
| + | set -o pipefail | ||
| + | shopt -s inherit_errexit | ||
| + | |||
| + | if test -z " | ||
| + | then | ||
| + | echo "You need to set the FFMPEG_VERSION environment variable (see https:// | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | FFMPEG_VERSION=" | ||
| + | |||
| + | sudo apt-get update -qq | ||
| + | sudo apt-get -qq install \ | ||
| + | autoconf \ | ||
| + | automake \ | ||
| + | build-essential \ | ||
| + | cmake \ | ||
| + | git-core \ | ||
| + | libass-dev \ | ||
| + | libfreetype6-dev \ | ||
| + | libgnutls28-dev \ | ||
| + | libmp3lame-dev \ | ||
| + | libsdl2-dev \ | ||
| + | libtool \ | ||
| + | libva-dev \ | ||
| + | libvdpau-dev \ | ||
| + | libvorbis-dev \ | ||
| + | libxcb1-dev \ | ||
| + | libxcb-shm0-dev \ | ||
| + | libxcb-xfixes0-dev \ | ||
| + | meson \ | ||
| + | ninja-build \ | ||
| + | pkg-config \ | ||
| + | texinfo \ | ||
| + | wget \ | ||
| + | yasm \ | ||
| + | zlib1g-dev | ||
| + | sudo apt-get -qq install libunistring-dev libaom-dev libdav1d-dev | ||
| + | sudo apt-get -qq install nasm | ||
| + | sudo apt-get -qq install libx264-dev | ||
| + | sudo apt-get -qq install libx265-dev libnuma-dev | ||
| + | sudo apt-get -qq install libvpx-dev | ||
| + | sudo apt-get -qq install libfdk-aac-dev | ||
| + | sudo apt-get -qq install libopus-dev | ||
| + | |||
| + | mkdir -p ~/ | ||
| + | |||
| + | # libaom | ||
| + | cd ~/ | ||
| + | git -C aom pull --prune > /dev/null 2>&1 || git clone https:// | ||
| + | git -C aom switch --detach $(git -C aom describe --tag --abbrev=0) && \ | ||
| + | mkdir -p aom_build && \ | ||
| + | cd aom_build && \ | ||
| + | PATH=" | ||
| + | PATH=" | ||
| + | make -j$(nproc) install | ||
| + | |||
| + | # libsvtav1 | ||
| + | cd ~/ | ||
| + | git -C svt-av1 pull --prune > /dev/null 2>&1 || git clone https:// | ||
| + | git -C svt-av1 switch --detach $(git -C svt-av1 describe --tag --abbrev=0) && \ | ||
| + | mkdir -p svt-av1_build && \ | ||
| + | cd svt-av1_build && \ | ||
| + | PATH=" | ||
| + | PATH=" | ||
| + | make -j$(nproc) install | ||
| + | |||
| + | # libvmaf | ||
| + | cd ~/ | ||
| + | git -C vmaf pull --prune > /dev/null 2>&1 || git clone https:// | ||
| + | git -C vmaf switch --detach $(git -C vmaf describe --tag --abbrev=0) && \ | ||
| + | mkdir -p vmaf_build && \ | ||
| + | cd vmaf_build && \ | ||
| + | meson setup -Denable_tests=false -Denable_docs=false --buildtype=release --default-library=static ../ | ||
| + | ninja -j$(nproc) && \ | ||
| + | ninja -j$(nproc) install | ||
| + | |||
| + | # ffmpeg | ||
| + | FFMPEG_VERSION_STRING=" | ||
| + | cd ~/ | ||
| + | wget -O ${FFMPEG_VERSION_STRING}.tar.gz https:// | ||
| + | tar xvf ${FFMPEG_VERSION_STRING}.tar.gz && \ | ||
| + | cd ${FFMPEG_VERSION_STRING} && \ | ||
| + | PATH=" | ||
| + | --prefix=" | ||
| + | --pkg-config-flags=" | ||
| + | --extra-cflags=" | ||
| + | --extra-ldflags=" | ||
| + | --extra-libs=" | ||
| + | --ld=" | ||
| + | --bindir=" | ||
| + | --enable-gpl \ | ||
| + | --enable-gnutls \ | ||
| + | --enable-libaom \ | ||
| + | --enable-libass \ | ||
| + | --enable-libdav1d \ | ||
| + | --enable-libfdk-aac \ | ||
| + | --enable-libfreetype \ | ||
| + | --enable-libmp3lame \ | ||
| + | --enable-libopus \ | ||
| + | --enable-libsvtav1 \ | ||
| + | --enable-libvmaf \ | ||
| + | --enable-libvorbis \ | ||
| + | --enable-libvpx \ | ||
| + | --enable-libx264 \ | ||
| + | --enable-libx265 \ | ||
| + | --enable-nonfree && \ | ||
| + | PATH=" | ||
| + | make -j$(nproc) install && \ | ||
| + | hash -r | ||
| + | |||
| + | . ~/.profile | ||
| + | |||
| + | </ | ||
| + | |||
| + | ~/ | ||
| + | |||
| + | |||
| + | ===== HDR10 ===== | ||
| + | |||
| + | > mediainfo Film_HDR10.mp4 | ||
| + | ... | ||
| + | Color primaries | ||
| + | Transfer characteristics | ||
| + | Matrix coefficients | ||
| + | ... | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | * Technische Details | ||
| + | * Auflösung | ||
| + | * Empfehlung 2020 definiert zwei Auflösungen, | ||
| + | * Diese Auflösungen haben ein Seitenverhältnis von 16:9 und nutzen quadratische Bildpunkte. | ||
| + | * Bildfrequenz | ||
| + | * Empfehlung 2020 spezifiziert die folgenden Bildfrequenzen: | ||
| + | * 120p | ||
| + | * 119,88p | ||
| + | * 100p | ||
| + | * 60p | ||
| + | * 59,94p | ||
| + | * 50p | ||
| + | * 30p | ||
| + | * 29,97p | ||
| + | * 25p | ||
| + | * 24p | ||
| + | * 23,976p | ||
| + | * Nur Vollbildverfahren sind erlaubt. | ||
| + | * Digitale Darstellung | ||
| + | * Empfehlung 2020 definiert eine Farbtiefe von entweder 10 oder 12 Bits pro Abtastwert. | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | > ffmpeg -i Film_HDR10.mp4 ... -vf zscale=t=linear: | ||
| + | > ffmpeg -i Film_HDR10.mp4 ... -vf zscale=t=linear: | ||
| + | > ffmpeg -i Film_HDR10.mp4 ... -vf zscale=t=linear, | ||
| + | |||
| + | |||
| + | ===== Film drehen ===== | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | Video um 90 Grad nach rechts drehen: | ||
| + | ffmpeg -i input_falsch.mp4 -vf " | ||
| + | |||
| + | Video um 90 Grad nach links drehen: | ||
| + | ffmpeg -i input_falsch.mp4 -vf " | ||
| + | |||
| + | Video um 180 Grad drehen: | ||
| + | ffmpeg -i input_falsch.mp4 -vf " | ||
| + | |||
| + | |||
| + | ===== Daumenkino mit FFmpeg ===== | ||
| + | |||
| + | * [[https:// | ||
| + | aus einem einzigen Bild ('' | ||
| + | > ffmpeg -loop 1 -i Bild.png -t 3600 -map 0:v -c:v libsvtav1 -crf 42 -preset 5 -svtav1-params enable-overlays=1: | ||
| + | |||
| + | verschiedene Beispiele: | ||
| + | ffmpeg -framerate 1/5 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4 | ||
| + | ffmpeg -framerate 1/5 -start_number 126 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4 | ||
| + | ffmpeg -framerate 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4 | ||
| + | ffmpeg -framerate 1/5 -i img%03d.png -c:v libx264 -vf " | ||
| + | ffmpeg -framerate 1 -pattern_type glob -i ' | ||
| + | ffmpeg -framerate 1 -pattern_type glob -i ' | ||
| + | |||
| + | In diesem Beispiel werden alle Bilder (*.png) sortiert, nacheinander für jeweils 15 Sekunden, zu einem Film (out.mp4) im AVC-Format mit 25 Bilder pro Sekunde umgewandelt: | ||
| + | ffmpeg -c:v libx264 -r 25 -pattern_type glob -i ' | ||
| + | |||
| + | Wenn man aus diesen Dateien | ||
| + | B00.png | ||
| + | B01.png | ||
| + | B02.png | ||
| + | B03.png | ||
| + | B04.png | ||
| + | B05.png | ||
| + | B06.png | ||
| + | B07.png | ||
| + | B08.png | ||
| + | B09.png | ||
| + | B10.png | ||
| + | B11.png | ||
| + | B12.png | ||
| + | einen Daumenkino-Film (mit 2 Bildern pro Sekunde) machen will, | ||
| + | dann geht das so: | ||
| + | ffmpeg -framerate 2 -pattern_type glob -i ' | ||
| + | |||
| + | Die ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | |||
| + | |||
| + | ==== Bild mit Tonspur ==== | ||
| + | |||
| + | Wenn man ein Bild mit einer Tonspur aus einem Video untermalen will (ein sehr einfaches Beispiel), der neue Film wird im DivX-Format erstellt: | ||
| + | <file bash Film_avi.sh> | ||
| + | ffmpeg \ | ||
| + | -i Film_mit_Tonspur.mp4 \ | ||
| + | -loop 1 \ | ||
| + | -i Bild.png \ | ||
| + | -map 1:v \ | ||
| + | -c:v mpeg4 \ | ||
| + | -b:v 3072k \ | ||
| + | -profile:v 15 \ | ||
| + | -level 4 \ | ||
| + | -vtag DX50 \ | ||
| + | -g 300 \ | ||
| + | -map 0:a:0 \ | ||
| + | -c:a ac3 \ | ||
| + | -f avi \ | ||
| + | -y Neuer_Film.avi | ||
| + | </ | ||
| + | |||
| + | der neue Film hat das Format '' | ||
| + | <file bash Film_mp4.sh> | ||
| + | ffmpeg \ | ||
| + | -benchmark \ | ||
| + | -probesize 9223372036854M \ | ||
| + | -analyzeduration 9223372036854M \ | ||
| + | -fflags +genpts+igndts \ | ||
| + | -i Film_mit_Tonspur.mp4 \ | ||
| + | -loop 1 \ | ||
| + | -i Bild.png \ | ||
| + | -map 1:v \ | ||
| + | -c:v libx264 \ | ||
| + | -crf 26 \ | ||
| + | -b:v 0 \ | ||
| + | -preset slower \ | ||
| + | -tune film \ | ||
| + | -x264opts bluray-compat=1: | ||
| + | -vf pad=' | ||
| + | -g 300 \ | ||
| + | -afterburner 1 \ | ||
| + | -map 0:a:0 \ | ||
| + | -c:a:0 libfdk_aac \ | ||
| + | -b:a:0 140k \ | ||
| + | -metadata: | ||
| + | -disposition: | ||
| + | -sn \ | ||
| + | -ss 9.2 \ | ||
| + | -to 1633.2 \ | ||
| + | -metadata title=" | ||
| + | -metadata description=' | ||
| + | -movflags faststart \ | ||
| + | -f mp4 \ | ||
| + | -y Neuer_Film.mp4 | ||
| + | </ | ||
| + | |||
| + | der neue Film hat das Format '' | ||
| + | <file bash Film_webm.sh> | ||
| + | ffmpeg | ||
| + | -benchmark \ | ||
| + | -probesize 9223372036854M \ | ||
| + | -analyzeduration 9223372036854M \ | ||
| + | -fflags +genpts+igndts \ | ||
| + | -i Film_mit_Tonspur.mp4 \ | ||
| + | -loop 1 \ | ||
| + | -i Bild.png \ | ||
| + | -map 1:v \ | ||
| + | -c:v libsvtav1 \ | ||
| + | -crf 42 \ | ||
| + | -preset 5 \ | ||
| + | -svtav1-params enable-overlays=1: | ||
| + | -vf pad=' | ||
| + | -compression_level 10 \ | ||
| + | -map 0:a:0 \ | ||
| + | -c:a:0 libopus \ | ||
| + | -b:a:0 128k \ | ||
| + | -vbr:a:0 on \ | ||
| + | -mapping_family: | ||
| + | -filter:a:0 aformat=channel_layouts=' | ||
| + | -metadata: | ||
| + | -disposition: | ||
| + | -sn \ | ||
| + | -ss 9.2 \ | ||
| + | -to 1633.2 \ | ||
| + | -metadata title=" | ||
| + | -metadata description=' | ||
| + | -f webm \ | ||
| + | -y Neuer_Film.webm | ||
| + | </ | ||
| + | |||
| + | Die Tonspur aus dem Film, soll von Sekunde '' | ||
| + | |||
| + | |||
| + | ===== Film in Einzelbilder zerlegen ===== | ||
| + | |||
| + | ffmpeg -i film.mp4 -q:v 2 %05d.jpg | ||
| + | | ||
| + | ls -lha | ||
| + | drwxrwxr-x | ||
| + | drwxrwxrwt 20 fritz fritz 12K Dez 23 17:23 .. | ||
| + | -rw-rw-r-- | ||
| + | -rw-rw-r-- | ||
| + | -rw-rw-r-- | ||
| + | -rw-rw-r-- | ||
| + | ... | ||
| + | |||
| + | |||
| + | ===== animiertes GIF mit FFmpeg erzeugen ===== | ||
| + | |||
| + | Filmausschnitt '' | ||
| + | > ffmpeg -i Film.mp4 -ss 4608.9 -t 5.2 -y Filmausschnitt.gif | ||
| + | |||
| + | Filmausschnitt mit schwarzen Balken auf '' | ||
| + | > ffmpeg -i Film.mp4 -vf pad=' | ||
| + | |||
| + | Filmausschnitt mit schwarzen Balken auf '' | ||
| + | > ffmpeg -i Film.mp4 -vf pad=' | ||
| + | |||
| + | |||
| + | ===== spezielle Beispiele ===== | ||
| + | |||
| + | |||
| + | ==== Target ==== | ||
| + | |||
| + | " | ||
| + | > ffmpeg -i file.avi -target vcd / | ||
| + | Could not determine norm (PAL/ | ||
| + | Please prefix target with " | ||
| + | or set a framerate with "-r xxx". | ||
| + | | ||
| + | > ffmpeg -i file.vob -target pal-vcd / | ||
| + | |||
| + | > ffmpeg -i file.vob -target pal-dv50 / | ||
| + | |||
| + | |||
| + | ==== WAVE in AC3 (a52) umwandeln ==== | ||
| + | |||
| + | Wenn sich mehr als zwei Spuren in der Datei befinden, dann ist AC3 der kompatibelste Codec für einen Film: | ||
| + | > ffmpeg -i Film_Tonspur.wav -codec:a ac3 Film_Tonspur.ac3 | ||
| + | |||
| + | |||
| + | ==== eine beliebige Tonspur in WAVE umwandeln ==== | ||
| + | |||
| + | Meistens wird die Umwandlung genau andersherum gemacht. | ||
| + | Aber manchmal möchte man eine MP3-Datei auch auf eine klassische Musik-CD brennen, | ||
| + | dann braucht man meistens eine WAVE oder eine AU-Datei. | ||
| + | > ffmpeg -i Beispiel.mp3 -vn -acodec pcm_s16le -ar 44100 -ac 2 -y Beispiel.wav | ||
| + | > ffmpeg -i Beispiel.avi -vn -acodec pcm_s16le -ar 44100 -ac 2 -y Beispiel.wav | ||
| + | |||
| + | Auf eine Musik-CD brennt man diese WAVE-Dateien dann zum Beispiel unter FreeBSD so: | ||
| + | * für IDE-Brenner (P-ATA) => [[BurnCD]] | ||
| + | * für SCSI- und S-ATA-Brenner => [[CDRecord]] | ||
| + | |||
| + | |||
| + | === Audio-transkodier-Skripte === | ||
| + | |||
| + | |||
| + | == eine beliebige Audio-Spur ins Wave-Format umwandeln == | ||
| + | |||
| + | < | ||
| + | #!/bin/bash | ||
| + | |||
| + | # | ||
| + | # mit diesem Skript kann man die Tonspur aus einem Film im CD-kompatibelen | ||
| + | # Wave-Format extrahieren; | ||
| + | # oder jede Audio-Datei in das CD-kompatibelen Wave-Format umwandeln; | ||
| + | # | ||
| + | # die hiermit erzeugten Wave-Dateien können auf CD gebrannt werden | ||
| + | # | ||
| + | |||
| + | if [ -r " | ||
| + | ffmpeg -i ${1} -vn -acodec pcm_s16le -ar 44100 -ac 2 ${1}.wav | ||
| + | ls -lha ${1}.wav | ||
| + | else | ||
| + | echo "${0} Film.mkv" | ||
| + | echo "${0} Audio-Datei" | ||
| + | exit 1 | ||
| + | fi | ||
| + | </ | ||
| + | |||
| + | |||
| + | == eine beliebige Audio-Spur ins MP3-Format umwandeln == | ||
| + | |||
| + | < | ||
| + | #!/bin/bash | ||
| + | |||
| + | # | ||
| + | # mit diesem Skript kann eine beliebige Audio-Datei | ||
| + | # in eine MP3-Datei umgewandelt werden | ||
| + | # | ||
| + | |||
| + | if [ -r " | ||
| + | PROGRAMM=" | ||
| + | if [ -z " | ||
| + | PROGRAMM=" | ||
| + | fi | ||
| + | |||
| + | # | ||
| + | ${PROGRAMM} -i ${1} -vn -c:a libmp3lame -aq 2 -ac 2 ${1}.mp3 | ||
| + | ls -lha ${1}.mp3 | ||
| + | else | ||
| + | echo "${0} Film.mkv" | ||
| + | echo "${0} Audio-Datei" | ||
| + | exit 1 | ||
| + | fi | ||
| + | </ | ||
| + | |||
| + | |||
| + | == eine beliebige Audio-Spur ins FLAC-Format umwandeln == | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * '' | ||
| + | |||
| + | > ffmpeg -h encoder=flac | ||
| + | Encoder flac [FLAC (Free Lossless Audio Codec)]: | ||
| + | General capabilities: | ||
| + | Threading capabilities: | ||
| + | Supported sample formats: s16 s32 | ||
| + | FLAC encoder AVOptions: | ||
| + | -lpc_coeff_precision < | ||
| + | -lpc_type | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | -lpc_passes | ||
| + | -min_partition_order < | ||
| + | -max_partition_order < | ||
| + | -prediction_order_method < | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | -ch_mode | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | -exact_rice_parameters < | ||
| + | -multi_dim_quant | ||
| + | -min_prediction_order < | ||
| + | -max_prediction_order < | ||
| + | |||
| + | __Beispiel 1 (// | ||
| + | > ffmpeg -i Film.mkv -vn -c:a flac Audio.flac | ||
| + | |||
| + | __Beispiel 2 (// | ||
| + | > ffmpeg -i Film.mkv -vn -c:a flac -sample_fmt s32 -ar 48000 -y Audio.flac | ||
| + | |||
| + | __Beispiel 3 (//schnell + größere Datei//):__ | ||
| + | > ffmpeg -i Film.mkv -vn -c:a flac -sample_fmt s32 -ar 48000 -compression_level 0 -y Audio.flac | ||
| + | |||
| + | __Beispiel 4 (//langsam + kleinere Datei//):__ | ||
| + | > ffmpeg -i Film.mkv -vn -c:a flac -sample_fmt s32 -ar 48000 -compression_level 12 -y Audio.flac | ||
| + | |||
| + | |||
| + | ==== 3gp erzeugen ==== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | |||
| + | siehe auch: [[mp4#mp4 verlustbehaftet aus einem MKV erstellen]] | ||
| + | |||
| + | Einfachste Möglichkeit, | ||
| + | allerdings sind in diesem 3GP-Film die Kreise nur dann rund, wenn das Quell-Format " | ||
| + | (**192k** - normale Qualitaet bei **15**FPS): | ||
| + | '' | ||
| + | '' | ||
| + | '' | ||
| + | |||
| + | __Damit die Kreise in den 3GP-Filmen immer rund sind,\\ | ||
| + | muss man das Quellformat richtig auf das Zielformat umrechnen!__ | ||
| + | |||
| + | **ACHTUNG!**\\ | ||
| + | //Einige Geräte, wie z.B. die Handy-Uhr/ | ||
| + | |||
| + | Damit die Pixel (Bildpunkte) auch immer quadratisch sind und somit das Bild auch auf der "BURG 12" immer angezeigt wird, habe ich den VideoFilter **''" | ||
| + | '' | ||
| + | |||
| + | So transcodiert man einen 4:3-Film in einen sauberen 3GP-Film um:\\ | ||
| + | '' | ||
| + | |||
| + | so transcodiert man einen 16:9-Film in einen sauberen 3GP-Film um:\\ | ||
| + | '' | ||
| + | |||
| + | Manche Geräte vertragen auch eine höhere Datenrate, dann kann man die Bildqualität etwas anheben | ||
| + | (**384k** - hohe Qualitaet bei **25**FPS): | ||
| + | '' | ||
| + | |||
| + | Die hiermit erzeugten 3GP-Filme können aber trotzdem nicht auf allen 3GP-Geräten im QCIF-Format angezeigt werden, | ||
| + | weil ins besondere ältere Geräte den Audio-Codec " | ||
| + | |||
| + | Meine lieblings-Variante: | ||
| + | > ffmpeg -i __Film.mpg__ -c:v h263 -s 176x144 -vf " | ||
| + | |||
| + | ==== mp4 erzeugen (getestet auf LG GD510) ==== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | |||
| + | Daten des **LG GD510**: | ||
| + | Video : MPEG4p2 (max. 700 kbps) / H.263 (128x96, 176x144, 352x288, 704x576, 1408x1152) | ||
| + | Video-Format | ||
| + | FPS : bis 50/s positiv getestet | ||
| + | Audio : MP3 (max. 256 kbps) / AAC (max. 512 kbps) | ||
| + | Sampel-Rate | ||
| + | Tonspuren | ||
| + | Kontainer | ||
| + | |||
| + | So wird der Film " | ||
| + | FreeBSD 10.1 (alter Programmname): | ||
| + | ffmpeg -i Film.mkv -c:a libfaac -ar 44100 -b:a 128k -ac 2 -b:v 512k -c:v mpeg4 -s 400x240 -vf scale=iw*sar: | ||
| + | Linux / Ubuntu 14.04 (neuer Programmname): | ||
| + | avconv -i Film.mkv -c:a libfaac -ar 44100 -b:a 128k -ac 2 -b:v 512k -c:v mpeg4 -s 400x240 -vf scale=iw*sar: | ||
| + | |||
| + | mit diesem Kommando kann man Videos für die folgenden Geräte transkodieren: | ||
| + | * LG GD510 POP | ||
| + | * LG KP500 Cookie | ||
| + | * Samsung S5230 Star | ||
| + | |||
| + | Transkodier-Programme für Windows: | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | < | ||
| + | #!/bin/sh | ||
| + | |||
| + | ffmpeg -i ${1} -s 400x240 -vf scale=iw*sar: | ||
| + | </ | ||
| + | |||
| + | ==== DivX erzeugen ==== | ||
| + | |||
| + | __SD:__ | ||
| + | > ffmpeg -benchmark -probesize 9223372036854M -analyzeduration 9223372036854M -fflags +genpts+igndts -i ALTERFILM.mpg -c:v mpeg4 -vtag DX50 -profile:v 15 -level 4 -b:v 3072k -g 300 -c:a ac3 -f avi -y NEUERFILM.avi | ||
| + | |||
| + | __HD:__ | ||
| + | > ffmpeg -benchmark -probesize 9223372036854M -analyzeduration 9223372036854M -fflags +genpts+igndts -i ALTERFILM.mpg -c:v mpeg4 -vtag DX50 -profile:v 15 -level 5 -b:v 8192k -g 300 -c:a libmp3lame -aq 2 -ac 2 -f avi -y NEUERFILM.avi | ||
| + | |||
| + | |||
| + | ==== XviD erzeugen ==== | ||
| + | |||
| + | > ffmpeg -i Film.mp4 -c:a libmp3lame -aq 2 -ac 2 -c:v libxvid -sameq -f avi -y test.avi | ||
| + | |||
| + | |||
| + | ==== AVC erzeugen ==== | ||
| + | |||
| + | > ffmpeg -i Film.mp4 -acodec libfaac -vcodec libx264 -vpre baseline -f matroska -y test.mkv | ||
| + | |||
| + | |||
| + | ==== mehrere Filme zusammenfühgen ==== | ||
| + | |||
| + | |||
| + | === MPEG / MPEGTS (ts) / AVI === | ||
| + | |||
| + | __Das aneinander reihen (hintereinander zusammen fühgen) kann ffmpeg leider nur mit MPEG-, MPEGTS- (ts) und AVI-Dateien!__ | ||
| + | |||
| + | > ffmpeg -i a.avi -i b.avi -i c.avi -i d.avi -c:v copy -c:a copy -c:v copy -c:a copy -c:v copy -c:a copy -c:v copy -c:a copy -f avi -y abcd.avi | ||
| + | |||
| + | > ffmpeg -fflags +genpts -i a.avi -i b.avi -i c.avi -i d.avi -c:v copy -c:a copy -c:v copy -c:a copy -c:v copy -c:a copy -c:v copy -c:a copy -f matroska -y abcd.mkv | ||
| + | |||
| + | [[https:// | ||
| + | > ffmpeg -i " | ||
| + | |||
| + | ---- | ||
| + | [[https:// | ||
| + | > ffmpeg -i " | ||
| + | |||
| + | hat man zwei Filme mit H.264/AAC - Kodec, dann müssen diese Filme erst in den TS-Container überführt werden: | ||
| + | > ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts | ||
| + | > ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.ts | ||
| + | > ffmpeg -i " | ||
| + | |||
| + | |||
| + | === MP4 === | ||
| + | |||
| + | siehe auch: [[MP4]] | ||
| + | |||
| + | MP4-Teile per //Liste// zusammen setzen: | ||
| + | # echo "file ' | ||
| + | # echo "file ' | ||
| + | # echo "file ' | ||
| + | # echo "file ' | ||
| + | # ffmpeg -f concat -i Filmliste.txt -c:v copy -c:a copy -c:s copy -movflags faststart -f mp4 -y name.mp4 | ||
| + | |||
| + | |||
| + | === MKV === | ||
| + | |||
| + | In allen anderen Fällen könnte man zum Beispiel **mkvmerge** von // | ||
| + | |||
| + | Für diesen Zweck müsste man die Filmteile jeweils einmal in den MKV-Container überführen. \\ | ||
| + | Dann kann man ihn mit dem MKV-Tools prima zusammensetzen (siehe Abschnitt [[MKVToolnix# | ||
| + | |||
| + | Neuerdings funktioniert auch die folgende Methode für Matroska. | ||
| + | |||
| + | MKV-Teile per //Liste// zusammen setzen: | ||
| + | # echo "file ' | ||
| + | # echo "file ' | ||
| + | # echo "file ' | ||
| + | # echo "file ' | ||
| + | # ffmpeg -f concat -i Filmliste.txt -c:v copy -c:a copy -c:s copy -movflags faststart -f matroska -y name.mkv | ||
| + | |||
| + | |||
| + | ==== CROPing durchführen ==== | ||
| + | |||
| + | In diesem Beispiel werden links und oben jeweils ein 100 Bildpunkte breiter Streifen vom Bild entfernt: | ||
| + | > ffmpeg -i Film.mp4 -acodec libfaac -vcodec libx264 -vf crop=in_w-100: | ||
| + | | ||
| + | -vf crop=width: | ||
| + | width: | ||
| + | x:y stellt die Position der linken oberen Ecke des Bildes dar | ||
| + | |||
| + | zum testen, ob man die richtigen CROP-Werte gewählt hat, eignet sich diese Zeile ganz gut: | ||
| + | > ffmpeg -i Film.mp4 -map 0:v -c:v libx264 -vf yadif, | ||
| + | |||
| + | |||
| + | ==== die 8. Tonspur aus einem Film extrahieren ==== | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | In diesem Beispiel wird die achte Audio-Spur in einem CD-kompatiblen Format abgelegt: | ||
| + | > ffmpeg -i Film.vob -vn -map 0:a:7 -acodec pcm_s16le -ar 44100 -ac 2 -y test.wav | ||
| + | |||
| + | | ||
| + | -map 0:a:7 Verwende nur die achte Tonspur (Zählung beginnt mit " | ||
| + | |||
| + | |||
| + | ==== nur bestimmte Tonspuren verwenden ==== | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | In diesem Beispiel werden mit der Video-Spur ('' | ||
| + | > ffmpeg -i Film.vob -map 0:v -map 0:a:0 -map 0:a:1 -acodec libfaac -vcodec libx264 -vpre baseline -f matroska -y test.mkv | ||
| + | |||
| + | | ||
| + | -map 0:v Verwende von der ersten Eingangsdatei (Zählung beginnt mit " | ||
| + | -map 1:a:4 Verwende von der zweiten Eingangsdatei (Zählung beginnt mit " | ||
| + | -map 0:v -map 0:a:0 -map 0:a:1 Verwende von der ersten Eingangsdatei nur die Videospuren sowie die erste und zweite Tonspur | ||
| + | |||
| + | |||
| + | ===== allgemeines ===== | ||
| + | |||
| + | __Only VP8 or VP9 or AV1 video and Vorbis or Opus audio and WebVTT subtitles are supported for WebM.__ | ||
| + | |||
| + | |||
| + | ==== Audio- bzw. Video-Spur verzögern ==== | ||
| + | |||
| + | Audio-Spur um 0,7 Sekunden verzögern: | ||
| + | > ffmpeg -itsoffset 0.7 ... | ||
| + | |||
| + | Video-Spur um 0,4 Sekunden verzögern: | ||
| + | > ffmpeg -itsoffset -0.4 ... | ||
| + | |||
| + | |||
| + | ==== FFmpeg-Profile ==== | ||
| + | |||
| + | [[FFmpeg-Profile]] | ||
| + | |||
| + | |||
| + | ==== allgemeine Beispiele ==== | ||
| + | |||
| + | Infos über einen Film auslesen: | ||
| + | > ffmpeg -i Film.mpg | ||
| + | > ffmpeg -i < | ||
| + | |||
| + | Film im "'' | ||
| + | > ffmpeg -i < | ||
| + | |||
| + | aus der Video-Datei " | ||
| + | > ffmpeg -i a.wav -s 720x576 -i a.yuv a.mpg | ||
| + | |||
| + | Film im "'' | ||
| + | > ffmpeg | ||
| + | > ffmpeg | ||
| + | > ffmpeg -r 25 -i < | ||
| + | > ffmpeg -r 25 -i < | ||
| + | > ffmpeg -r 25 -i < | ||
| + | > ffmpeg -r 25 -i < | ||
| + | > ffmpeg -r 25 -i < | ||
| + | |||
| + | Film im "'' | ||
| + | > ffmpeg -i < | ||
| + | |||
| + | Nur die erste Tonspur im WAVE-Format in eine Datei schreiben: | ||
| + | > ffmpeg -i Beispiel.mpg -map 0.1:0.0 -async 0 -acodec pcm_s16le -vn -y Beispiel.wav | ||
| + | > ffmpeg -i Beispiel.mpg -map 0.1:0.0 -async 0 -c:a pcm_s16le -vn -y Beispiel.wav | ||
| + | |||
| + | alle 24 Bilder soll ein KeyFrame sein: | ||
| + | > ffmpeg -i < | ||
| + | |||
| + | nur die zweite Tonspur verwenden, dafür muss man als erstes die __IDs aller Spuren__ auslesen und danach das __Mapping aller verwendeter Spuren__ angeben: | ||
| + | > ffmpeg -i < | ||
| + | ... | ||
| + | Stream #0.0(eng): Video: h264 (High), yuv420p, 720x576 [PAR 64:45 DAR 16:9], 24 fps, 24 tbr, 1k tbn, 48 tbc (default) | ||
| + | Stream #0.1: Audio: aac, 48000 Hz, stereo, s16 (default) | ||
| + | Stream #0.2: Audio: aac, 48000 Hz, stereo, s16 (default) | ||
| + | ... | ||
| + | > ffmpeg -i < | ||
| + | |||
| + | Formatauswahl absteigend angegeben (Formate für 48, 32, 24, 16 und 12 Bit): | ||
| + | > ffmpeg -i < | ||
| + | |||
| + | [[Untertitel in Filmen]] | ||
| + | |||
| + | |||
| + | **'' | ||
| + | Input #0, mpeg, from ' | ||
| + | Duration: 02: | ||
| + | Stream # | ||
| + | Stream #0:1[0x80]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s | ||
| + | Stream #0:2[0x81]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s | ||
| + | Stream #0:3[0x21]: Subtitle: dvd_subtitle | ||
| + | Stream #0:4[0x22]: Subtitle: dvd_subtitle | ||
| + | Stream #0:5[0x23]: Subtitle: dvd_subtitle | ||
| + | Stream #0:6[0x20]: Subtitle: dvd_subtitle | ||
| + | Stream #0:7[0x25]: Subtitle: dvd_subtitle | ||
| + | Stream #0:8[0x24]: Subtitle: dvd_subtitle | ||
| + | Stream mapping: | ||
| + | Stream #0:0 -> #0:0 (mpeg2video (native) -> av1 (libaom-av1)) | ||
| + | Stream #0:2 -> #0:1 (ac3 (native) -> opus (libopus)) | ||
| + | Stream #0:3 -> #0:2 (dvd_subtitle (dvdsub) -> webvtt (native)) | ||
| + | Subtitle encoding currently only possible from text to text or bitmap to bitmap | ||
| + | |||
| + | |||
| + | so konvertiert man einen Film in einen anderen Kontainer (//nicht in jeden Kontainer ist das einfach//): | ||
| + | for Datei in *.mts; do ffmpeg -i " | ||
| + | ffmpeg -i 00001.mts 00001.mp4 | ||
| + | |||
| + | muss man den Film noch bearbeiten, dann tut man das am besten in einem verlusstfreien Format tun (2. Videospur, 1. Tonspur, alle 4 Bilder ein Vollbild): | ||
| + | > ffmpeg -i Beispiel.mpg -sameq -map 0.1:0.2 -async 0 -acodec pcm_s16le -map 0.0:0.0 -vsync 0 -g 4 -vcodec ffv1 -vf format=yuv444p16le: | ||
| + | |||
| + | [[http:// | ||
| + | > ffmpeg -i $input -deinterlace -r $fps -f rawvideo - | x264 -q $qp -f $db --sar $par -o $output - ${width}x$height --fps $fps | ||
| + | > ffmpeg -i $input -an -vcodec libx264 -crf $crf -vpre hq -threads 0 $output | ||
| + | |||
| + | Beispiel für das transkodieren einer Videospur ins BlueRay-Format: | ||
| + | > ffmpeg -v 0 -i Beispiel.mpg -an -sameq -g 4 -vcodec rawvideo -s 864x486 -vf format=yuv420p -f yuv4mpegpipe -threads 1 - | x264 - --demuxer raw --input-res 864x486 --fps 25 --crf 23 --profile high --threads 1 --b-adapt 2 --direct auto --slow-firstpass --no-fast-pskip --me tesa --merange 24 --partitions all --rc-lookahead 60 --ref 5 --subme 10 --trellis 2 --nr 0 --weightp 0 --bframes 3 --nal-hrd vbr --vbv-maxrate 12500 --vbv-bufsize 12500 --level 3.0 --keyint 24 --min-keyint 2 --b-pyramid strict --slices 1 --aud --colorprim bt709 --transfer bt709 --colormatrix bt709 --sar 1:1 -o Beispiel_videospur.mkv | ||
| + | > ffmpeg -v 0 -i Beispiel.mpg -an -sameq -g 4 -vcodec rawvideo -pix_fmt yuv420p -s 864x486 -f yuv4mpegpipe -threads 1 - | x264 - --demuxer raw --input-res 864x486 --fps 25 --crf 23 --profile high --threads 1 --b-adapt 2 --direct auto --slow-firstpass --no-fast-pskip --me tesa --merange 24 --partitions all --rc-lookahead 60 --ref 5 --subme 10 --trellis 2 --nr 0 --weightp 0 --bframes 3 --nal-hrd vbr --vbv-maxrate 12500 --vbv-bufsize 12500 --level 3.0 --keyint 24 --min-keyint 2 --b-pyramid strict --slices 1 --aud --colorprim bt709 --transfer bt709 --colormatrix bt709 --sar 1:1 -o Beispiel_videospur.mkv | ||
| + | |||
| + | |||
| + | ===== ein Stück aus dem Film rausschneiden ===== | ||
| + | |||
| + | siehe auch: [[mencoder# | ||
| + | |||
| + | hier werden 400 Sekunden ab der 60. Sekunde rauskopiert, | ||
| + | > ffmpeg -i film.mp4 -ss 60 -t 400 -acodec copy -vcodec copy -f matroska film.mkv | ||
| + | |||
| + | und hier mit der neuen avconv-Syntax für die Codec-Angabe: | ||
| + | > ffmpeg -i film.mp4 -ss 60 -t 400 -c:a copy -c:v copy -f matroska film.mkv | ||
| + | |||
| + | Leider hängt die genaue Schnittposition von den vorhandenen I-Frames ab, die in einigen Filmen dichter beieinander liegen können, dann geht es recht gut. Oder sie können in manchen Filmen auch sehr große Abstände zueinander aufweisen, das spart ein wenig Speicherplatz aber der Suchlauf und der Schitt nach I-Frames ist dann sehr grob. | ||
| + | |||
| + | Will man den Schnitt etwas genauer positionieren können, dann geht es nur, wenn alles transcodiert wird: | ||
| + | > ffmpeg -i film.avi -ss 60 -t 400 -c:v libx264 -crf 20 -c:a libfaac -q:a 160 -ar 44100 -f mp4 -y film.mp4 | ||
| + | |||
| + | In diesem Fall wird das rausgeschnittene Stück, HTML5-kompatibel (AVC+AAC+MP4) transkodiert. | ||
| + | |||
| + | Will man den Film anschließend, | ||
| + | > ffmpeg -i film.avi -ss 60 -t 400 -keyint_min 1-4 -c:v libx264 -crf 20 -c:a libfaac -q:a 160 -ar 44100 -f mp4 -y film.mp4 | ||
| + | |||
| + | |||
| + | ===== Audio und Video trennen ===== | ||
| + | |||
| + | Manchmal ist es nötig die Audio- und Videospur getrennt zu bearbeiten. | ||
| + | |||
| + | |||
| + | ==== Audiospur extrahieren ==== | ||
| + | |||
| + | erste Tonspur aus dem Film extrahieren: | ||
| + | > ffmpeg -i < | ||
| + | |||
| + | * -vn die Videospur wird nicht benötigt | ||
| + | |||
| + | hier werden von der ersten Tonspur ab der 1870. Sekunde 217 Sekunden im CD-kompatiblen WAVE-Format exportiert: | ||
| + | > ffmpeg -i Film.mkv -vn -acodec pcm_s16le -ar 44100 -ac 2 -ss 1870 -t 217 -y Ton_217Sekunden.wav | ||
| + | |||
| + | |||
| + | === nicht nur die erste Tonspur extrahieren === | ||
| + | |||
| + | Nummern der einzelnen Tonspuren ermitteln: | ||
| + | > ffmpeg -i < | ||
| + | Duration: 00: | ||
| + | Stream # | ||
| + | Stream #0.1[0x25]: Subtitle: dvdsub | ||
| + | Stream #0.2[0x26]: Subtitle: dvdsub | ||
| + | Stream #0.3[0x27]: Subtitle: dvdsub | ||
| + | Stream #0.4[0x28]: Subtitle: dvdsub | ||
| + | Stream #0.5[0x29]: Subtitle: dvdsub | ||
| + | Stream #0.6[0x2a]: Subtitle: dvdsub | ||
| + | Stream #0.7[0x2b]: Subtitle: dvdsub | ||
| + | Stream #0.8[0x2c]: Subtitle: dvdsub | ||
| + | Stream #0.9[0x2d]: Subtitle: dvdsub | ||
| + | Stream # | ||
| + | Stream # | ||
| + | Stream # | ||
| + | Stream # | ||
| + | Stream # | ||
| + | Stream # | ||
| + | Stream # | ||
| + | Stream # | ||
| + | Stream # | ||
| + | Stream # | ||
| + | |||
| + | Hier sehen wir, dass die Tonspuren die Nummern von " | ||
| + | |||
| + | zweite Tonspur aus dem Film extrahieren: | ||
| + | > ffmpeg -i < | ||
| + | ... | ||
| + | Stream mapping: | ||
| + | Stream #0.16 -> #0.0 | ||
| + | ... | ||
| + | |||
| + | dritte Tonspur aus dem Film extrahieren: | ||
| + | > ffmpeg -i < | ||
| + | ... | ||
| + | Stream mapping: | ||
| + | Stream #0.17 -> #0.0 | ||
| + | ... | ||
| + | |||
| + | |||
| + | === Tonspur transcodieren === | ||
| + | |||
| + | Wie die Tonspur vom WAVE- in MP3-Format transcodiert wird, steht hier : [[Audio#von WAV zu MP3]]. | ||
| + | |||
| + | zum Beispiel so (nur stereo): | ||
| + | > lame -q 0 -V 3 tonspur.wav tonspur.mp3 | ||
| + | |||
| + | 5.1 Kanäle erhalten und in ein 5.1 AAC (M4A) übertragen: | ||
| + | > faac -I 5,6 -C 6 -q 160 -w -o tonspur.m4a tonspur.wav | ||
| + | |||
| + | |||
| + | ==== Videospur extrahieren ==== | ||
| + | |||
| + | > ffmpeg -i < | ||
| + | |||
| + | * -an ohne Ton | ||
| + | * -vcodec copy die Videospur unverändert kopieren | ||
| + | |||
| + | |||
| + | |||
| + | ===== Video und Audio wieder zu einem Film vereinen ===== | ||
| + | |||
| + | __einfach nur zusammen-muxen: | ||
| + | > ffmpeg -i film_stumm.mp4 -i tonspur.mp4 -c:v copy -c:a copy -f mp4 film.mp4 | ||
| + | |||
| + | __mit Anpassung der Tonspur:__ | ||
| + | > ffmpeg -i film_stumm.mp4 -i tonspur.mp3 -vcodec copy -async 10 -ab 128k film.mp4 | ||
| + | |||
| + | * -vcodec copy (Videospur nicht verändern, nur kopieren) | ||
| + | * -async 10 (Da die Tonspur jetzt etwas länger ist, muss hier angepasst werden) | ||
| + | * -ab 128k | ||
| + | |||
| + | __mit der Option '' | ||
| + | > ffmpeg -i film_stumm.mp4 -i tonspur.mp4 -c:a copy -c:v copy -shortest -f mp4 film.mp4 | ||
| + | |||
| + | __[[https:// | ||
| + | > ffmpeg -i Video.mp4 -i deutsch_Audio.flac -i englisch_Audio.flac -c:v copy -c:a copy -map 0:0 -map 1:0 -map 2:0 -metadata: | ||
| + | |||
| + | # -i Video.mp4 -i deutsch_Audio.flac -i englisch_Audio.flac | ||
| + | # -c:v copy - Video-Spuren kopieren | ||
| + | # -c:a copy - Audio-Spuren kopieren | ||
| + | # -map 0:0 - aus der 1. Datei die erste Spur (Video) | ||
| + | # -map 1:0 - aus der 2. Datei die erste Spur (Audio - Deutsch) | ||
| + | # -map 2:0 - aus der 3. Datei die erste Spur (Audio - Englisch) | ||
| + | # -metadata: | ||
| + | # -metadata: | ||
| + | |||
| + | __zu einem Video eine weitere Tonspur hinzufügen: | ||
| + | > ffmpeg -i Video_englisch.mp4 -i deutsch_Audio.flac -c:v copy -c:a copy -map 0:0 -map 1:0 -map 2:1 -metadata: | ||
| + | |||
| + | # -i Video.mp4 -i deutsch_Audio.flac -i englisch_Audio.flac | ||
| + | # -c:v copy - Video-Spuren kopieren | ||
| + | # -c:a copy - Audio-Spuren kopieren | ||
| + | # -map 0:0 - aus der 1. Datei die erste Spur (Video) | ||
| + | # -map 1:0 - aus der 2. Datei die erste Spur (Audio - Deutsch) | ||
| + | # -map 0:1 - aus der 1. Datei die zweite Spur (Audio - Englisch) | ||
| + | # -metadata: | ||
| + | # -metadata: | ||
| + | |||
| + | |||
| + | __zu einem Video mit zwei Tonspuren, eine Untertitelspur hinzufügen: | ||
| + | > ffmpeg -i Video_-_deutsch+englisch.mkv -i untertitel_-_englisch.srt -c:v copy -c:a copy -c:s copy -map 0:0 -map 0:1 -map 0:2 -map 1 -metadata: | ||
| + | |||
| + | # -i Video_-_deutsch+englisch.mkv -i untertitel_-_englisch.srt | ||
| + | # -c:v copy - Video-Spuren kopieren | ||
| + | # -c:a copy - Audio-Spuren kopieren | ||
| + | # -c:s copy - Untertitel-Spuren kopieren | ||
| + | # -map 0:0 - aus der 1. Datei die erste Spur (Video) | ||
| + | # -map 0:1 - aus der 1. Datei die zweite Spur (Audio - Deutsch) | ||
| + | # -map 0:2 - aus der 1. Datei die dritte Spur (Audio - Englisch) | ||
| + | # -map 1 - aus der 2. Datei die Spur (Untertitel - Englisch) | ||
| + | # -metadata: | ||
| + | # -metadata: | ||
| + | # -metadata: | ||
| + | |||
| + | |||
| + | ==== Film in den Matroska-Kontainer schreiben ==== | ||
| + | |||
| + | > ffmpeg -i film.mpg -c:a copy -c:v copy -f matroska film.mkv | ||
| + | > ffmpeg -fflags +genpts -i film.mpg -acodec copy -vcodec copy -f matroska film.mkv | ||
| + | |||
| + | |||
| + | ==== Film in den MP4-Kontainer schreiben ==== | ||
| + | |||
| + | > ffmpeg -i film.mpg -c:a copy -c:v copy -f mp4 film.mp4 | ||
| + | |||
| + | |||
| + | |||
| + | ===== eine kleine Kurzanleitung ===== | ||
| + | |||
| + | |||
| + | === Target: DVD === | ||
| + | |||
| + | Quelle-PAL.avi | ||
| + | dargestellt in 720x576 => 1024x576 (16/9) | ||
| + | | ||
| + | ... | ||
| + | ========================================================================== | ||
| + | Opening video decoder: [ffmpeg] FFmpeg' | ||
| + | libavcodec version 53.35.0 (external) | ||
| + | Mismatching header version 53.32.2 | ||
| + | Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264) | ||
| + | ========================================================================== | ||
| + | ========================================================================== | ||
| + | Requested audio codec family [mpg123] (afm=mpg123) not available. | ||
| + | Enable it at compilation. | ||
| + | Opening audio decoder: [ffmpeg] FFmpeg/ | ||
| + | AUDIO: 48000 Hz, 2 ch, floatle, 192.0 kbit/6.25% (ratio: 24000-> | ||
| + | Selected audio codec: [ffmp3float] afm: ffmpeg (FFmpeg MPEG layer-3 audio) | ||
| + | ========================================================================== | ||
| + | ... | ||
| + | |||
| + | |||
| + | == ntsc-dvd == | ||
| + | |||
| + | Zielformat: 720x480 (dargestellt in => 854x480) | ||
| + | > ffmpeg -i Quelle-PAL.avi -target ntsc-dvd -y < | ||
| + | ... | ||
| + | ========================================================================== | ||
| + | Opening video decoder: [ffmpeg] FFmpeg' | ||
| + | libavcodec version 53.35.0 (external) | ||
| + | Mismatching header version 53.32.2 | ||
| + | Selected video codec: [ffmpeg2] vfm: ffmpeg (FFmpeg MPEG-2) | ||
| + | ========================================================================== | ||
| + | ========================================================================== | ||
| + | Opening audio decoder: [ffmpeg] FFmpeg/ | ||
| + | AUDIO: 48000 Hz, 2 ch, s16le, 448.0 kbit/29.17% (ratio: 56000-> | ||
| + | Selected audio codec: [ffac3] afm: ffmpeg (FFmpeg AC-3) | ||
| + | ========================================================================== | ||
| + | ... | ||
| + | |||
| + | |||
| + | == pal-dvd == | ||
| + | |||
| + | Zielformat: **720x576** (dargestellt in => **1024x576**) | ||
| + | > ffmpeg -i Quelle-PAL.avi -target pal-dvd -y < | ||
| + | ... | ||
| + | ========================================================================== | ||
| + | Opening video decoder: [ffmpeg] FFmpeg' | ||
| + | libavcodec version 53.35.0 (external) | ||
| + | Mismatching header version 53.32.2 | ||
| + | Selected video codec: [ffmpeg2] vfm: ffmpeg (FFmpeg MPEG-2) | ||
| + | ========================================================================== | ||
| + | ========================================================================== | ||
| + | Opening audio decoder: [ffmpeg] FFmpeg/ | ||
| + | AUDIO: 48000 Hz, 2 ch, s16le, 448.0 kbit/29.17% (ratio: 56000-> | ||
| + | Selected audio codec: [ffac3] afm: ffmpeg (FFmpeg AC-3) | ||
| + | ========================================================================== | ||
| + | ... | ||
| + | |||
| + | |||
| + | == film-dvd == | ||
| + | |||
| + | Zielformat: 720x480 (dargestellt in => 854x480) | ||
| + | > ffmpeg -i Quelle-PAL.avi -target film-dvd -y < | ||
| + | ... | ||
| + | ========================================================================== | ||
| + | Opening video decoder: [ffmpeg] FFmpeg' | ||
| + | libavcodec version 53.35.0 (external) | ||
| + | Mismatching header version 53.32.2 | ||
| + | Selected video codec: [ffmpeg2] vfm: ffmpeg (FFmpeg MPEG-2) | ||
| + | ========================================================================== | ||
| + | ========================================================================== | ||
| + | Opening audio decoder: [ffmpeg] FFmpeg/ | ||
| + | AUDIO: 48000 Hz, 2 ch, s16le, 448.0 kbit/29.17% (ratio: 56000-> | ||
| + | Selected audio codec: [ffac3] afm: ffmpeg (FFmpeg AC-3) | ||
| + | ========================================================================== | ||
| + | ... | ||
| + | |||
| + | |||
| + | == ein Skript um Filme ins DVD-Format zu transkodieren == | ||
| + | |||
| + | < | ||
| + | #!/bin/bash | ||
| + | |||
| + | # | ||
| + | # | ||
| + | # Dieses Skript übersetzt einen Film, der als Parameter uebergeben wurde, | ||
| + | # in DVD-Format (MPEG-2). | ||
| + | # | ||
| + | # Ein Film mit folgenden Eigenschaften: | ||
| + | # - 725 MB gross | ||
| + | # - 1 Stunde Spieldauer | ||
| + | # - 720x576 Bildpunkte (PAL) im 16/9 - Format | ||
| + | # - H264 - Video-Codec, | ||
| + | # - MP3 - Audio-Codec, | ||
| + | # dauert die Uebersetzung auf einem " | ||
| + | # ca. 12 Minuten. | ||
| + | # Das Ergebnis ist dann 2670 MB groß. | ||
| + | # | ||
| + | # | ||
| + | |||
| + | if [ -z " | ||
| + | echo "${0} Film.avi" | ||
| + | exit 1 | ||
| + | else | ||
| + | ### Zielformat: 720x480 (dargestellt in => 854x480) | ||
| + | #ffmpeg -i ${1} -target ntsc-dvd -y ${1}.mpeg | ||
| + | |||
| + | ### Zielformat: 720x576 (dargestellt in => 1024x576) | ||
| + | ffmpeg -i ${1} -target pal-dvd -y ${1}.mpeg | ||
| + | |||
| + | ### Zielformat: 720x480 (dargestellt in => 854x480) | ||
| + | #ffmpeg -i ${1} -target film-dvd -y ${1}.mpeg | ||
| + | fi | ||
| + | </ | ||
| + | |||
| + | |||
| + | === mpeg1/ | ||
| + | |||
| + | > rm -f ffmpeg2pass-*.log | ||
| + | > ffmpeg -i < | ||
| + | > ffmpeg -i < | ||
| + | > rm -f ffmpeg2pass-*.log | ||
| + | |||
| + | |||
| + | === mpeg2/ | ||
| + | |||
| + | > rm -f ffmpeg2pass-*.log | ||
| + | > ffmpeg -i < | ||
| + | > ffmpeg -i < | ||
| + | > rm -f ffmpeg2pass-*.log | ||
| + | |||
| + | |||
| + | === mpeg4/mp2 (ASP/DivX5) === | ||
| + | |||
| + | > ffmpeg -i < | ||
| + | > ffmpeg -i < | ||
| + | |||
| + | |||
| + | === mpeg4/ | ||
| + | |||
| + | > ffmpeg -i < | ||
| + | |||
| + | |||
| + | === mpeg4/mp3 (ASP/DivX5) === | ||
| + | |||
| + | > ffmpeg -i < | ||
| + | > ffmpeg -i < | ||
| + | > ffmpeg -i < | ||
| + | |||
| + | |||
| + | === mpeg4/ | ||
| + | |||
| + | > ffmpeg -i < | ||
| + | |||
| + | |||
| + | === mpeg4/ | ||
| + | |||
| + | > ffmpeg -i < | ||
| + | |||
| + | |||
| + | === mpeg4/mp2 (AVC) === | ||
| + | |||
| + | Bei dem '' | ||
| + | hier muss noch ein " | ||
| + | |||
| + | > ffmpeg -i < | ||
| + | > ffmpeg -i < | ||
| + | |||
| + | |||
| + | === mpeg4/mp3 (AVC) === | ||
| + | |||
| + | > ffmpeg -i < | ||
| + | > ffmpeg -i < | ||
| + | > ffmpeg -i < | ||
| + | |||
| + | |||
| + | === mpeg4/ | ||
| + | |||
| + | > ffmpeg -i < | ||
| + | |||
| + | |||
| + | === mpeg4/ | ||
| + | |||
| + | FreeBSD 9.2: | ||
| + | > portmaster multimedia/ | ||
| + | > ffmpeg -i < | ||
| + | | ||
| + | > ffmpeg -i < | ||
| + | > ffmpeg -i < | ||
| + | |||
| + | Installation auf Ubuntu 12.04: | ||
| + | > aptitude install libav-tools libavcodec-extra-53 | ||
| + | > avconv -i < | ||
| + | | ||
| + | > avconv -i < | ||
| + | > avconv -i < | ||
| + | |||
| + | __Beispiele: | ||
| + | # In Klammern steht die Anzahl von kodierten Bildern pro Sekunde, | ||
| + | # wie sie bei einem Beispeil kodiert wurden. | ||
| + | # Wenig kodierte Bilder pro Sekunde deuten auf eine längere Kodierzeit und | ||
| + | # eine bessere Bildqualitaet im kodierten Video hin. | ||
| + | # Zu beachten ist auch, dass die Bildqualitaet nicht besser als im Original | ||
| + | # werden kann! | ||
| + | | ||
| + | # veryslow (30): | ||
| + | > avconv -i < | ||
| + | | ||
| + | # medium (115): | ||
| + | > avconv -i < | ||
| + | | ||
| + | # Standard (130): | ||
| + | > avconv -i < | ||
| + | | ||
| + | # fast (130): | ||
| + | > avconv -i < | ||
| + | | ||
| + | # faster (170): | ||
| + | > avconv -i < | ||
| + | | ||
| + | # veryfast (230): | ||
| + | > avconv -i < | ||
| + | | ||
| + | # superfast (355): | ||
| + | > avconv -i < | ||
| + | | ||
| + | # ultrafast (420): | ||
| + | > avconv -i < | ||
| + | |||
| + | # | ||
| + | ### Test-Kommandos: | ||
| + | # | ||
| + | # Standard | ||
| + | # veryslow | ||
| + | # ultrafast (am schnellsten): | ||
| + | # | ||
| + | # | ||
| + | ### Testergebnisse: | ||
| + | | ||
| + | Gr. in % | Orig.-Gr. | neue Gr. | preset | ||
| + | ----------+-----------+------------+-----------+--------------------------+---------------+---------------------------- | ||
| + | 100.0 % | 741668 kB | 741668 kB | Original | ||
| + | 67.0 % | 741668 kB | 497268 kB | veryfast | ||
| + | 71.3 % | 741668 kB | 529156 kB | veryslow | ||
| + | 72.2 % | 741668 kB | 535272 kB | faster | ||
| + | 73.7 % | 741668 kB | 546652 kB | medium | ||
| + | 74.7 % | 741668 kB | 554044 kB | fast | 10:57 Minuten (~11 Min.) | ~ 130 | ||
| + | 90.6 % | 741668 kB | 671876 kB | superfast | 04:07 Minuten (~04 Min.) | ~ 355 | schlechter als ultrafast | ||
| + | 91.6 % | 741668 kB | 679264 kB | Standard | ||
| + | 149.3 % | 741668 kB | 1107644 kB | ultrafast | 03:16 Minuten (~03 Min.) | ~ 420 | fast wie Original | ||
| + | |||
| + | |||
| + | ==== FFmpeg mit dem x264-Encoder ==== | ||
| + | |||
| + | # ffmpeg -r 25 -i < | ||
| + | |||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ===== Fehlermeldungen ===== | ||
| + | |||
| + | |||
| + | ==== Past duration 0.XXXXXX too large ==== | ||
| + | |||
| + | [[https:// | ||
| + | Die Fehlermeldung verschwindet, | ||
| + | |||
| + | Es muss die Option '' | ||
| + | > ffprobe Originalfilm.mp4 | ||
| + | ... | ||
| + | Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), | ||
| + | ... | ||
| + | |||
| + | Allerdings hat bei mir die Option '' | ||
| + | > ffmpeg -r 59.64 Originalfilm.mp4 -map 0:v -c:v libx264 -profile:v high -preset veryslow -tune film -crf 20 -map 0:a:0 -c:a libfdk_aac -b:a 160k -f mp4 -y Film.mp4 | ||
| + | |||
