发布时间:2026-07-21阅读(1)
背景说明
FFmpeg是一个开源,免费,跨平台的视频和音频流方案,它提供了一套完整的录制、转换以及流化音视频的解决方案。而ffplay是有ffmpeg官方提供的一个基于ffmpeg的简单播放器。学习ffplay对于播放器流程、ffmpeg的调用等等是一个非常好的例子。本文就是对ffplay的一个基本的流程剖析,很多细节内容还需要继续钻研。
注:本文师基于ffmpeg-2.0版本进行分析,具体代码行还请对号入座,谢谢!
主框架流程
下图是一个使用“gcc eygpt graphviz 手工调整”生成的一个ffplay函数基本调用关系图,其中只保留了视频部分,去除了音频处理、字幕处理以及一些细节处理部分。

注:图中的数字表示了播放中的一次基本调用流程,X?序号表示退出流程。
从上图中我们可以了解到以下几种信息:
下面将对三个线程分别加以详细描述。
read_thread线程
从read_thread开始说起而不是从main线程,主要原因是考虑按照视频数据转换的方式比较好理解。
read_thread的创建是在main-->stream_open函数中:
Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图