You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用FFmpeg创建自定义隔行H264码流(含2:2、3:2 pulldown等模式)

隔行H264码流生成的补充实现方案
  • 2:2隔行、3:2 pulldown模式实现
    • 直接通过libx264私有参数配置,无需手动处理场序逻辑:给AVCodecContext.priv_data传入参数,interlaced=tff/interlaced=bff指定顶场/底场优先,pulldown=32直接开启标准3:2 pulldown模式,2:2隔行仅需设置interlaced=1即可。
    • 自定义pulldown逻辑的场景下,在送入编码器前给每个AVFrame的repeat_pict字段赋值:3:2模式下按0、0、1、0、1的顺序循环给帧赋值,即可实现3个逐行帧转换为5场的3:2下拉输出。
  • 混合MBAFF/PAFF模式实现
    • 除已有的AV_CODEC_FLAG_INTERLACED_DCT标志外,额外开启AV_CODEC_FLAG_INTERLACED_ME标志启用隔行运动估计,可大幅提升隔行编码质量。
    • 实现帧级自适应PAFF/逐行混合编码时,给每个输入AVFrame设置interlaced_frame字段:值为1时当前帧按隔行编码,值为0时按逐行编码,编码器会自动切换编码模式,无需手动拆分场,可搭配AV_CODEC_FLAG_CLOSED_GOP标志保证GOP结构合规。
    • 纯MBAFF宏块级自适应模式,除通用参数外,给x264私有参数传入mb-aff=1,强制开启宏块级场帧自适应编码,比PAFF模式压缩效率高10%~15%。
  • 完全自定义隔行码流实现
    • 若需要自主控制所有码流语法结构,可直接操作H264语法元素:将SPS中的frame_mbs_only_flag设为0开启隔行支持,mb_adaptive_frame_field_flag设为1开启MBAFF支持,自行组装slice头的field_pic_flag、bottom_field_flag字段控制每场编码参数,最终把组装好的NALU写入输出文件即可,不依赖编码器内置的隔行封装逻辑。
官方文档获取路径
  • FFmpeg API相关说明:可直接查看FFmpeg源码中libavcodec/avcodec.h的头文件注释、doc/APIchanges文件,其中包含AVCodecContext、AVFrame所有隔行相关字段的定义和使用说明。
  • libx264参数说明:查看x264源码目录下的doc/x264_encoder.txt文件,包含所有隔行、pulldown相关参数的详细配置规则。
  • 码流语法规范:查阅ITU-T H.264标准文档第7章(语法语义)、第11章(隔行编码工具),可获取所有隔行H264码流的语法字段要求。

内容的提问来源于stack exchange,提问作者jinfeng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 13:54:08