前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >播放器基础--组成模块

播放器基础--组成模块

作者头像
小蚂蚁与大象
发布2020-06-09 08:09:34
5280
发布2020-06-09 08:09:34
举报

一个播放器无论结构逻辑多么复杂, 都可以分成以下几部分: src, demux,decode, sink

  • src 是指媒体数据输入源, 可以是磁盘上的文件或网络流等
  • demux 是指解封装. 媒体文件和网络流是将音视频压缩编码后和其他数据一起打包 传输的. 解封装即为上述的逆过程,将音视频流都分离处理.
  • decode 是指解码. 原始的音视频数据是很大的,无论是网络传输还是作为文件保存起来,都需要对音视频raw data进行编码.解码是还原出原始数据,用于最后的显示播放
  • sink 指音视频数据的终点. 比如视频数据可以是视频渲染显示模块, 音频数据可以是声卡. 广义来讲sink不仅仅指最终显示播放模块,也可以是网络接口, 其他图像处理功能等.

Diagram1.png

对于以上几个模块来说, 视频解码和视频渲染是比较耗时, 如果是网络流,网络的速度会影响到视频数据的接收.为了能保证视频播放的流畅性,各模块之间一般会添加数据缓冲区.

播放器缓冲结构.png

这里src并未画出缓冲区,因为对于本地文件来说是不需缓冲;对于网络流,缓冲的策略与后面的会有点不同,而且一般开源的框架会帮我们实现.对于后面两个数据buffer是需要我们自己实现控制的.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档