web-dev-qa-db-ja.com

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>
6
Bubba

私は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>
7
Ely

--total-framesが1の場合、静止画バリアントが通知されますが、このパラメータはアプリケーションによって常に設定されるとは限りません。特に、CLIがstdinストリーミングを使用する場合や、libx265がサードパーティアプリケーションによって使用される場合はそうではありません。

コマンドラインオプション— x265ドキュメント から。

したがって、オプション-x265-params total-frames=1を設定します。

0
user3876435