DE  |  FR  |  IT

Modifica del contenitore senza transcodifica

Come possiamo rilevare in modo affidabile, dopo un cambio di contenitore, che non è avvenuta alcuna transcodifica?

[09-03-2020] Quando si tratta di materiale video, CECO in genere sconsiglia la conversione generalizzata del formato. Tuttavia, può avere senso convertire il materiale ricevuto in un formato adatto all'archiviazione o almeno in un formato più comune.

In questo caso specifico, stiamo parlando della conversione di dischi Blu-Ray.

Per il Blu-Ray sono ammessi i seguenti codec video: H.262/MPEG-2 Parte 2, H.264/MPEG-4 AVC e SMPTE VC-1. Il formato del contenitore è M2TS, derivato da MPEG2; nell'archivio preferiamo utilizzare MPEG4 o MOV. Tuttavia, a causa di possibili perdite di qualità, vorremmo cambiare il contenitore senza transcodificare il codec video.

Formati di post-elaborazione

Molti programmi di editing video che potremmo utilizzare per la conversione, come Adobe Premiere, Apple Final Cut, Cyberlink PowerDirector ecc. utilizzano un formato interno di post-elaborazione per l'editing del materiale video, in cui viene prima convertito il materiale da montare (ad esempio ProRes in Final Cut). Dopo il cambio di contenitore, il codec originale può essere nuovamente presente, ma eventualmente dopo due ricodifiche. Con una modifica del contenitore con ffmpeg dovremmo essere relativamente al sicuro da questo problema, ma vorremmo comunque sapere se il codec video è rimasto invariato.

Transcodierung erkennen

(Untersucht und zusammengestellt vom Staatsarchiv des Kantons Zürich StAZH)

Ein Indiz, ob eine Transcodierung stattfindet, ist die Verarbeitungszeit. Ein reiner Containerwechsel ohne Transcodierung müsste sehr viel schneller vonstattengehen als ein Containerwechsel mit Transcodierung, aber das ist natürlich nur ein unscharfer Hinweis.

Riconoscere la transcodifica

(Indagine e compilazione dell'Archivio di Stato del Cantone di Zurigo StAZH).

Un'indicazione dell'avvenuta transcodifica è il tempo di elaborazione. Un cambio di contenitore puro senza transcodifica dovrebbe essere molto più veloce di un cambio di contenitore con transcodifica, ma questa è ovviamente solo un'indicazione confusa.

Gli QC-Tools offrono anche la possibilità di confrontare i video, ma la possibilità di rilevare eventuali transcodifiche dipende ovviamente dal tipo di transcodifica. I test con gli QC-Tools e MediaInfo hanno dimostrato che difficilmente questi strumenti possono essere utilizzati per fare affermazioni affidabili sulla transcodifica.

L'approccio più affidabile è il seguente: ffmpeg consente di creare checksum per i singoli fotogrammi, che vengono scritti in un file di testo. Le checksum dei singoli fotogrammi del file originale e del file con il nuovo contenitore possono essere confrontate tra loro dopo la pulizia. Nel caso di un cambio di contenitore senza transcodifica, questi devono essere identici. La procedura è stata testata dalla StAZH e dall'ufficio CECO e funziona.

Esiste anche la possibilità di utilizzare ffmpeg per generare differenze di immagine tra film diversi, sempre come film (in modo simile a quanto fanno KOST-Simy o Diffchecker per le immagini, ad esempio). Nel caso della transcodifica, è possibile determinare una differenza di immagine sull'intera lunghezza del film. Come limitazione, è possibile che non siano rilevabili differenze di immagine se la qualità teorica del file transcodificato è migliore di quella del file originale. Quando si confrontano film che sono stati solo transcodificati, in teoria non dovrebbero essere rilevabili differenze di immagine. In pratica, tra un'immagine e l'altra sono apparse immagini differenziali che tremolano brevemente. Questi problemi sono stati probabilmente causati dalle diverse velocità di trasmissione, ma la ragione esatta non è ancora chiara.

In conclusione, si può affermare che il metodo di creazione di checksum per i singoli fotogrammi con ffmpeg è il più convincente.

Comandi ffmpeg (secondo Reto Kromer, reto.ch)

Cambio di contenitore (da mp4 a Matroska) senza transcodifica (= copia):

ffmpeg -i Input_h264.mp4 -codec copy Output_h264.mkv

Transcodifica (video in ffv1 e audio in flac) senza modificare i contenitori

ffmpeg -i Input.mkv -codec:v ffv1 -codec:a flac Output_ffv1_flac.mkv

Formare i checksum MD5 dei frame:

ffmpeg -i Input_h264.mp4 -f framemd5 Input_framemd5.txt

Formare un'immagine di differenza tra due video:

ffmpeg -i Input_h264.mp4 -i Output_h264.mkv -filter_complex "[1]format=yuva444p, lut=c3=128, negate [1_mit_Alpha_Kanal]; [0][1_mit_Alpha_Kanal]overlay" Diff_Input-Output.mp4

La documentazione di ffmpeg è disponibile all'indirizzo https://www.ffmpeg.org/ffmpeg.html.