Inhaltsverzeichnis

Videos transcodieren

siehe auch: VideoSoftware

Allgemeines zu Farbräumen

Es ist zu beachten, dass YUV kein echter Farbraum ist, sondern nur ein Farbmodell!

Das YUV-Farbmodell geht von einem Modell mit linearer Addition der Farbreize aus. Was jedoch keinen echten (sondern nur einen synthetischen) Farbraum abbildet. Im allgemeinen sollte man den Farbraum bzw. das Farbmodell nur dann ändern, wenn das Abspielgerät nur einen anderen Farbraum versteht und den vorhandenen nicht richtig darstellen kann.

Also sollte man prinzipiell beim transkodieren keine Angaben zur Farbraumkonvertierung vornehmen, solange man alle seine Videos gut ansehen kann.

Alle haben genau so viele Farben drin, aber das Farbdreieck ist bei allen dreien verdreht…

YPbPr ist eine anders skalierte Version von YUV, was meist in der Digitalform als YCbCr verwendet wird. Die Benutzung ist bei der Video- und Bildkompression weit verbreitet, wie bei MPEG und JPEG.

Farbräume

"sRGB" entspricht in etwas "BT.709".

HDR benötigt mindestens den Farbraum "P3" oder besser "BT.2020" und eine Farbtiefe von 10 Bit.

Farbraum vs. Farbmodell vs. Farbprofil

Der Farbraum (z.B. "BT.709" oder "BT.2020") beschreibt die mögliche Anzahl aller darstellbaren tatsächlichen Farben bzw. die Farbe selbst (z.B. braun).

Das Farbmodell (z.B. "YUV" oder "RGB") ist eine Beschreibung, wie die entsprechende Farbe dargestellt (aus den zur Verfügung stehenden Grundfarben und Helligkeitswerten gemischt) wird (z.B. der Anteil der einzelnen Primärfarben "Rot", "Grün" und "Blau", um die gewünschte Farbe zu bekommen).

Das Farbprofil beschreibt den Schwarzpunkt, den Weißpunkt, die Farbtemperatur und das Gamma.

Farbraum → steht im Video

Farbmodell + Farbprofil → steht im Monitor

Beispiele mit FFmpeg

> ffmpeg -i test.avi -c:v libx264 -x264opts colorprim=bt709:transfer=bt709:colormatrix=bt709 -c:a copy -c:s copy -f matroska -y test_bt709_x264.mkv

> mediainfo test_bt709_x264.mkv | grep -Fi 'Color primaries'
Color primaries                          : BT.709

> ffprobe -i test_bt709_x264.mkv -show_data 2>&1 | grep -F bt709
  Stream #0:0(und): Video: h264 (High 10) (avc1 / 0x31637661), yuv420p10le(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 1201 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)

> ffprobe -v error -i test_bt709_x264.mkv -show_streams -select_streams v | grep -F color_primaries=
color_primaries=bt709

> ffprobe -v error -i test_02.mp4 -show_entries stream=index:stream=color_primaries -select_streams v -of compact=p=0:nk=1
0|bt709
> ffmpeg -i test.avi -c:v libaom-av1 -aom-params color-primaries=bt709:transfer-characteristics=bt709:matrix-coefficients=bt709 -c:a copy -c:s copy -f matroska -y test_bt709_av1.mkv

> mediainfo test_bt709_av1.mkv | grep -Fi 'Color primaries'
Color primaries                          : BT.709

> ffprobe -i test_bt709_av1.mkv -show_data 2>&1 | grep -F bt709
  Stream #0:0: Video: av1 (Main), yuv420p10le(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 1k tbc (default)

> ffprobe -v error -i test_bt709_av1.mkv -show_streams -select_streams v | grep -F color_primaries=
color_primaries=bt709

> ffprobe -v error -i test_bt709_av1.mkv -show_entries stream=index:stream=color_primaries -select_streams v -of compact=p=0:nk=1
0|bt709

So erstellen Sie eine Screenshot-Galerie über die Befehlszeile

MPlayer

How to make screenshot gallery from command line

mit diesem Aufruf kann man durch drücken von s (klein "S") ein einzelnes Bildschirmfoto aufnehmen und durch drücken von S (groß "S") das aufnehmen einer Bildschirmfotoreihe starten und wieder stoppen:

> mplayer -vf screenshot file.mp4

dieser Aufruf erzeugt von den ersten 5 Frames jeweils eine einzelne Bilddatei:

> mplayer -nosound -frames 5 -vo png:z=9 file.mp4

Filmwandler

Only VP8 or VP9 or AV1 video and Vorbis or Opus audio and WebVTT subtitles are supported for WebM.

Stand: Mai 2022
Größenvergleich Format-Name Video-Codec Audio-Codec Container (Endung)
2057 WebM AV1 Opus webm
2057 Matroska VP9 Vorbis mkv
4873 MP4 H.264 AAC mp4
5001 OGG VP8 Vorbis ogg
5129 Flash Video Sorenson Spark MP3 flv
5769 MPEG-TS MPEG-TS AC3 ts
5897 AVCHD H.264 AC3 m2ts
8585 3GPP H.263 AAC 3gp
9609 DivX 5 H.263++ MP3 avi
VCD MPEG-1 MP2 mpg
DVD (1995) MPEG-2 MP2 mpg
11537 DVD (ab 1996) MPEG-2 AC3 mpg
12561 3GPP2 H.263 AAC 3g2

Die Werte für den Größenvergleich sind nicht repräsentativ, da die Filmsequenz nur 49 Sekunden lang war, nur eine Tonspur enthielt und keine Untertitelspuren. Weiterhin war das Quellmaterial nicht das Beste!

ein paar Anwendungsbeispiele:

~/bin/Filmwandler.sh -q AlterFilm.mpeg -z NeuerFilm.mkv
~/bin/Filmwandler.sh -q Film_mit_Untertitel.mpeg -z Film_ohne_Untertitel.webm -u =0
~/bin/Filmwandler.sh -q Film_mit_vielen_Untertiteln.mpeg -z Film_mit_nur_der_ersten_Untertitelspur.mp4 -u 0
~/bin/Filmwandler.sh -q AlterFilm.mpeg -z NeuerFilm.mkv -titel "So heißt der Film" -k "FSK 12 / und Kommentare"

hier müssen die Positionen (in Sekunden) zwischen den Werbepausen angegeben werden (vor der ersten Werbepause geht der Filmausschnitt von Sekunde 0 bis Sekunde 207, danach kommt die erste Werbepause bis Sekunde 338, dort beginnt der zweite Filmausschnitt… :)

~/bin/Filmwandler.sh -q Film_mit_Werbung.mpeg -z Film_ohne_Werbung.mp4 -schnitt 0-207,338-1990,2607-3854,4273-5549,5985-6982,7241-7994

so wird der Film in das MP4-Format und zusätzlich in das WebM-Format transkodiert, wenn es nicht ins WebM-Format funktioniert wird versucht es ins MKV-Format zu transkodieren:

~/bin/Film2MP4+MKV_WebM.sh -q Film_mit_Werbung.mpeg -z Film_ohne_Werbung -schnitt 43-207,338-1990,2607-3854,4273-5549,5985-6982,7241-7994

Das Format der Optionen ist ist bei allen Skripten gleich.

Alle Filme, die so mit diesen Skripten erstellt werden, liegen am Ende entweder in dem Format 4:3 oder 16:9 vor und haben quadratische Bildpunkte (Pixel).

Es ist auch möglich den Namen für die Sprache einer Ton- oder Untertitelspur zu setzen bzw. zu überschreiben. Hierfür werden die Sprach-Kürzel nach ISO-639-2-Codes verwendet:

  Chinesisch:  chi / zho
  Deutsch:     deu / ger
  Englisch:    eng
  Französisch: fra / fre
  Italienisch: ita
  Japanisch:   jpn
  Russisch:    rus
  Spanisch:    spa
  Türkisch:    tur
  Dutch:       nld
  Danish:      dan
  Finnish:     fin
  Norwegian:   nor
  Swedish:     swe

Beispiel:

> ls -lha UNCHARTED_1.mpg
-rw-r--r--  1 dlna  dlna   4.6G Feb  4 21:50 UNCHARTED_1.mpg

> time ~/bin/Filmwandler_transkodieren.sh -q UNCHARTED_1.mpg -z Uncharted -titel Uncharted -k "FSK 12 / 2022 / 116 Minuten / tt1464335 / Die Geschichte ist eine Vorgeschichte zu den Spielen, in der Holland als jüngerer Drake in der Hauptrolle spielt und uns Details darüber zeigt, wie er gekommen ist, um Sully zu treffen und sich mit ihm anzufreunden." -ton 1:deu,0:eng -standard_ton 0 -u 1:deu,2:eng,0:tur
...
-rw-r--r--  1 quarzsnoopy  dlna   1.1G Feb  5 02:29 Uncharted.mkv
-rw-r--r--  1 quarzsnoopy  dlna   1.9M Feb  5 02:29 Uncharted.mkv.log
-rw-r--r--  1 quarzsnoopy  dlna   7.2K Feb  5 02:29 Uncharted.mkv.txt
-rw-r--r--  1 quarzsnoopy  dlna   386K Feb  5 03:03 Uncharted.mp4.log
-rw-r--r--  1 quarzsnoopy  dlna   7.7K Feb  5 03:03 Uncharted.mp4.txt
-rw-r--r--  1 quarzsnoopy  dlna   1.1G Feb  5 02:29 Uncharted.webm
-rw-r--r--  1 quarzsnoopy  dlna   275B Feb  5 02:29 Uncharted.webm.txt
-rw-r--r--  1 quarzsnoopy  dlna   1.2G Feb  5 03:03 Uncharted_-_HD-ready+HLS.mp4

real    218m18.527s
user    576m58.494s
sys     1m29.099s

HandBrake