理解播放器的基本框架
熟悉常用的结构体
AVFormatContext
AVCodecContext
AVCodec
AVFrame
AVPacket
AVStream
理解基本的同步原理
开发准备
开发环境
Windows7
QT 5.9.8 + Creator 4.4.1
第三方库
FFMPEG 用来读取码流以及解码
SDL2 用来显示画面
框架
框图如图所示
![](https://i-blog.csdnimg.cn/blog_migrate/ea48c1002c2829c22c76244080f385cc.png)
代码
线程划分
主循环读取数据
音频线程解码并播放声音
视频线程解码并显示视频
文件划分
main.c 做初始化工作,读取码流,分发码流
audio.c 音频解码和声音播放
AudioInit 初始化音频
AudioClose 释放资源
AudioDecodeThread 音频解码和播放线程
AudioPlay 播放声音
AudioPacketPush 写入未解码的音频包
AudioPacketSize 当前音频尚未解码的数据总容量
AudioSetTimeBase 音频的base time(以时钟有关系,比如TS为1/90KHZ,另一常见的为1/1000)
vidoe.c 视频解码和视频播放