如何设置带有libx264、I、P、B顺序的ffmpeg选项



我正在寻找一个带有libx264的ffmpeg选项。我想操作它,就像一个固定帧类型的硬件编码器。

ibbpbbpbbpbbb。。ibbpbbpbbpbb。。IBBPBBP。。。

请给我一个建议。

#!/bin/bash
INFILE=$1
IFILE=$1.ts
OPT_CRF="-g 120 -c:v libx264 -crf 18 -bf 2"
VAL_CBR="20000k"
OPT_COMMON="-c:v libx264 -b:v $VAL_CBR -minrate $VAL_CBR -maxrate $VAL_CBR -g 60"
ffmpeg -i $IFILE -vf crop=1920:1088:0:16 $OPT_COMMON -acodec copy ${INFILE}.1.ts
ffmpeg -i $IFILE -vf crop=1920:1088:1920:16 $OPT_COMMON -an ${INFILE}.2.ts
ffmpeg -i $IFILE -vf crop=1920:1088:0:1104 $OPT_COMMON -an ${INFILE}.3.ts
ffmpeg -i $IFILE -vf crop=1920:1088:1920:1104 $OPT_COMMON -an ${INFILE}.4.ts

如果你想强制固定的p/B模式,你应该禁用B帧自适应算法,并使用老式全局选项指定最大连续B帧数,例如PBBPBBPBBP的"-B_strategy 0-bf 2"。。。图案如果您还想要固定的I帧间隔,则还需要禁用场景检测算法,例如"-sc_threshold 0-g 50"用于I帧之间的固定50帧间隔。有了足够新的ffmpeg,您还可以使用私人libx264选项,使用-x264opts或-x264-params-params。

因此,对于完全固定的帧类型模式,您可以使用以下任何命令行(它们应该相等):

ffmpeg -i $INFILE -c:v libx264 -b:v $BITRATE -sc_threshold 0 -g 50 -b_strategy 0 -bf 2 $OUTFILE

ffmpeg -i $INFILE -c:v libx264 -b:v $BITRATE -x264-params scenecut=0:keyint=50:b-adapt=0:bframes=2 $OUTFILE

最新更新