FFmpeg写入输出文件

本文详细阐述如何利用FFmpeg的API进行文件输出,包括avformat_alloc_output_context2、avformat_new_stream、avcodec_parameters_from_context、avio_open2、avformat_write_header和av_interleaved_write_frame等关键步骤。特别强调avformat_write_header必须在所有流初始化完成后调用,并解释了时间基转换的重要性。代码示例展示了从编码器输出AVPacket到写入文件的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文介绍如何使用 FFmpeg 的 API 函数 avio_open2 打开一个输出文件,然后用 av_interleaved_write_frame 来把编码器输出的 AVPacket 保存进去文件。 本文的代码下载地址:百度网盘,提取码:hpdo

与 输出 相关的 API 函数如下: 1,avformat_alloc_output_context2,申请一个输出文件上下文,这个函数会生成 AVFormatContext 2,avformat_new_stream,往容器增加一个输出流,可以是音频流,或者视频流,或者一些其他的数据流。 3,avcodec_parameters_from_context,把 AVCodecContext 里面的 编解码参数 复制到输出流的 AVCodecParameters 。 4,avio_open2,正式打开输出文件。 5,avformat_write_header,往输出文件写入头信息。 6,av_interleaved_write_frame,把 AVPacket 写入输出文件。


要特别注意 avformat_write_header 这个函数,必须是容器里面的所有流都初始化完成了,才能调 avformat_write_header。 本文的代码只有一个视频流,所以比较简单,但是如果同时有音频流跟视频流,那就必须等音频也解码出 AVFrame,音频流初始化完成才能 执行 avformat_write_header。 输出流的初始化主要通

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值