Установить битовую глубину в кодировке FFmpeg для HEVC?

FFmpeg теперь поддерживает 10-битное и 12-битное кодирование для x265, но я не смог найти подходящих параметров командной строки для их кодирования в этих битовых глубинах.

Кто-то может указать эти параметры?

1 ответ

Решение

Если у вас есть надлежащим образом настроенная современная версия FFmpeg и x265 (репозиторий FFmpeg под Zesty Zapus 17.04 относится к этой категории), вы должны найти кодировку с 8, 10 и 12 битами довольно простой.

Я иллюстрирую пример командной строки для каждого ниже:

1. 8-битное кодирование HEVC с FFmpeg...

Проверьте работоспособность установленной версии x265 для 8- битной кодировки следующим образом:

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~$ 

Здесь вы увидите, что моя собственная копия имеет возможности для кодирования 8|10|12 бит. Установка FFmpeg, скомпилированного с этой версией x265, может произвести достойное 8-битное кодирование с помощью следующей команды:

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

Конечно, вы можете изменить любой из этих параметров в соответствии с вашими потребностями...

2. 10-битное кодирование HEVC с FFmpeg...

Проверьте работоспособность установленной версии x265 для 10-битной кодировки следующим образом:

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~$ 

Здесь вы увидите, что моя собственная копия имеет возможности для 10-битного кодирования. Установка FFmpeg, скомпилированного с этой версией x265, может произвести достойное 10-битное кодирование с помощью следующей команды:

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

И это должно увидеть тебя до конца...

3. 12-битное кодирование HEVC с FFmpeg...

Проверьте работоспособность установленной версии x265 для 12-битной кодировки следующим образом:

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~$ 

Здесь вы увидите, что моя собственная копия имеет возможности для 12-битного кодирования. Установка FFmpeg, скомпилированного с этой версией x265, может произвести достойное 12-битное кодирование с помощью следующей команды:

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

Еще раз экспериментируя с некоторыми вспомогательными параметрами, вы получите именно те результаты, которые вам нужны...

Заметки:

  1. Если вы не уверены, какие форматы пикселей (для жизненно важных -pix_fmt Настройки FFmpeg) поддерживаются вашей копией FFmpeg и libx265, следующая команда покажет детали:

     ffmpeg -h encoder=libx265 2>/dev/null | grep pixel 
    
  2. Руководство по кодированию FFmpeg и H.265: Базовая информация о кодировании HEVC с помощью FFmpeg, но не о 8|10|12-битном кодировании, хотя...

  3. Zesty Zapus (17.04) имеет чуть более старый, но полностью настроенный x265:

      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:~$ 
    

    и, следовательно, может кодировать до всех 3 возможных битовых глубин...

Другие вопросы по тегам