我正在寻找带有libx264的ffmpeg选项。 我想操作它,就像硬件编码器一样,有固定帧类型的订购。
... IBBPBBPBBPBBPBB..IBBPBBPBBPBBP..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
答案 0 :(得分:3)
如果要强制固定P / B模式,则应禁用B帧自适应算法,并使用旧式全局选项指定最大连续B帧数,例如PBBPBBBBP的“-b_strategy 0 -bf 2”。 ..模式。如果您还需要固定的I帧间隔,则还需要禁用场景检测算法,例如“-sc_threshold 0 -g 50”,用于I帧之间固定的50帧间隔。使用足够新的ffmpeg,您还可以使用-x264opts或-x264-params params使用私有libx264选项。
因此,对于完全固定的帧类型模式,您可以使用以下任何命令行(它们应该相等):
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