AVFormatContext
2023-01-27 15:40:26 0 举报
AI智能生成
FFmpeg AVFormatContext 结构图
作者其他创作
大纲/内容
读取视频基本流程
1. 创建avformat上下文
ifmt_ctx = avformat_alloc_context();
ifmt_ctx = avformat_alloc_context();
2. 打开视频文件
avformat_open_input(&ifmt_ctx, in_filename, 0, 0);
avformat_open_input(&ifmt_ctx, in_filename, 0, 0);
3. 持续读取视频帧
while (...) {
av_read_frame(ifmt_ctx, &pkt);
...
}
while (...) {
av_read_frame(ifmt_ctx, &pkt);
...
}
4. 关闭avformat上下文
avformat_close_input(&ifmt_ctx);
avformat_close_input(&ifmt_ctx);
输出视频基本流程
1. 创建输出上下文
avformat_alloc_output_context2(&ofmt_ctx, NULL, NULL, out_filename);
avformat_alloc_output_context2(&ofmt_ctx, NULL, NULL, out_filename);
2. 写格式头部
avformat_write_header(ofmt_ctx, NULL);
avformat_write_header(ofmt_ctx, NULL);
3. 持续输出帧
while (...) {
av_interleaved_write_frame(ofmt_ctx, &pkt);
...
}
while (...) {
av_interleaved_write_frame(ofmt_ctx, &pkt);
...
}
4. 写格式尾部
av_write_trailer(ofmt_ctx);
av_write_trailer(ofmt_ctx);
5. 关闭上下文
avformat_free_context(ofmt_ctx);
avformat_free_context(ofmt_ctx);
Muxer接口
AVOutputFormat
AVOutputFormat
name
avformat_write_header()
av_write_packet()
av_write_trailer()
av_interleave_packet()
av_write_uncoded_frame()
核心成员
iformat(demuxer)
oformat(muxer)
streams
video_codec
audio_codec
subtitle_codec
常用方法
avformat_alloc_context()
avformat_alloc_output_context2()
av_dump_format()
avformat_open_input()
avformat_close_input()
avformat_find_stream_info()
av_read_frame()
avformat_write_header()
av_interleaved_write_frame()
av_write_uncoded_frame()
av_write_frame()
av_write_trailer()
Demuxer接口
AVInputFormat
AVInputFormat
name
priv_data
av_read_probe()
av_read_packet()
av_read_seek()
av_read_close()
收藏
0 条评论
下一页