音视频流::ffplay分析
来源:互联网 发布:都市淘宝网 编辑:程序博客网 时间:2024/05/29 19:50
以前用过qt4+mplayer来用过一个播放器。感觉只是加个外壳,没什么意思。我同学还跟我说,mplayer不是那么容易做的。
直到现在,我还记住这句话。
那时,我们一起学linux,感觉能用qt做个二次开发已经不错。
直到现在,我真正接触ffmpeg,sdl,OSS,OpenGL。我才感觉到,原来开发一款播放器是这么有趣。
在这里,我想整理一下思路,因为确实遇到了不少问题。
播放器的一般流程(转自网上资料)
1. 输入 : 从文件或网络等读取原数据,如 x.avi, x.mov, rtsp://xxx, 对原数据进行解析,比如文件,首先要分析文件格式,从文件中取得音视频编码参数,视频时间长度等信息,然后要从其中取出音频编码数据和视频编码数据送到解码部分,这里暂称这种编码源数据块为 packet。
2. 解码 : 初始化时,利用输入端从源数据中取得的信息调用不同的解码库初始化;然后接收输入端传送来的音视频编码数据,分别进行音频解码和视频解码,视频解码出来的 数据一般是 YUV 或 RGB 数据,这里暂称为 picture, 音频解码出来的数据是采样数据,是声卡可以播放的数据,这里暂称为 sample。 解码所得的数据接下来送到输出部分。
3. 输出 : 接收解码部分送来的 picture 和 sample 并显示。 视频显示一般使用某个图形库,如 SDL, Xlib, DirectDraw, OpengGL, FrameBuffer等, 音频输出是把 sample 写入系统的音频驱动,由音频驱动送入声卡播放, 可用的音频输出有 ALSA, OSS, SDL, DirectSound, WaveOut等。
ffplay流程图大概如下:
图一
图二
由些可见,ffplay实现方案为
一个packet队列,一个picture队列
一个input(主)线程,一个decode线程,两个output(音视频输出)线程
- 音视频流::ffplay分析
- 音视频流::ffplay分析
- 音视频流::ffplay::tutorial01
- 音视频流::ffplay::tutorial02
- 音视频流::ffplay::tutorial03
- 音视频流::ffplay::tutorial04
- 音视频流::ffplay::tutorial05 .
- ffplay的音视频同步分析
- ffplay的音视频同步分析
- ffplay的音视频同步分析
- ffplay的音视频同步分析
- ffplay的音视频同步分析
- ffplay的音视频同步分析
- ffplay的音视频同步分析
- ffplay音视频同步分析(一)
- ffplay音视频同步分析(一)
- ffmpeg 2.3版本, 关于ffplay音视频同步的分析
- ffmpeg 2.3版本, 关于ffplay音视频同步的分析
- 安装adt时 requires 'org.eclipse.cdt.feature.group 0.0.0' but it could not be found
- MSDN for vs2008 无法显示microsoft文档资源管理器
- 聚类算法之K-mean算法
- 关于ffmpeg 的总结
- oracle数据库和数据库实例
- 音视频流::ffplay分析
- 问题九十四: An Easy Task
- 舒迅:产品经理必读的九步法
- 安装mantis及eclipse插件mylyn-mantis手记
- unity制作连连看小教程
- Qt中子窗口访问父窗口的成员变量
- 研发管理:与员工一对一交流的执行与反思
- 使用Eclipse调试Java程序的10个技巧
- 自适应哈夫曼编码