在 FFmpeg 编码中为 HEVC 设置位深度?

在 FFmpeg 编码中为 HEVC 设置位深度?

FFmpeg 现在支持x265 的 10 位和 12 位编码,但我找不到适合以这些位深度对它们进行编码的命令行选项。

有人可以指定这些选项吗?

答案1

如果你有一个适当配置FFmpeg 和 x265 的现代版本(Zesty Zapus 17.04 下的存储库 FFmpeg 属于此类别),您会发现使用 8、10 和 12 位的编码相当简单。

我在下面为每个命令行举例说明:

1. 使用 FFmpeg 进行 8bit HEVC 编码...

检查你安装的 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 位编码功能。针对此版本的 x265 编译的 FFmpeg 安装可以使用以下命令生成不错的 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. 使用 FFmpeg 进行 10bit HEVC 编码...

检查你安装的 x265 版本的能力10bit 编码如下:

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 位编码功能。针对此版本的 x265 编译的 FFmpeg 安装可以使用以下命令生成不错的 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. 使用 FFmpeg 进行 12bit HEVC 编码...

检查你安装的 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 位编码功能。针对此版本的 x265 编译的 FFmpeg 安装可以使用以下命令生成不错的 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_fmtFFmpeg 设置)受支持你的FFmpeg 和 libx265 的副本以下命令将显示详细信息:

     ffmpeg -h encoder=libx265 2>/dev/null | grep pixel 
    
  2. FFmpeg 和 H.265 编码指南:关于使用 FFmpeg 进行 HEVC 编码的基本信息,但没有关于 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 种可能的位深度......

相关内容