FFmpeg 使用

FFmpeg 解码大致流程

注册所有容器格式和CODEC: av_register_all()

打开文件: av_open_input_file()

从文件中提取流信息: av_find_stream_info()

穷举所有的流,查找其中种类为CODEC_TYPE_VIDEO

查找对应的解码器: avcodec_find_decoder()

打开编解码器: avcodec_open()

为解码帧分配内存: avcodec_alloc_frame()

不停地从码流中提取中帧数据: av_read_frame()

判断帧的类型,对于视频帧调用: avcodec_decode_video()

解码完后,释放解码器: avcodec_close()

关闭输入文件:av_close_input_file()

引用自 https://www.jianshu.com/p/c2bc1cd08ca8


录制视频大致流程

1.avformat_open_input():打开输入文件,初始化输入视频码流的AVFormatContext。

2.av_read_frame():从输入文件中读取一个AVPacket。

3.avformat_alloc_output_context2():初始化输出视频码流的AVFormatContext。

4.avformat_new_stream():创建输出码流的AVStream。

avcodec_copy_context():拷贝输入视频码流的AVCodecContex的数值t到输出视频的AVCodecContext。

5.avio_open():打开输出文件。

6.avformat_write_header():写文件头(对于某些没有文件头的封装格式,不需要此函数。比如说MPEG2TS)。

7.av_interleaved_write_frame():将AVPacket(存储视频压缩码流数据)写入文件。

8.av_write_trailer():写文件尾(对于某些没有文件头的封装格式,不需要此函数。比如说MPEG2TS)。

引用自 https://www.cnblogs.com/Ghosgt/p/7090225.html


demo 链接:  https://github.com/licl19/FFmpegDemo.git

原地址  : http://blog.csdn.net/vkooy/article/details/65442632

你可能感兴趣的:(FFmpeg 使用)