Impostare la profondità di bit nella codifica FFmpeg per HEVC?

FFmpeg supporta ora la codifica a 10 bit e 12 bit per x265, ma non sono riuscito a trovare le opzioni della riga di comando appropriate per codificarle in quelle profondità di bit.

Qualcuno può specificare le opzioni?

Se hai una versione moderna opportunamente configurata di FFmpeg e x265, (il repository FFmpeg sotto Zesty Zapus 17.04 rientra in questa categoria), dovresti trovare la codifica con 8, 10 e 12 bit abbastanza semplice.

Illustro una linea di comando di esempio per ciascuno di seguito:

1. Codifica HEVC a 8 bit con FFmpeg …

Verifica la capacità della tua versione installata di x265 per la codifica a 8 bit come segue:

[email protected]~$ x265 -V x265 [info]: HEVC encoder version 2.4 x265 [info]: build info [Linux][GCC 7.1.0][64 bit] 8bit+10bit+12bit x265 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX XOP FMA4 FMA3 LZCNT BMI1 [email protected]~$ 

Qui vedrai che la mia copia ha funzionalità per la codifica 8 | 10 | 12 bit. Un’installazione di FFmpeg compilata su questa versione di x265 può produrre una decente codifica a 8 bit con il seguente comando:

 ffmpeg -i input.mp4 \ -c:v libx265 -preset medium -crf 28 -pix_fmt yuv420p \ -c:a aac -b:a 128k \ output_8bit.mp4 

Ovviamente puoi variare ognuna di queste impostazioni in base alle tue esigenze specifiche …

2. Codifica HEVC a 10 bit con FFmpeg …

Verifica la capacità della tua versione installata di x265 per la codifica a 10 bit come segue:

 [email protected]~$ x265 -V -D10 x265 [info]: HEVC encoder version 2.4 x265 [info]: build info [Linux][GCC 7.1.0][64 bit] 10bit x265 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX XOP FMA4 FMA3 LZCNT BMI1 [email protected]~$ 

Qui vedrai che la mia copia ha funzionalità per la codifica a 10 bit. Un’installazione di FFmpeg compilata su questa versione di x265 può produrre una decente codifica a 10 bit con il seguente comando:

 ffmpeg -i input.mp4 \ -c:v libx265 -preset medium -crf 28 -pix_fmt yuv420p10le \ -c:a aac -b:a 128k \ output_10bit.mp4 

E questo dovrebbe vederti attraverso …

3. Codifica HEVC a 12 bit con FFmpeg …

Verifica la capacità della tua versione installata di x265 per la codifica a 12 bit come segue:

 [email protected]~$ x265 -V -D12 x265 [info]: HEVC encoder version 2.4 x265 [info]: build info [Linux][GCC 7.1.0][64 bit] 12bit x265 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX XOP FMA4 FMA3 LZCNT BMI1 [email protected]~$ 

Qui vedrai che la mia copia ha funzionalità per la codifica a 12 bit. Un’installazione di FFmpeg compilata su questa versione di x265 può produrre una decente codifica a 12 bit con il seguente comando:

 ffmpeg -i input.mp4 \ -c:v libx265 -preset medium -crf 28 -pix_fmt yuv420p12le \ -c:a aac -b:a 128k \ output_12bit.mp4 

Ancora una volta la sperimentazione con alcuni dei parametri ausiliari dovrebbe darti esattamente i risultati che stai cercando …

Gli appunti:

  1. Se non sei sicuro di quali formati di pixel (per l’impostazione vitale -pix_fmt FFmpeg) sono supportati dalla tua copia di FFmpeg e libx265 il seguente comando mostrerà i dettagli:

      ffmpeg -h encoder=libx265 2>/dev/null | grep pixel 
  2. Guida alla codifica FFmpeg e H.265 : informazioni di base sulla codifica HEVC con FFmpeg, niente sulla codifica 8 | 10 | 12 bit però …

  3. Zesty Zapus (17.04) ha un x265 leggermente più vecchio ma completamente configurato:

      [email protected]:~$ x265 -V x265 [info]: HEVC encoder version 2.3 x265 [info]: build info [Linux][GCC 6.3.0][64 bit] 8bit+10bit+12bit x265 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX LZCNT [email protected]:~$ 

    e quindi può codificare in tutte e 3 le possibili profondità di bit …