0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

播放器的四个主要优化部分

牵手一起梦 来源:LiveVideoStack 作者:佚名 2020-06-03 15:08 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

视频体验由开始的视频清晰流畅,演变到现在的视频快速响应、即点即放、快速切换等等。基于这些优化林勇平将介绍播放器的一些技巧,使得视频体验在较少改动的情况下就能达到极致体验的效果。

本文主要分为四个部分:一是服务端优化;二是播放器优化;三是播放策略优化;四是缓存优化。将这几部分组合起来就可以保视频秒开、无缝滑动等等优化,保证在整体上进行较少改动的情况下达到一个较好的效果。

1. 服务端优化

播放器的四个主要优化部分

第一部分提到的是服务端优化,主要分为三个部分,首先是服务数据优化,即服务端数据的基础准备。在格式选择方面,有MP4、FMP4、DASH、HLS和自定义格式,对于短视频类的视频格式大部分是MP4,对于长视频类的格式可能有HLS、DASH、自定义格式。因为长文件的头是比较大的,所以一般用上面说的描述文件,或者是分段MP4及FMP4文件,使MOOV头信息变小,可以保证视频即点即开。

现有的大部分短视频使用的是MP4格式,选择MP4格式主要是文件信息头MOOV的信息应该是前移的而不是在文件末尾,所以需要整个服务端进行一遍转码。对于数目chunk而言,一个chunk可能包含几帧,如果设置不对,对于某些播放器就需要下载一个chunk才可以播放,这就需要下载很多的数据,从而影响第一段的播放或者前面的播放。很多音频特别容易出现这种情况,有些播放器中所有的帧都在一个chunk里面,这就需要下载这个chunk才能播放,就增加了等待的时间。

编码器的选择上,现在的编码器一般都是H.264或者H.265,这需要根据各家公司的选择。H.264主要是比较通用,H.265则是码率比较好。在数据和信息的预取方面,如果一个页面有很多视频的时候,当点击一个视频时,该视频里面的table等信息是可以预取的,方便后面点开播放进行前期准备。

第二是cdn的调度优化,在视频播放之前,首先要对dns进行解析,通过服务器调度把最近的或者热流地方的IP进行解析。网络切换,就是假如在4G、WiFi之间进行切换的时候,先对IP的解析进行预取,网络切换情况如果是WiFi到4G,需要有一些提示;从4G到WiFi则不需要提示,而是需要及时地将这批IP切下去,因为不同服务商的cdn可能不一样。

第三是P2P的点播,这主要是为了节省cdn费用,一般可以节省25%以上的费用,对于视频和音频公司来说,这些宽带费用是很高的。

播放器的四个主要优化部分

这张图展示的是信息的预取,就是获取table里视频页中可以获取的数据,以保证视频秒开,即点即放,即预取一定的数据,点开就播放。48k相当于大概不到一秒的数据,先下载后点开,就直接播放了。

2. 播放器优化

播放器的四个主要优化部分

第二部分是播放器优化,首先是点播优化,它主要是各个模块的一些优化。其次是直播优化,它不仅包含各个模块优化,还要有一个播放速率的控制,以保证较低延迟。

播放器的四个主要优化部分

直播播放的大体框架就是由下载管理、文件解析、缓存管理、视频解码、视频渲染、音频解码、音频处理、音频渲染这几部分组成。对于直播来说多了“缓存管理”这一模块,当缓存管理大到一定程度,需要进行变速或者丢帧。一般的情况下,如果缓存管理大于两秒,就可以把这个两秒的数据一直丢到I帧,以保证其低延迟。如果缓存管理大过一秒,这时就可以控制播放速率,可以播快一定的速度使其追上来,以保证低延迟。总之,缓存管理就是检查现有的播放器里的缓存的大小,以判断延迟的的大小是否正常,若不正常是否需要丢帧或者加速。

2.1 文件解析优化

播放器的四个主要优化部分

对于文件解析优化这部分,首先是缓存管理,有的播放器是解析一帧数据就丢一帧数据,这时若推到后台再推到前台时,对于已经丢弃的数据,当前帧需要返回重新下载,而缓存管理不将过去的数据全部丢弃,至少保留某一个I帧。

其次是时间对齐,MP4 文件有时候音频时间从0开始,但是视频可能是从100ms开始,这时开始播放视频,假如第一帧视频出现,但音频就要从0开始播放到100再播放到33才有第二帧,这时大概有133毫秒的停顿,对于视频来说相当于播第一下的时候就会卡顿一下,所以时间对齐就是MP4在一定时间,即音频大概多于多少的时候,可以把它丢掉,保证一开始播放时视频和音频同时起步,就不会引起第一帧卡顿的感觉。

三是后台播放,它在直播场景中比较常见的,后台播放时无需解码,但需要AV同步,可以用原始帧时间同步,但也要保留至前一个I帧,然后再用解码帧进行AV同步。对于点播,推到后台时一般是暂停的,但是对于后台有些时候不能用硬解码,回到前台的时候,可以直接用seek(getPosition)。

四是断点重连,是直播中常见的一个。点播中断点重连影响不大,直播中断点重连就是在直播中发生连接中断了,重连时的时间戳从0开始下载,新下载的数据需要加一个tag,说明时间已经发生变化,表示这一帧不用保证AV同步,对用户来说是感觉不到是否发生中断的。

播放器的四个主要优化部分

图中是一个MP4文件,图中的左边介绍了box类型,右边是对其的说明。文件里的chunk offset表示每个chunk的文件偏移,一般短视频的moov较小,对于MP4来说,其前面的头信息还是较多的,其中ctts是为了I、B、P帧设置的。

播放器的四个主要优化部分

图中是一个FLV文件,图中上部是FLV Header,下部是FLV Body。

2.2 解码器优化

播放器的四个主要优化部分

关于解码器优化,首先硬件解码主要有MediaCodec、AudioToolbox、后台播放。其次软件解码优化中的多线程优化主要有两种:Frame Module、Slice Module。快速第一帧是第一帧进去之后不会立马出来,这时候就需要不断塞数据让第一帧快速出来,因为视频解码有参考帧概念。

2.3 渲染优化

播放器的四个主要优化部分

渲染优化主要体现在一些选择方式上,对于安卓来说有native windows、Opengles、MediaCodec三种;而IOS可以选择Opengles,但要考虑前台、后台播放问题。其中native windows和Opengles相比,Opengles的限制比较多,而native windows没有现成的限制。

3. 播放策略优化

第三部分是播放策略优化,对于直播来说,首先是cdn调度预取,当前页面直播列表要调度所有直播链接,获取直播地址,直接用当前的cdn的IP进行播放。其次翻页播放选择多播放器进行翻页播放,当前页播放时翻到下一页,点击时下一个播放器已经启动播放,相当于两个播放器同时播放,上滑播放上一个播放器,下滑播放下一个播放器,只不过下一个播放器的音量在非当前页面时为0,当点击结束时,下一播放器在当前页面时的音量从0变为1。

对于点播来说,首先页面预取加速就是点播在当前页面会有一个数据的预取,大概500毫秒数据时就可以点击播放,一般需要获取多少数据由服务器决定。其次翻页多播放器,不同于直播时的两个播放器同时进行播放,点播翻页播放在播放当前页面的时候,可以把上一个和下一个直接准备好,上滑时准备好上一个播放器,下滑时准备好下一个播放器,翻页时直接就准备播放。

对于消息返回和打点,首先如果碰到异常情况,播放器不能处理的时候,将消息抛到客户端,由客户端反馈给用户一些提示,如网络或者文件错误等情况。其次打点对于cdn的连接时间、http的请求时间,下载第一帧数据、第一帧解码和展示所有花费的时间都由服务器打点,由服务器统计决定哪些地方还需要再优化,或者哪个cdn需要再进一步优化。直播一般十秒打一个十秒的信息,对当前播放的音频码率、视频码率、原始码率是否有丢帧、卡顿等信息都会进行打点,这对服务器进行后续检查直播或者点播中各种问题和进行各种优化都很有帮助。所以直播和点播打点,就是对各个方面和各个数据进行打点,以便后续的找出合理的方式进行优化。

4. 缓存优化

第四部分是缓存优化,缓存优化优点很明显,首先是节省cdn经费,即边播放边缓存文件,推到前台或者往回seek的时候,边播边存的优势就会显示出来。其次是分块存取,即播放当前页时需要快速拖动,需要保存所拖动地方的文件,保证缓存空间和下载的数据是对应的,以保证回放时节省流量。
责任编辑:pj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 视频
    +关注

    关注

    6

    文章

    1999

    浏览量

    74648
  • 服务
    +关注

    关注

    0

    文章

    76

    浏览量

    18836
  • 优化
    +关注

    关注

    0

    文章

    220

    浏览量

    24637
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    花椒直播开源鸿蒙专属直播播放器 助力高效开发高性能直播应用

    解决方案。HJPlayer采用高度模块化、可扩展的插件化架构,不仅能稳定支持多播放实例与灵活的插件编排,还集成了强大的视频后处理渲染能力,从而广泛兼容各类复杂直播场景。针对用户体验核心指标,播放器进行了系统性深度优化,通过连接预
    的头像 发表于 10-22 11:20 201次阅读
    花椒直播开源鸿蒙专属直播<b class='flag-5'>播放器</b> 助力高效开发高性能直播应用

    创通联达助力飞傲M27革新便携HiFi播放器体验

    2025年8月15日,飞傲在第19届深圳国际音频展(SIAS)正式发布年度旗舰播放器FIIO M27。作为基于创通联达TurboX C6490 SOM打造的标杆产品,M27凭借该模块的卓越性能与飞傲自研声学技术形成协同突破,为用户带来全方位、全场景的优秀音频体验,全面革新便携HiFi
    的头像 发表于 08-19 16:15 1592次阅读

    Made with KiCad(135):Echo - 开源的音乐播放器

    “  Echo 是一开源硬件平台,专为音乐播放器设计。该项目的目标是开发一款基于开源软件并采用开源设计的高品质音乐播放器。 ”   Made with KiCad 系列将支持新的展示方式。直接将以
    的头像 发表于 07-16 11:17 2731次阅读
    Made with KiCad(135):Echo - 开源的音乐<b class='flag-5'>播放器</b>

    基于STM32的音乐播放器电路+PCB源文件+源码+论文等打包下载

    基于STM32的音乐播放器电路+PCB源文件+源码+论文等打包,推荐下载!
    发表于 05-29 21:37

    PLC产品故障问题测试的四个部分

    ,必须对故障问题进行系统化测试。本文将详细介绍PLC产品故障问题测试的四个关键部分,帮助技术人员快速定位和解决问题。 一、硬件测试 硬件测试是PLC故障诊断的首要环节,主要针对PLC设备的物理部件进行检查。首先,需要检查电源模块
    的头像 发表于 05-11 17:00 1151次阅读
    PLC产品故障问题测试的<b class='flag-5'>四个</b><b class='flag-5'>部分</b>

    【开源分享】用ESP32复刻一iPod :便携式音乐播放器Tangara

    Tangara是一款便携式开源音乐播放器,硬件电路使用KiCad设计,而且它的外壳和固件也是100%开源,点击阅读原文或下载链接可跳转下载。它通过3.5毫米耳机插孔或蓝牙输出高品质声音,电池续航
    的头像 发表于 04-22 08:05 1734次阅读
    【开源分享】用ESP32复刻一<b class='flag-5'>个</b>iPod :便携式音乐<b class='flag-5'>播放器</b>Tangara

    Made with KiCad:Tangara 便携式音乐播放器

    的设计哲学 众多现有便携式媒体播放器已培育出活跃的社群生态,致力于固件维护、软件优化及设备翻新升级。Tangara 的设计理念深度契合此类社群精神:我们期望您购买的不仅是一台设备,更是一能伴随数十年
    发表于 04-16 14:01

    模数转换电路的四个过程

    模数转换(Analog-to-Digital Conversion,简称ADC)是将模拟信号转换为数字信号的关键过程,广泛应用于通信、数据采集、信号处理等领域。模数转换电路的设计与实现涉及多个关键步骤,通常可以分为四个主要过程:采样、保持、量化和编码。本文将详细分析这
    的头像 发表于 02-03 16:12 2364次阅读

    海贝HiBy R1播放器体验

    之前分享过用接入便携耳放来提升音质,让手机端也能享受HiFi级的听感体验。这个方案对于没有数码播放器的初烧用户来说,确实是种非常高效的方法。 但缺点也是有的,比如歌曲存放需要占用手机存储空间,手机
    的头像 发表于 01-24 11:27 4684次阅读
    海贝HiBy R1<b class='flag-5'>播放器</b>体验

    蛇年焕新,数字标牌播放器点亮新春营销

    春节期间,商场成为人们欢聚、购物的热门场所。在商场入口处,大型数字标牌展示着精心制作的新春广告,高清画质将喜庆氛围完美呈现,流畅的切换效果瞬间将顾客带入热闹的春节气氛中。 借助数字标牌播放器
    的头像 发表于 01-24 11:26 624次阅读
    蛇年焕新,数字标牌<b class='flag-5'>播放器</b>点亮新春营销

    请问AD9852四个输出口有什么差别?

    AD9852四个输出口有什么差别?是不是IOUT1是余弦输出,IOUT2是DAC控制输出,需要设置DAC控制寄存
    发表于 01-16 06:59

    将基于PC的MP3播放器软件移植到ADSP-21262 SHARC处理

    电子发烧友网站提供《将基于PC的MP3播放器软件移植到ADSP-21262 SHARC处理上.pdf》资料免费下载
    发表于 01-03 14:54 0次下载
    将基于PC的MP3<b class='flag-5'>播放器</b>软件移植到ADSP-21262 SHARC处理<b class='flag-5'>器</b>上

    索尼发布空间现实显示播放器新版本

    索尼于2024年12月发布适用于空间现实显示屏ELF-SR1和ELF-SR2的空间现实显示播放器新版本。
    的头像 发表于 12-24 15:19 957次阅读

    毕业设计竞赛选题推荐 | 嵌入式Linux应用之音乐播放器项目实战(含文档及源码)

    01引言随着数字化娱乐日益普及,音乐播放器作为人们生活中不可或缺的一部分,扮演着重要的角色。无论是通勤途中、健身锻炼还是工作学习,一好用的音乐播放器都能为用户提供愉悦的音频体验,丰富
    的头像 发表于 12-23 16:50 1359次阅读
    毕业设计竞赛选题推荐 | 嵌入式Linux应用之音乐<b class='flag-5'>播放器</b>项目实战(含文档及源码)

    海贝R1便携音乐播放器开箱

    作为一爱听音乐打发时间的玩家,我已经习惯随身携带一款小巧轻便的音乐播放器,从早期的CD播放器到现在的数码播放器,它总能在不经意间中给我带来简单的快乐。不管是逛街等人的时候,还是工作压
    的头像 发表于 12-09 09:40 1983次阅读
    海贝R1便携音乐<b class='flag-5'>播放器</b>开箱