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

移动播放器面临的情况:
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、注意:快速增加延时,但缓慢减少延时。如快速减少延时,会导致在网络情况好的时候,音视频卡顿。

时间: 2024-10-23 13:53:36

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

硅谷杂志:三维感光音乐播放器设计曝光

硅谷网12月8日文 据<硅谷>2012年第18期刊文,主要介绍 一款基于Crotex3内核的http://www.aliyun.com/zixun/aggregation/16804.html">MP3播放器.Cpu采用STM32F103系列微处理器,音乐解码芯片采用凌通公司的DS250-103A音乐解码芯片.通过MPU6050六轴运动处理组件收集加速度信息,利用不同方向加速度信息控制MP3音乐的切换.利用光敏电阻 获取外界光信息,控制播放器音量输出的 大小. 0引言 三维感光

网页用户体验设计:精简模式的播放器设计

网页制作Webjx文章简介:视频网站播放器的精简设计. 播放视频时去掉播放器多余的边框减少干扰是体验中很重要的一步,于是有了播放器的精简模式,而当显示器的分辨率越来越大时,一般精简模式提供的1倍.0.5倍的尺寸大小显然有些不合适 边看视频边做其他事情是很多人在上网时会做的,而播放视频时去掉播放器多余的边框减少干扰是体验中很重要的一步,于是有了播放器的精简模式,而当显示器的分辨率越来越大时,一般精简模式提供的1倍.0.5倍的尺寸大小显然有些不合适,这个时候我们需要手动播放器的边角或是边框来放大播放

VLC播放器调试经验总结

一.前言 在使用VS学习VLC源码时,可以打断点分析变量数据,跟踪代码流程,方便我们理解源码.但是在定位音视频卡顿.延时等疑难问题时,这一招就不管用了,因为打上断点就会导致实时计算的pts值不准确,影响复现真实场景.所以音视频卡顿.延时类问题,更需要我们抓包.打印每一帧数据的Timestamp.pts及clock转换中的关键数据.这里引入一个简单的方法:增加收流.解码.渲染一条线上的时间戳,便于分析. 二.时间戳日志打印具体方法 1.将live/liveMedia/include/RTPSour

推荐5款好用的Linux音乐播放器

适用于 Linux 的音乐播放器可说数不胜数,不同的用户也有各自的喜好.知名且应用广泛的有 Cantata 和 Exaile,不太知名的工具有 Clementine.Nightingale 和 Quod Libet,国产较好用的有网易云音乐,小编为大家推荐 5 款好用的 Linux 音乐播放器,各位看客自行选择吧. 1. Qmmp Qmmp 其实就是 Linux 版的 Winamp,它的界面虽然很轻量级,但却有丰富的功能集.想必很多 Winamp 老用户都有怀旧感情,而 Qmmp 与 Winam

Fireworks设计水晶质感的Media Player 播放器图标

  本教程是向大家介绍如何利用Fireworks设计水晶质感的Media Player 播放器图标,设计出来的图标非常精致立体,教程很不错,希望大家通过本篇教程能充分掌握Fireworks软件的使用技巧! 前言: 很多人都说FIREWORKS太弱,远不如PHOTOSHOP制作的效果更好,对于我这个对FW情有独钟的"资深网民"来看,关键是要充分掌握软件的使用技巧,加上好的设计思想,用FIREWORKS同样能做出比较精美的图片.近来看到微软官方网站的Windows Media Player

android音乐播放器中播放模式的设计

在音乐播放器中,播放模式一般放在音乐播放完毕后自动识别,如下给出逻辑代码,可根据需要添加合适 的代码 public static final int ALL = 0;//全部循环 public static final int SINGLE = 1;//单曲循环 public static final int RANDOM = 2;//随机 // 一首歌播放完成后(这里设置播放模式) public class Completed implements OnCompletionListener {

android 音乐播放器中播放模式的设计

  在音乐播放器中,播放模式一般放在音乐播放完毕后自动识别,如下给出逻辑代码,可根据需要添加合适的代码 public static final int ALL = 0;//全部循环 public static final int SINGLE = 1;//单曲循环 public static final int RANDOM = 2;//随机 // 一首歌播放完成后(这里设置播放模式) public class Completed implements OnCompletionListener

java 音乐播放器-java设计音乐播放器,如何实现暂停后继续播放?

问题描述 java设计音乐播放器,如何实现暂停后继续播放? 做课程设计,想采用JAVA语言做个音乐播放器 音乐停止后再点播放按钮时总是从开始的位置播放的 求大神们支招如何实现从暂停位置继续播放? 实现过程中应用了第三方JAR包,javazoom.jlgui.*:这个也没多少文档,也不知道里面有实现的方法没 还有如何实现对音量的调控? 解决方案 http://bbs.csdn.net/topics/390328293

移动端网页设计经验与心得

原文:移动端网页设计经验与心得 智能手机发展确实很迅速,像今年,我的大部分工作就都在移动端网页上. 再往前些年,看到的手机版/移动版网页,限制于浏览器与手机性能,2g网络速度等 网页设计无非是蓝.黑.白,界面单调,并且要尽可能的设计简单.   现在情况就大不相同了,软件上webkit内核浏览器大行其道,硬件突飞猛进,网速来说,4g正炒得火热. 下面就和大家分享一下我的一些移动端网页设计经验与心得.   ⒈ 分辨率这应该是移动端网页最关心的问题了,因为移动设备五花八门,各种分辨率都有.要想在这些设