使用 ffmpeg 设置 libx265 的配置文件级别

使用 ffmpeg 设置 libx265 的配置文件级别

我正在尝试使用 ffmpeg 将 libx265 的配置文件级别设置为 mainstillpicture。但我似乎无法做到这一点。我基本上是尝试将每个帧编码为帧内编码(仅空间编码),而不进行时间编码。

我尝试过以下命令

ffmpeg -f rawvideo -vcodec rawvideo -s 3840x2160 -r 30 -pix_fmt yuv420p -i <input_filename> -c:v libx265 -b:v 45000k -preset veryslow -profile:v mainstillpicture <output_filename>

ffmpeg -f rawvideo -vcodec rawvideo -s 3840x2160 -r 30 -pix_fmt yuv420p -i <input_filename> -c:v libx265 -b:v 45000k -preset veryslow -profile:v 3 <output_filename>

答案1

虽然我不知道如何使用 ffmpeg 设置配置文件,但这是将配置文件设置为主静止图像时的 x265 CLI 代码:

param->maxNumReferences = 1;

/* The bitstream shall contain only one picture (we do not enforce this) */
/* just in case the user gives us more than one picture: */
param->keyframeMax = 1;
param->bOpenGOP = 0;
param->bRepeatHeaders = 1;
param->lookaheadDepth = 0;
param->bframes = 0;
param->scenecutThreshold = 0;
param->bFrameAdaptive = 0;
param->rc.cuTree = 0;
param->bEnableWeightedPred = 0;
param->bEnableWeightedBiPred = 0

因此你也许可以做这样的事情:

ffmpeg -f rawvideo -vcodec rawvideo -s 3840x2160 -r 30 -pix_fmt yuv420p -i <input_filename> -c:v libx265 -b:v 45000k -preset veryslow -x265-params keyint=1:ref=1:no-open-gop=1:weightp=0:weightb=0:cutree=0:rc-lookahead=0:bframes=0:scenecut=0:b-adapt=0:repeat-headers=1 <output_filename>

答案2

如果--total-frames为 1,则将发出静态图像变体信号,但此参数并不总是由应用程序设置,特别是当 CLI 使用 stdin 流或第三方应用程序使用 libx265 时。

命令行选项 — x265 文档

因此设置选项-x265-params total-frames=1

相关内容