Als kleines Snippet:
ffmpeg -i inputvideo.webm -c:v ffv1 -level 3 -g 1 -coder 1 -context 1 -slices 16 -slicecrc 1 -report -c:a pcm_s32le -y outputvideo.mkvDie Optionen kurz erklärt:
- -i inputvideo.webm – Lese von Video inputvideo.webm
- -c:v ffv1– Verwende Videocodec FFV1
- -level 3 – von diesem die Variante 3 (besonders für LZA geeignete Variante)
- -g 1– Verwende GOP von 1 (group of pictures)
- -coder 1– Verwende range-coder (ist 'ne Art arithmetischer Komprimierung)
- -context 1 – Verwende größeren Kontext für Symbolkodierung
- -slices 16 – Verwende 16 Slices, dh. jeder Frame wird in 16 Scheiben geschnitten, die je in einem Thread kodiert werden können
- -slicecrc 1 – Füge CRC-Prüfsummen zu jedem Slice hinzu
- -report – Schreibe alle Infos in ein Report-file
- -c:a pcm_s32le – Verwende Audiocodec Wav-PCM signed 32bit little endian
- -y – überschreibe vorhandene Datei ohne Rückfrage
- outputvideo.mkv – Schreibe Video outputvideo.mkv
Offene Fragen (Update 2015-08-03)
Nicht unterstütztes pcm-Format?
pcm_u24le wird von ffmpeg mit "[matroska @ 0x1a0adc0] No wav codec tag found for codec pcm_u32le" quittiert. Warum?Matroska unterstützt diesen Codec nicht.
Bedeutung der verschiedenen PCM-Subformate?
Ist pcm_s24le Wave mit linear PCM oder linear differential PCM?Nach Antworten auf Nachfrage auf der FFMPEG-Mailingliste sieht es so aus, daß alle Formate linear PCM sind (nur in unterschiedlichen Codec Ausprägungen, bei signed int ist "Stille" definiert als Wert 0, bei unsigned int liegt "Stille" als Wert in der Hälfte des Wertebereiches).
Von der Verwendung von float-Varianten wird abgeraten, da die bitgenaue Rekonstruktion bei unterschiedlichen Architekturen nicht sichergestellt ist.