移动端的播放器设计经验:与VLC的考量点完全不同

简介: 移动播放器面临的情况:1、渲染时按照时间戳渲染2、播放端来的流是抖动不平滑的,可快可慢,可能延时只来一帧,后紧跟N帧。VLC针对抖动的处理方式1、收流时在收到第一帧TS1的时候取本地绝对时间,作为绝对时戳absPts1,第二帧TS2到来时取本地绝对时戳absPts2。
移动播放器面临的情况:
1、渲染时按照时间戳渲染
2、播放端来的流是抖动不平滑的,可快可慢,可能延时只来一帧,后紧跟N帧。

VLC针对抖动的处理方式
1、收流时在收到第一帧TS1的时候取本地绝对时间,作为绝对时戳absPts1,第二帧TS2到来时取本地绝对时戳absPts2。差值计算absDvalue = absPts2 - absPts1  TsDvalue = Ts2-Ts1 ,如果absDvalue > TsDvalue 说明数据延时到来,否则时提前到来。这种方式的缺陷是:以第一帧作为参考,可能第一帧本身就晚到了。

2、将absDvalue值累计到clock机制里,clock里会计算这种误差,反应到送渲染的时戳里,这样达到播放端与发流端的速度保持一致,减少缓冲数据的堆积(即时钟漂移策略)。这样做对于视频流源端是IPC等摄像机来说是合理的,且是有优势的。但是对于移动手机作为采集端,加入了调整帧率、码率等手段做网络动态适配时,VLC的这些优势就变成了劣势。

移动端采集方案:动态监测网络状态,网络状态较差时
1、自动降低帧率、码率;
2、采集端产生堆积数据,导致播放端接收到的数据延时较大。如果此时网络情况突然改善,播放端会收到一大串的帧,类似脉冲式的效果。

移动播放端的改进
1、考虑到音视频同步问题,以音频作为调整的触发点;
2、收流侧实时统计每帧音频是否延时,计算延时时间。基准的缓存时间为500ms,如果延时时间>缓存时间,连续500ms时,可以增加缓存时间(即后续每帧的绝对时戳=curpts+新缓存时间),相当于渲染时间延后了。使用该方式可以在网络情况差的情况下,平滑播放但整体延时了。
3、当网络情况好转时,同样的方式计算出延时间<缓存时间,连续500ms时,可以减少缓存时间(即后续每帧的绝对时戳=curpts+新缓存时间(新的缓存时间比原先的缓存时间小)),并且通知渲染模块,调整已有的渲染队列中数据的pts值,这样启到加速渲染的效果。
4、注意:快速增加延时,但缓慢减少延时。如快速减少延时,会导致在网络情况好的时候,音视频卡顿。
目录
相关文章
|
4月前
|
安全 Android开发 iOS开发
安卓与iOS的较量:技术特性与用户体验的深度解析
在移动操作系统的战场上,安卓和iOS一直占据着主导地位。本文将深入探讨这两大平台的核心技术特性,以及它们如何影响用户的体验。我们将从系统架构、应用生态、安全性能和创新功能四个方面进行比较,帮助读者更好地理解这两个系统的异同。
82 3
|
3月前
|
IDE Android开发 iOS开发
探索安卓与iOS系统的技术差异:开发者的视角
本文深入分析了安卓(Android)与苹果iOS两大移动操作系统在技术架构、开发环境、用户体验和市场策略方面的主要差异。通过对比这两种系统的不同特点,旨在为移动应用开发者提供有价值的见解,帮助他们在不同平台上做出更明智的开发决策。
|
4月前
|
安全 Android开发 iOS开发
安卓与iOS的较量:技术特性与用户体验的深度剖析
在移动操作系统的战场上,安卓和iOS一直是两个重量级选手。本文将深入探讨两者的技术架构、安全性、应用生态以及用户体验等方面的差异,并尝试从用户和开发者的角度出发,分析这两个系统的优势与不足。通过比较,我们不仅能更好地理解各自的特点,还能洞察未来移动技术的发展趋势。
78 3
|
5月前
|
Web App开发 前端开发 UED
移动端适配布局指南:打造完美用户体验的秘密武器
【8月更文挑战第26天】在Web前端开发中,选择合适的移动端适配方案对确保跨设备的良好显示与用户体验至关重要。常用方案包括:媒体查询实现响应式布局;百分比、flexbox与CSS Grid布局提供更灵活的设计;结合viewport元标签和rem单位实现等比缩放;利用第三方库如Bootstrap加速开发。实践中应综合运用这些技术,并通过广泛测试保证兼容性和效果。
106 4
|
7月前
|
边缘计算 JSON 网络协议
移动端IM开发者必读(三):爱奇艺移动端跨国弱网通信的优化实践
本次分享的文章内容,基于爱奇艺面向全球用户推出的国际版,在海外跨国网络环境复杂的前提下,针对性地做了一系列弱网优化实践,取得了不错的效果,在此总结分享我们的一些做法和优化思路,希望对你有所帮助。
84 1
|
监控 网络协议 算法
RTSP播放器开发填坑之道
好多开发者提到,在目前开源播放器如此泛滥的情况下,为什么还需要做自研框架的RTSP播放器,自研和开源播放器,到底好在哪些方面?以下大概聊聊我们的一点经验,感兴趣的,可以关注 github:
115 0
|
缓存 监控 算法
RTMP播放器开发填坑之道
好多开发者提到,在目前开源播放器如此泛滥的情况下,为什么还需要做自研框架的RTMP播放器,自研和开源播放器,到底好在哪些方面?以下大概聊聊我们的一点经验,感兴趣的,可以关注 github:
133 0
|
缓存 监控 算法
开发个好的RTMP播放器到底难在哪里?RTMP播放器对标和考察指标
好多开发者提到,RTMP播放器,不知道有哪些对标和考察指标,以下大概聊聊我们的一点经验,感兴趣的,可以关注 github: 1. 低延迟:大多数RTMP的播放都面向直播场景,如果延迟过大,严重影响体验,所以,低延迟是衡量一个好的RTMP播放器非常重要的指标,目前大牛直播SDK的RTMP直播播放延迟比开源播放器更优异(大牛直播SDK延迟在1秒左右,开源播放器如VLC,延迟在5-7秒),而且长时间运行下,大牛直播SDK播放端不会造成延迟累积,开源或第三方播放器,长时间运行,容易产生延迟累积;
199 0
|
存储 编解码 Unix
[✔️]在cocos2dx中播放视频方案调研
[✔️]在cocos2dx中播放视频方案调研
170 0
|
存储 缓存 网络协议