Danial Behzadi Asked: 2017-06-06 21:49:24 +0800 CST2017-06-06 21:49:24 +0800 CST 2017-06-06 21:49:24 +0800 CST 在 FFmpeg 编码中为 HEVC 设置位深度? 772 FFmpeg 现在支持x265 的 10 位和 12 位编码,但我找不到合适的命令行选项来以这些位深度对它们进行编码。 有人可以指定这些选项吗? ffmpeg 1 个回答 Voted Best Answer andrew.46 2017-06-07T00:15:04+08:002017-06-07T00:15:04+08:00 如果您有适当配置的现代版本的 FFmpeg 和 x265(Zesty Zapus 17.04 下的存储库 FFmpeg 属于此类),您应该会发现使用 8、10 和 12 位的编码相当简单。 我为下面的每个示例说明了一个示例命令行: 1. 使用 FFmpeg 进行 8 位 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 的 10 位 HEVC 编码... 检查您安装的 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 位编码的功能。针对此版本的 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 的 12 位 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 再次对一些辅助参数进行实验应该会给你准确的结果...... 笔记: 如果您不确定 FFmpeg 和 libx265 的副本支持哪些像素格式(对于重要的FFmpeg设置-pix_fmt) ,以下命令将显示详细信息: ffmpeg -h encoder=libx265 2>/dev/null | grep pixel FFmpeg 和 H.265 编码指南:关于使用 FFmpeg 进行 HEVC 编码的基本信息,但没有关于 8|10|12 位编码的信息...... 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 种可能的位深度......
如果您有适当配置的现代版本的 FFmpeg 和 x265(Zesty Zapus 17.04 下的存储库 FFmpeg 属于此类),您应该会发现使用 8、10 和 12 位的编码相当简单。
我为下面的每个示例说明了一个示例命令行:
1. 使用 FFmpeg 进行 8 位 HEVC 编码...
检查您安装的 x265 版本对8 位编码的能力,如下所示:
在这里,您将看到我自己的副本具有 8|10|12 位编码的功能。针对此版本的 x265 编译的 FFmpeg 安装可以使用以下命令生成体面的 8 位编码:
您当然可以更改这些设置中的任何一个以满足您的特定需求...
2. FFmpeg 的 10 位 HEVC 编码...
检查您安装的 x265 版本对10 位编码的能力,如下所示:
在这里,您将看到我自己的副本具有 10 位编码的功能。针对此版本的 x265 编译的 FFmpeg 安装可以使用以下命令生成体面的 10 位编码:
这应该可以帮助您度过难关...
3. FFmpeg 的 12 位 HEVC 编码...
检查您安装的 x265 版本对12 位编码的能力,如下所示:
在这里,您将看到我自己的副本具有 12 位编码的功能。针对此版本的 x265 编译的 FFmpeg 安装可以使用以下命令生成体面的 12 位编码:
再次对一些辅助参数进行实验应该会给你准确的结果......
笔记:
如果您不确定 FFmpeg 和 libx265 的副本支持哪些像素格式(对于重要的FFmpeg设置
-pix_fmt
) ,以下命令将显示详细信息:FFmpeg 和 H.265 编码指南:关于使用 FFmpeg 进行 HEVC 编码的基本信息,但没有关于 8|10|12 位编码的信息......
Zesty Zapus (17.04) 有一个稍旧但配置齐全的 x265:
因此可以编码到所有 3 种可能的位深度......