【问题标题】:Generating all P frame intra refresh H264 with x264使用 x264 生成所有 P 帧帧内刷新 H264
【发布时间】:2021-05-06 08:00:00
【问题描述】:

我正在尝试使用 ffmpeg 和 x264 生成只有 P 帧的周期性帧内刷新 h264 流,但我总​​是在开始时得到一个 I 帧。

x264 有没有办法创建仅 P 帧的流?

我正在使用的命令:

ffmpeg -f lavfi -re -i testsrc=duration=5:size=1920x1080:rate=30000/1001 -s 1920x1080 -pix_fmt yuv420p -f rawvideo out.yuv
x264 --input-res 1920x1080 --intra-refresh out.yuv --b-pyramid none -b 0 --ref 0  -o out.264

验证:

    ffprobe -show_frames out.264 |grep pict_type=I

或者只是查看 x264 输出,例如

yuv [info]: 1920x1080p 0:0 @ 25/1 fps (cfr)
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
x264 [info]: profile High, level 4.0, 4:2:0, 8-bit
x264 [info]: frame I:1     Avg QP:13.63  size: 12189
x264 [info]: frame P:149   Avg QP:13.59  size:   874
x264 [info]: mb I  I16..4: 78.7% 18.6%  2.7%
x264 [info]: mb P  I16..4:  2.3%  0.1%  0.0%  P16..4:  3.2%  0.3%  0.0%  0.0%  0.0%    skip:94.1%
x264 [info]: 8x8 transform intra:7.6% inter:91.5%
x264 [info]: coded y,uvDC,uvAC intra: 1.3% 18.9% 3.6% inter: 0.1% 1.1% 0.1%
x264 [info]: i16 v,h,dc,p: 86%  6%  1%  7%
x264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 42% 22% 36%  0%  0%  0%  0%  0%  0%
x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 30% 32%  3%  1%  3%  0%  3%  0%
x264 [info]: i8c dc,h,v,p: 28%  7% 55%  9%
x264 [info]: Weighted P-Frames: Y:0.0% UV:0.0%
x264 [info]: kb/s:189.96

encoded 150 frames, 66.76 fps, 189.96 kb/s

【问题讨论】:

  • 您是否希望第一帧依赖于未来的帧?
  • 如果您的意思是解码第一个完整帧,那么可以。我尝试重新创建的样本来自广播提要,看起来它完全依赖于内部 P 切片和恢复点,然后才能提供完整的帧
  • 如果你从中间而不是从头开始解码你的流,那么它也不会有 IDR 帧(比如在广播提要示例中,你也在流的中间连接) .
  • x264 将发出以 I-slice 开头的输出。我建议您使用 ffmpeg 流式复制输出,但设置 -ss X 和 -copyinkf 以便不复制 I 帧。

标签: ffmpeg x264 libx264


【解决方案1】:

感谢@Gyan 和@nobody555 这有效:

ffmpeg -f lavfi -re -i testsrc=duration=60:size=1920x1080:rate=30000/1001 -s 1920x1080 -pix_fmt yuv420p -f rawvideo -|x264 --input-res 1920x1080 --intra-refresh -o - -|ffmpeg -r "30000/1001" -fflags +genpts -i - -c copy -movflags frag_keyframe+empty_moov -f mp4 -|ffmpeg -i - -ss 200ms -c copy -f mpegts out.ts -y

【讨论】:

    猜你喜欢
    • 2017-09-10
    • 2018-06-09
    • 2017-02-19
    • 2014-05-14
    • 2021-08-16
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    相关资源
    最近更新 更多