Inhaltsverzeichnis

ffmpeg

Streams auslesen

ffmpeg -i Videodatei

gibt alle enthaltenen Streams aus. Z.B.:

    Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
    Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 192 kb/s
    Stream #0:2[0x1101]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 192 kb/s
    Stream #0:3[0x1102]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 192 kb/s
    Stream #0:4[0x1103]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 192 kb/s
    Stream #0:5[0x1104]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 192 kb/s
    Stream #0:6[0x1105]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 192 kb/s
    Stream #0:7[0x1106]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 192 kb/s
    Stream #0:8[0x1107]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 192 kb/s
    Stream #0:9[0x1108]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 192 kb/s
    Stream #0:10[0x1109]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 192 kb/s
    Stream #0:11[0x110a]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 192 kb/s
    Stream #0:12[0x110b]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 192 kb/s
    Stream #0:13[0x110c]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 192 kb/s
    Stream #0:14[0x110d]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 192 kb/s
    Stream #0:15[0x110e]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, mono, fltp, 192 kb/s
    Stream #0:16[0x1200]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:17[0x1201]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:18[0x1202]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:19[0x1203]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
    Stream #0:20[0x1204]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
    Stream #0:21[0x1205]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Stream #0:22[0x1206]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
    Stream #0:23[0x1207]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
    Stream #0:24[0x1208]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
    Stream #0:25[0x1209]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080

Video konvertieren

nach h265

Wir möchten den Videostream nach h265 konvertieren, sowie die 2. Tonspur 1:1 übernehmen

#!/bin/bash
mkdir konvertiert
for film in *.mkv
  do
    ffmpeg -i "$film" -map 0:0 -map 0:2 -c:v libx265 -crf 28 -preset slower -c:a:0 copy "./konvertiert/$film.mkv"
#               |       |   |    |   |    |     |      |  |     |       |      |    |            |
# Quellfilm ----'       |   |    |   |    |     |      |  |     |       |      |    |            |
# Mapping aktivieren ---'   |    |   |    |     |      |  |     |       |      |    |            |
#  videospur ---------------'    |   |    |     |      |  |     |       |      |    |            |
# Mapping -----------------------'   |    |     |      |  |     |       |      |    |            |
#  2. Tonspur -----------------------'    |     |      |  |     |       |      |    |            |
# Videospur waehlen ----------------------'     |      |  |     |       |      |    |            |
#  enkodieren in h265 --------------------------'      |  |     |       |      |    |            |
#   Qualitaetswert: kleiner ist besser ----------------'  |     |       |      |    |            |
#    Qualitaetswert --------------------------------------'     |       |      |    |            |
#   Preset: langsamer ist besser -------------------------------'       |      |    |            |
#    langsamer fuer bessere Qualitaet bei geringer Groesse -------------'      |    |            |
# Audiospur waehlen -----------------------------------------------------------'    |            |
#  Audiospur 1:1 kopieren ----------------------------------------------------------'            |
# Ausgabedatei: Endung ist wichtig! Containerformat wird anhand Dateiendung festgelegt! ---------'
  done

Audio- / Videoversatz

https://superuser.com/questions/982342/in-ffmpeg-how-to-delay-only-the-audio-of-a-mp4-video-without-converting-the-au

Video um 3.84 Sekunden verzögern:

ffmpeg -i "movie.mp4" -itsoffset 3.84 -i "movie.mp4" -map 1:v -map 0:a -c copy "movie-video-delayed.mp4"

Audio um 3.84 Sekunden verzögern:

ffmpeg -i "movie.mp4" -itsoffset 3.84 -i "movie.mp4" -map 0:v -map 1:a -c copy "movie-audio-delayed.mp4"

falsches Bildseitenverhältnis

https://superuser.com/questions/907933/correct-aspect-ratio-without-re-encoding-video-file

Um das Bildseitenverhältnis eines Videos zu ändern, ohne es zu reencodieren, kann der DAR angepasst werden. Dies kann z.B. bei TV-Aufnahmen nötig sein, da 16:9-Videos im PAL-Format gestaucht als 4:3 übertragen werden.

ffmpeg -i video.mp4 -aspect 16:9 -c copy video16_9.mp4

Das Video hat danach immer noch 4:3 Auflösung, wird aber beim Abspielen auf 16:9 gestreckt.