欢迎来到天天文库
浏览记录
ID:14241285
大小:970.60 KB
页数:14页
时间:2018-07-27
《如何选择适合音视频播放器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、UCLoud中国云三强:www.ucloud.cn如何选择适合音视频播放器前言近年来,随着HTML5技术普及、移动设备迅猛增长和流量资费不断下降,视频已成为人们了解世界、获取知识的主要途径之一。现在音视频播放器已随处可见,但这个过程到底如何实现?播放器的原理又是什么?或者是作为生产者,应该依据哪些标准来选择适合自己的播放器?UCloud将基于多年的实践经验,为客户做出相应解答或建议。播放器功能架构首先来看常规播放器的功能架构:(图:常规播放器结构图)应用层:UI/统计/DRM(数字版权保护)/多码率/弹幕/广告等。底层:数据接收模块/解复用模块/音视频解码、滤镜、渲染模块/字幕
2、/应用层结合功能:DRM、多码率/统计等。播放器的功能比较多,本文就不再一一赘述,下面将重点讲解多媒体引擎模块。UCLoud中国云三强:www.ucloud.cn多媒体引擎作为播放器的核心部分,多媒体引擎主要负责音视频数据的加载、处理和展现。以FFmpeg为例,它的基本运作流程如下图所示:(图:多媒体播放流程图)我们详细了解一下每个环节:1.数据接收(Source)作为数据入口,这里的文件可以通过本地文件(File://协议开头)输入,也可以通过网络协议(如HTTP、RTMP、RTSP等)输入。在找到对应的传输协议之后,FFmpeg会根据协议特性与本机或服务器建立连接并获取到流
3、数据。 2.解复用(Demux)通过对文件的特征码分析,可以找到文件的封装格式,如常见的MP4、FLV、TS、AVI等。根据封装格式的标准对其拆封,可以得到编码的音视频数据,一般称之为“packet”。UCLoud中国云三强:www.ucloud.cn 3.解码(Decode)解码器初始化时,利用之前源数据分析获得的音视频信息,分别设置对应的音频解码器和视频解码器。目前互联网中比较常见的音频编码方式有AAC(AdvancedAudioCoding)、MP3,视频编码方式有H.264、H.265。对packet分别进行解码后,音频解码获得的数据是PCM(PulseCodeModu
4、lation,脉冲编码调制)采样数据,一般称为“sample”。视频解码获得的数据是一幅YUV或RGB图像数据,一般称为“picture”。 4.音视频同步(Synchronizing)音视频解码时是两个独立线程,因此获得的音视频数据是分开的,并无任何关联。理想状态下,音视频按照自己固有频率渲染输出就能达到音视频同步的效果。但是在现实中,断网、弱网、丢帧、缓冲、音视频不同的解码耗时等情况都会妨碍实现同步,很难达到预期效果,所以要保证视频内容和音频内容对得上,必须做音视频同步。 5.音视频渲染(Render)经过音视频同步调整之后,需要把sample和picture分别输送给声卡
5、和显卡,这部分工作建议由成熟的库来完成。常见的音频库有SDL、OpenAL/OpenALES、DirectSound、ALSA(AdvancedLinuxSoundArchitecture)、OSS(OpenSourceSystem)等;视频库有SDL、OpenGL/OpenGLES、DirectDraw、FrameBuffer等。 经过以上5个步骤,基本的播放流程就完成了。各平台视频技术概况要实现全平台覆盖的播放器,自然少不了技术支撑。这里主要讨论Web、Android、iOS上的音视频技术,讲述一部分音视频常用方案。UCLoud中国云三强:www.ucloud.cn一、We
6、b-HTML5技术语言:JavaScript,HTML/CSS使用环境:所有可以支持HTML5Video标签的终端浏览器(PCWindows/Mac/Linux/Unix、Android、iOS)即可播放视频,目前覆盖率已达95%。(图:Videoelement覆盖率)相关方案:1.标签UCLoud中国云三强:www.ucloud.cn从代码示例来看,HTML5的Video标签非常简单易用,controls="controls"可以使用浏览器默认的播放器UI(不同浏览器UI不一样),如果不对controls赋值,则可以通过CSS和Video消息来实现自定义UI及控
7、制。2.MSE(MediaSourceExtensions)MediaSourceExtensions(MSE)是一个主流浏览器支持的新WebAPI,而且是W3C标准,允许JavaScript动态构建和媒体流。它定义了对象,允许JavaScript传输媒体流片段到一个HTMLMediaElement。通过使用MSE,可以动态地修改媒体流而不需要任何插件。这使前端JavaScript可以做更多事情,比如可以在JavaScript进行转封装、处理,甚至转码,因此像AB
此文档下载收益归作者所有