FFmpeg 的封装转换(转封装)功能主要基于 AVFormat 模块,通过 libavformat 库进行 Mux 和 Demux 操作。我们知道,多媒体文件的格式多种多样,在 FFmpeg 的实现中,这些格式中很多操作参数是公用的,而其他特定参数使用上述命令即可查询。下面详细介绍一下这些与容器格式相关的公用参数。
通过查看 ffmpeg --help full
信息,找到 AVFormatContext 参数部分,在这个参数下面的所有参数均为封装转换可使用的参数,如下表所示。
ffmpeg AVFormatContext 主要参数帮助
参数 | 类型 | 说明 |
---|---|---|
avioflags | 标记 | format 的缓冲设置,默认为 0,即使用缓冲的方式;direct:无缓冲状态。 |
probesize | 整数 | 在进行媒体数据处理前获得文件内容的大小,可用在预读取文件头时提高速度,也可以设置足够大的值来读取足够多的音视频数据信息。 |
fflags | 标记 | flush_packets:立即将 packets 数据刷新写入文件中。 genpts:输出时按照正常规则产生pts。 nofillin:不要通过计算的方式填写 AVPacket 缺失的值。 igndts:忽略 dts。 discardcorrupt:丢弃损坏的帧。 sortdts:尝试以 dts 的顺序输出。 keepside:不合并数据。 fastseek:快速 seek (定位)操作,但是不够精确。 latm:设置 RTP MP4_LATM 生效。 nobuffer:直接读取或写出,不存入 buffer,用于直播采集时可降低延迟。 bitexact:不写入随机或者不稳定的数据。 |
seek2any | 整数 | 支持随意 seek ,这个 seek 不以 keyframe 为参考。 |
analyzeduration | 整数 | 指定解析媒体需要的音视频的时长,这里设置的值越大,解析的音视频流信息越准。如果为了播放达到秒开效果,这个值可以设置得小一点,但是获得的流信息会有不准确的问题。 |
codec_whitelist | 列表 | 设置可以解析的 Codec 的白名单。 |
format_whitelist | 列表 | 设置可以解析的 Format 的白名单。 |
output_ts_offset | 整数 | 设置输出文件的起始时间。 |
以上这些就是通用的封装、解封装操作的参数说明,感谢观看学习。