Demuxer解复用原理
本章主要讲解 FFmpeg 里面各种 Demuxer 解复用器的代码实现,例如 flv
,mp4
,rtmp
,等等。
虽然 FFmpeg 支持各种输入格式,但是他们内部的实现都不一样。不过在 FFmpeg 对这些格式做了统一的封装的,对上层提供了一样的 API 行数。
所以无论是哪种格式,你都能用下面的流程来对其进行 Demuxer(解复用)。
avformat_alloc_context()
申请容器上下文的实例avformat_open_input()
打开输入源avformat_find_stream_info()
提取流的信息。av_read_frame()
读取AVPacket
,这个AVPacket
后面会送给解码器。
TODO:上面这些东西,应该加上超链接的。
本章主要讲解上面这些统一 API 函数的内部实现,以及 flv
,mp4
等等 各个 Demuxer 的内部实现。
通过本章的内容,你最终可以自己实现一个 Demuxer
。
本章节大部分的文章是基于下面这条命令讲解的,所以你可以参考《用Ubuntu18与clion调试FFmpeg》搭建好调试环境,单步调试来理解本章的内容。
ffmpeg -i juren-30s.mp4 out.flv -y