admin 管理员组

文章数量: 1184232

文章目录

    • 前言
    • ffplay 简介
    • ffplay中的线程
      • 主线程
      • 解复用线程 read_thread
      • 视频解码线程 video_thread
      • 音频解码线程 audio_thread
      • 音频播放线程
    • 总结
        • 技术参考


前言

ffplay 是入门播放器的非常合适的一个开源项目,支持本地视频文件播放,也支持网络流的播放。通过对 ffplay 的学习可以知道一个播放器如何工作的。这篇文章先整体介绍一下 ffplay 播放器的整体架构。从整体上对播放器的设计有个大概的了解。ijkplayer播放器内核是基于ffplay开发的,所以掌握 ffplay 对于开发播放器是非常有帮助的。

ffplay 简介

ffplay 是 FFmpeg 工程自带的简单播放器,使用 FFmpeg 提供的解码器和SDL库进行视频播放。整个源码ffplay.c只有3k多行。麻雀虽小五脏俱全。在视频文件的播过中,一般要涉及到文件读取、解封装、视频解码、音频解码、视频渲染、音频播放、音视频同步等技术。

下面贴一张 ffplay的整体架构图

ffplay中的线程

ffplay 进程中一个有以下 5个线程。

主线程

ffplay 主线程负责键盘消息处理以及图像渲染,并且创建解复用线程 read_thread 。ffplay的渲染使用sdl库进行渲染。

ffplay -h 查看使用手册
ffplay支持的键盘消息

While playing:
q

本文标签: 播放器 架构 ffplay