您当前的位置: 首页 >  架构

令狐掌门

暂无认证

  • 2浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ffplay源码分析(一):代码架构简述

令狐掌门 发布时间:2019-12-08 15:14:35 ,浏览量:2

        ffplay是用ffmpeg代码实现的一个播放器,可以播放本地文件,也可以播放网络资源,与vlc播放器功能类似。把ffmpeg环境配好后,在资源所在的目录,打开控制台输入ffplay [资源名字]即可播放该媒体资源,ffplay源码只有3800多行,C工程,音视频显示渲染是用的SDL库。下载ffmpeg源码后,找到ffplay.c,这既是ffplay播放器的全部代码。我用的是ffmpeg版本 4.2.1的源码。

        在视频文件的播过中,一般要涉及到文件读取、解封装、解码、音视频输出、音视频同步等技术。比较完整的流程如下图:

img

        在这个流程中,主要有几个线程:

(1)读线程。读取文件、解封装

(2)音频解码线程。解码音频压缩数据为PCM数据。

(3)视频解码线程。解码视频压缩数据为图像数据。

(4)音频输出线程。基于SDL播放,该线程实际上是SDL的内部线程。

(5)视频输出线程。基于SDL播放,该线程为程序主线程。

       由于存在多个线程,所以线程间的数据传递用到了多线程安全的队列,有FrameQueue和Pac

关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0718s