Chi siamo Prodotti Supporto Blog

I dettagli della compressione senza perdita H.264 di DropBox

image

 

  By Olga Krovyakova - modified October 6, 2023, created April 3, 2019.

 

PROVA ZOND 265 GRATIS

 

Un paio di settimane fa ci siamo imbattuti in un articolo sugli ingegneri di Dropbox che ricreavano l'algoritmo Pied Piper da un popolare programma televisivo. Dropbox ha sviluppato un algoritmo di compressione senza perdita di dati per file H.264 e JPEG e il nostro team si è messo a valutare questa soluzione e a raccogliere alcuni dettagli tangibili.

Con mezzo occhio, ci siamo resi conto che un file H.264 ricompresso cessava di essere H.264 e poteva essere utilizzato solo per l'archiviazione temporanea. Inoltre, questo metodo di compressione potrebbe risultare efficace in due condizioni: se il file utilizzava CAVLC come codificatore, oppure il file era codificato con blocchi PU e TU di dimensione massima. Entrambe le condizioni possono essere soddisfatte solo se il codec H.264 è impostato per la codifica a velocità massima. 

Informazioni sul progetto Pied Piper

Il video è uno dei formati di dati più pesanti , quindi non sorprende che i servizi di elaborazione, trasferimento e archiviazione video debbano considerare la compressione come una soluzione praticabile. Tuttavia, ci sono alcune opzioni disponibili. Nell'agosto 2015 DropBox ha svelato la propria visione del problema: un algoritmo originale, ma incompleto, per file video standard H.264. L'obiettivo principale dell'azienda è l'archiviazione dei file dei propri clienti. Un utente medio si preoccupa poco di come questi file vengono archiviati, ciò che conta è scaricare esattamente gli stessi file intatti – nel modo in cui sono stati caricati. Quindi l'algoritmo DropBox è senza perdite. Inoltre, il risultato della compressione non è un file video nel formato sorgente.

Il nostro articolo mira a valutare l'efficienza di questo algoritmo nella compressione di diversi formati di file. A tale scopo, utilizzeremo ZOND 265, di Solveig Multimedia, un analizzatore di file video H.264 e H.265, come strumento ausiliario.

È possibile scaricare tutti i file associati a questo articolo (l'eseguibile del compressore compilato per Linux Ubuntu x64 12.04, file video di prova) tramite il collegamento .
image

Stima dell'efficienza del compressore del progetto Pied Piper 

Il codice sorgente e i file di test del compressore sono disponibili su GitHub. Per cominciare, compileremo un compressore e stimeremo i file di test. Successivamente, misureremo l'efficacia rispetto ai file video della vita reale.

Compressione

Linee guida specifiche per la compilazione del compressore Pied Piper sono disponibili solo per Linux. In effetti, è un singolo file: lo script "piedpiper_make". Quindi dobbiamo caricare Linux Ubuntu x64 e inserire tre comandi:

cd./lossless264
./piedpiper_make

Dopo la compilazione, controlla la cartella corrente per i file di compressione:

  • h264dec – il file eseguibile del compressore e del decompressore
  • so.0, libopenh264.so – una libreria ausiliaria dinamica e un collegamento ad essa.

La compressione se eseguita dal comando:

./h264dec ./file-sorgente.264 ./file-destinazione.pip,

Decompressione:

./h264dec ./file-compresso.pip ./file-decompresso.264.

Tieni presente che l'output della compressione non è un file dello stesso formato dell'origine, ma una serie di file .pip.
 

File di test del Pifferaio magico 

Secondo il repository Git, il team DropBox ha utilizzato questi file come materiale di prova: "black.264", "tibby.264", "walk.264", 'BA1_FT_C.264", "BAMQ2_JVC_C.264". Li carichiamo in Zond 265 e scopriamo che sono stati compressi con lo stesso metodo (vedi screenshot di Zond 265, scheda Bitstream , foto 1 - 3 per il file "tibby.264"). Le proprietà principali dei file sono l'uso di CAVLC (PPS, entropy_coding_mode_flag: 0) e nessun B-frame (SPS,max_num_reorder_frames: 0). Abbiamo scelto i primi tre file per i nostri test di efficienza.

image

Fig. 1. Blocco SPS (Sequence Parametro Set) per il file "tibby.264

image

Fig. 2. Blocco di impostazione dei parametri dell'immagine per il file "tibby.264

image

Fig. 3. Struttura del flusso video per il file "tibby.264

Altri file di prova

Gli utenti possono utilizzare una serie di strumenti per ottenere file video: girare un video con una fotocamera (ad esempio, su un telefono cellulare), scaricarlo da numerosi servizi video (YouTube, VK, Vimeo, Facebook, ecc.) o utilizzare software con funzionalità di ricodifica.

Selezioniamo il file "VID_20150917_131139.264" come un normale videoclip del cellulare. Come gli esempi precedenti, non contiene fotogrammi B, ma utilizza CABAC anziché CAVLC come codificatore aritmetico. Il compressore restituisce un errore per i file YouTube (includono fotogrammi B e utilizzano CABAC), quindi li lasciamo dietro al nostro framework di test.

Scegliendo il software abilitato alla ricodifica, optiamo per l'utilità della console ffmpeg (modulo "libx264"). Facendo un salto in avanti, la compressione è possibile solo con il preset "ultrafast", mentre con il preset "superfast" non si ottengono risultati. I file di prova sono "tractor-ultrafast.264", "tractor-superfast.264".

Oltre ai file citati, la tabella include altri tre esempi. Questi ultimi vengono utilizzati per determinare se l'algoritmo suggerito manterrà l'efficienza delle opzioni "CABAC" abilitate e della codifica con blocchi PU e TU di dimensione massima: "black-cabac.264", "tibby-cabac.264" e "tibby-cabac -max-blocchi".
 

Risultati del test

I risultati del test sono visualizzati nelle Tabelle 1 e 2. I dati quantitativi per i blocchi PU e TU sono stati raccolti utilizzando il software Zond 265 (schedaStream Stats ). fig. 4 rivela uno screenshot dei dati del file "tibby.264.

image

Fig. 4. PU e TU bloccano i dati per il file "tibby.264

Tabella 1. Compressore Pifferaio magico . Risultati dei test di efficienza.

image

Tabella 2. Compressore Pifferaio magico . Risultati dei test di efficienza.

image

 Come implicano le tabelle sopra, la versione attuale dell'algoritmo Pied Piper funziona solo in due scenari: se un file utilizza CAVLC come codificatore o il file è codificato con blocchi PU e TU di dimensione massima. Questi scenari richiedono la massima velocità di codifica da un codec H.264. Apparentemente, tutto ciò si riduce a file piuttosto grandi. Questi sono i file creati dal codec ffmpeg con libx264, preimpostato "ultrafast.

Per ora è tutto. Apprezziamo il tempo impiegato per svolgere questa ricerca con il nostro team. In attesa di una risposta!

 

PROVA ZOND 265 GRATIS

 

 

 About the author

imageOlga Krovyakova is the Technical Support Manager in Solveig Multimedia since 2010.

She is the author of many text and video guidelines of company's products: Video Splitter, HyperCam, WMP Trimmer Plugin, AVI Trimmer+ and TriMP4.

She works with programs every day and therefore knows very well how they work. Сontact Olga via support@solveigmm.com if you have any questions. She will gladly assist you!