首发地址,会更错
FFmpeg解封装流程

其中,AVFormatContext、AVPacket等重要的结构体请看:FFmpeg重要结构体(转自雷神) 。
(1)avformat_open_input
创建并初始化AVFormatContext结构体,并把输入文件信息赋值到AVFormatContext中。
(2)avformat_find_stream_info
检索流信息,这个过程会检查输入流中信息是否存在异常,如:AVCodecContext中的extradata是否存在。
(3)av_read_frame
从文件中读取每一帧的数据到AVPacket中,得到解封装之前的数据。有些(很多吧?)解封装后的数据输出到一个文件中并不支持播放,如FLV。因为FLV解封装后的数据并不是完整一个H264格式视频数据和AAC格式音频数据,需要重新进行封装后再输出到文件中才能正常播放。(或者使用FFmpeg中的工具)
(4)avformat_close_input
关闭并释放资源。
例子
参考官方例子doc/examples/demuxing_decoding.c。
/**
* @author 秦城季
* @email xhunmon@126.com
* @Blog https://qincji.gitee.io
* @date 2021/01/03
* description: FFmpeg Demuxing(解封装) <br>
*/
extern "C" {
#include <libavformat/avformat.h>
}
int main() {
const char *src_filename = "source/Kobe.flv";
const char *out_filename_v = "output/kobe3.h264";//Output file URL
const char *out_filename_a

本文详细介绍了使用FFmpeg进行媒体文件解封装的过程,包括创建并初始化AVFormatContext、检索流信息、读取每一帧数据及关闭资源等步骤。通过具体代码示例展示了如何将FLV格式文件解封装为H264视频流和AAC音频流。
最低0.47元/天 解锁文章
2932

被折叠的 条评论
为什么被折叠?



