本文主要是介绍音视频5、libavformat-2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
4、封装
Muxers (封装器)以 AVPacket 的形式获取编码数据并将其写入到指定容器格式的文件或输出字节流中。
muxing过程中最重要的API函数有:
avformat_write_header() 用于写入文件header;
av_write_frame() / av_interleaved_write_frame() 用于写入packets;
av_write_trailer() 用于结束文件输出。
muxing 流程的第一步:调用者必须调用 avformat_alloc_context() 来创建一个 muxing context。然后去设置 context 的各个字段,以便对输出做相关设置:
AVFormatContext.oformat 必须被设置,它指定我们要使用的封装格式。
除非指定的 format 是 AVFMT_NOFILE 类型,否则AVFormatContext.pb也必须设置,它是一个打开的 I/O context,可以由 avio_open2() 打开或者由用户自定义。
除非指定的 format 是 AVFMT_NOSTREAMS 类型,否则至少要设置一个 stream。stream 由函数 avformat_new_stream() 创建。调用者应该填充 AVStream.codecpar(stream codec parameters)字段信息,用于指定 codec 相关的信息:AVCodecParameters.codec_type 指定编解码器类别ÿ
这篇关于音视频5、libavformat-2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!