ffmpeg + SDL 系列5 Media 播放器系统设计
来源:互联网 发布:淘宝首页客服模块 编辑:程序博客网 时间:2024/06/18 07:25
接下来探讨Media播放器的架构设计
1 从数据流的角度来看
File -> UFS API -> | |
Network -> UDP Packet -> | Media Demux | -> Decoder -> Audio/Video Render Devic
Network -> HTTP -> | |
Network -> RTP -> | |
可见, 我们要考虑构建3个系统
系统1: Demux
功能定位: 从source端读取数据,并缓存,进行协议解析(Demux),
生成Decoder系统需要的Payload Packet队列
系统2: Decoer
对数据进行逆向解码,生成Render端格式需要的数据。
系统3: 硬件系统
各种视频,音频输出设备,最常见的声卡,显卡。
系统1 ~3在嵌入式系统通常是芯片公司负责硬件开发,并提供API,
开发者做的事情是设置参数和考虑各种回调函数,异步事件处理,共享内存的分配。
接下来主要考虑系统1和2由软件处理的情况下,如何设计系统。
2 Task设计
考虑到交互性
设计如下Task:
Task 1: UI 主Task,负责与用户交互,并将用户请求转发到MediaCtl
Task 2: MediaCtrl, 负责控制Demux线程和Decoder线程,并处理底层SDL来的硬件Event
Task 3: Demux 线程,负责按协议解析输入数据
Task 4: 解码线程,负责解码数据。
Task 5: 系统监听线程,负责接收SDL来的各种事件,并转发到上面线程。
3 接口设计
按照数据流,依次设计如下接口
ByteReader -》 FileReader/ HttpReader / UDPReader/ RtpReader
CachedBuffer
MediaDemux -> AsfDemux / WavDemux / Mp3Demux
RingBuffer
PacketQueue
StreamInfo
MediaDecoder -> AudioDecoder / VideoDecoer
AudioSample
AudioRender -> AudioRenderOSS / AudioRenderSDL / AudioRenderALSA
VideoFrame
VideoRender -> VideoRenderSDL / VideoRenderDirectFB
MediaCtrl -> AsfCtrl / Mp3Ctrl /Mp4Ctrl
1 从数据流的角度来看
File -> UFS API -> | |
Network -> UDP Packet -> | Media Demux | -> Decoder -> Audio/Video Render Devic
Network -> HTTP -> | |
Network -> RTP -> | |
可见, 我们要考虑构建3个系统
系统1: Demux
功能定位: 从source端读取数据,并缓存,进行协议解析(Demux),
生成Decoder系统需要的Payload Packet队列
系统2: Decoer
对数据进行逆向解码,生成Render端格式需要的数据。
系统3: 硬件系统
各种视频,音频输出设备,最常见的声卡,显卡。
系统1 ~3在嵌入式系统通常是芯片公司负责硬件开发,并提供API,
开发者做的事情是设置参数和考虑各种回调函数,异步事件处理,共享内存的分配。
接下来主要考虑系统1和2由软件处理的情况下,如何设计系统。
2 Task设计
考虑到交互性
设计如下Task:
Task 1: UI 主Task,负责与用户交互,并将用户请求转发到MediaCtl
Task 2: MediaCtrl, 负责控制Demux线程和Decoder线程,并处理底层SDL来的硬件Event
Task 3: Demux 线程,负责按协议解析输入数据
Task 4: 解码线程,负责解码数据。
Task 5: 系统监听线程,负责接收SDL来的各种事件,并转发到上面线程。
3 接口设计
按照数据流,依次设计如下接口
ByteReader -》 FileReader/ HttpReader / UDPReader/ RtpReader
CachedBuffer
MediaDemux -> AsfDemux / WavDemux / Mp3Demux
RingBuffer
PacketQueue
StreamInfo
MediaDecoder -> AudioDecoder / VideoDecoer
AudioSample
AudioRender -> AudioRenderOSS / AudioRenderSDL / AudioRenderALSA
VideoFrame
VideoRender -> VideoRenderSDL / VideoRenderDirectFB
MediaCtrl -> AsfCtrl / Mp3Ctrl /Mp4Ctrl
- ffmpeg + SDL 系列5 Media 播放器系统设计
- FFMPEG+SDL简单播放器
- FFMPEG+SDL简单播放器
- ffmpeg+SDl+ 播放器 -01
- ffmpeg+sdl音频播放器
- sdl+ffmpeg视频播放器
- FFMpeg+SDL多线程播放器
- ffmpeg + sdl 视频播放器
- Android播放器:ffmpeg+SDL
- 不用 SDL 的QT+FFMPEG 播放器
- 使用ffmpeg+SDL的简单播放器
- 播放器(一)-FFMPEG-SDL-MFC-本地文件
- sdl+ffmpeg视频播放器02
- 播放器(一)-FFMPEG-SDL-MFC-本地文件
- 视频播放器FFMPEG-SDL-MFC
- ffmpeg SDL播放视频
- ffmpeg+sdl播放类
- FFMPEG + SDL音频播放分析
- uva 12050 - Palindrome Numbers
- Android studio 解决Android Library Project jar包重复导致的问题
- 2014美团网校园招聘研发类笔试(哈尔滨站)
- 深入浅出Spring
- 浅谈壳的加载步骤及手动脱壳
- ffmpeg + SDL 系列5 Media 播放器系统设计
- synchronized详解
- [每天一个Linux小技巧] 内核Kconfig cscope
- 64位ubuntu安装32lib库,兼容32的软件,比如32的navicat for mysql
- 百度2014校园招聘-研发工程师笔试题(济南站)
- 网络游戏数据加密技术
- 数据库连接池
- 读《高效能程序员的修炼》
- C语言写的DDOS工具