Defina a profundidade de bits na codificação FFmpeg para HEVC?

3

O FFmpeg agora está suportando codificação de 10 bits e 12 bits para x265, mas não consegui encontrar as opções de linha de comando adequadas para codificá-las nessas profundidades de bits.

Alguém pode especificar essas opções?

    
por Danial Behzadi 06.06.2017 / 07:49

1 resposta

4

Se você tem uma versão moderna do FFmpeg e x265 apropriadamente configurada, (o repositório FFmpeg sob o Zesty Zapus 17.04 se enquadra nessa categoria), você deve achar a codificação 8, 10 e 12bit bastante direta.

Eu ilustro uma linha de comando de exemplo para cada abaixo:

1. Codificação 8bit HEVC com FFmpeg ...

Verifique a capacidade da sua versão instalada do x265 para codificação de 8 bits da seguinte forma:

andrew@illium~$ 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
andrew@illium~$ 

Aqui você verá que minha própria cópia possui recursos para codificação de 8 | 10 | 12 bits. Uma instalação do FFmpeg compilada contra esta versão do x265 pode produzir uma codificação decente de 8 bits com o seguinte comando:

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

É claro que você pode variar qualquer uma dessas configurações para atender às suas necessidades específicas ...

2. Codificação HEVC de 10 bits com FFmpeg ...

Verifique a capacidade da sua versão instalada do x265 para a codificação 10bit da seguinte forma:

andrew@illium~$ 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
andrew@illium~$ 

Aqui você verá que minha própria cópia possui recursos para codificação de 10 bits. Uma instalação do FFmpeg compilada contra esta versão do x265 pode produzir uma codificação decente de 10 bits com o seguinte 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 isso deve te levar até ...

3. Codificação HEVC de 12 bits com FFmpeg ...

Verifique a capacidade da sua versão instalada do x265 para codificação de 12 bits da seguinte forma:

andrew@illium~$ 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
andrew@illium~$ 

Aqui você verá que minha própria cópia possui recursos para codificação de 12 bits. Uma instalação do FFmpeg compilada contra esta versão do x265 pode produzir uma codificação decente de 12 bits com o seguinte comando:

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

Mais uma vez, a experimentação com alguns dos parâmetros auxiliares deve fornecer-lhe exactamente os resultados que procura depois ...

Notas:

  1. Se você não tiver certeza de quais formatos de pixel (para a configuração vital -pix_fmt FFmpeg) são suportados pela sua cópia do FFmpeg e libx265, o seguinte comando mostrará os detalhes:

     ffmpeg -h encoder=libx265 2>/dev/null | grep pixel 
    
  2. Guia de codificação do FFmpeg e H.265 : informações básicas sobre codificação HEVC com FFmpeg, nada na codificação 8 | 10 | 12 bits embora ...

  3. Zesty Zapus (17.04) tem um x265 um pouco mais antigo, mas totalmente configurado:

      andrew@ilium:~$ 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
      andrew@ilium:~$ 
    

    e, portanto, pode codificar para todas as 3 possíveis profundidades de bit ...

por andrew.46 06.06.2017 / 10:15