移动端的播放器设计经验:与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、注意:快速增加延时,但缓慢减少延时。如快速减少延时,会导致在网络情况好的时候,音视频卡顿。
目录
相关文章
|
3月前
|
Web App开发 前端开发 UED
移动端适配布局指南:打造完美用户体验的秘密武器
【8月更文挑战第26天】在Web前端开发中,选择合适的移动端适配方案对确保跨设备的良好显示与用户体验至关重要。常用方案包括:媒体查询实现响应式布局;百分比、flexbox与CSS Grid布局提供更灵活的设计;结合viewport元标签和rem单位实现等比缩放;利用第三方库如Bootstrap加速开发。实践中应综合运用这些技术,并通过广泛测试保证兼容性和效果。
64 4
探究直播app源码技术:视频上传功能
我今天要讲的技术功能就有助于我们的情绪发泄,是直播app源码平台中的技术功能。在我们使用直播app源码平台的时候,我们有一个最常见且可能最先看到的一个功能,它是有很多能动的画面,各式各样的内容,并且还可以上下滑动切换这些画面
探究直播app源码技术:视频上传功能
|
6月前
|
Web App开发 编解码 前端开发
如何做移动端适配?
如何做移动端适配?
64 0
|
编解码 Java 开发工具
[技术分享]Android平台实时音视频录像模块设计之道
录像有什么难的?无非就是数据过来,编码保存mp4而已,这可能是好多开发者在做录像模块的时候的思考输出。是的,确实不难,但是做好,或者和其他模块有非常好的逻辑配合,确实不容易。
106 0
|
开发框架 .NET 数据处理
海思3559万能平台搭建:RTSP优化buffpool的引入
海思3559万能平台搭建:RTSP优化buffpool的引入
448 0
海思3559万能平台搭建:RTSP优化buffpool的引入
|
存储 网络协议 流计算
|
存储 缓存 网络协议
|
Web App开发 编解码 JavaScript
优酷播放体验优化实战(六)--Electron跨平台进阶:Native播放器融合
随着桌面应用开发技术的发展,程序的跨平台性和代码的维护成本显得尤为重要,目前优酷Windows平台采用QT作为UI的主要开发方案,DuiLib辅助一些扩展插件开发,Mac平台采用原生的Native UI开发,由于历史原因并没有将Windows端的QT框架迁移到Mac端,两端分别维护耗费不同人力。
2171 0
优酷播放体验优化实战(六)--Electron跨平台进阶:Native播放器融合
|
安全 Android开发 iOS开发
iOS天生流畅?其实并非技术优势
在进入智能手机时代的十余年里,苹果手机一直是行业龙头,虽然安卓系统在全世界已经达到80%的市场占有率,但iOS依旧以其封闭、流畅等优势混得如鱼得水。
213 0
iOS天生流畅?其实并非技术优势
|
传感器 缓存 运维
优酷播放体验优化实战(四)--“三高”音频渲染引擎设计
随着高清在用户观影过程中的深度普及,人们已经不仅仅满足于视的享受,更需要听的保证。如何稳定保障音质,甚至增加更多的音效玩法需要一套强大的系统将数据传输、音频实时处理技术、音频输出有效地整合起来;而作为一个可以商业化应用的系统,其应具有高性能、高复用、高可靠的特点,在本文我们将探讨如何打造一套具备这些特性的音频渲染引擎。
292 0
优酷播放体验优化实战(四)--“三高”音频渲染引擎设计