帧率

【前端性能】Web 动画帧率(FPS)计算

回眸只為那壹抹淺笑 提交于 2020-01-21 13:35:59
我们知道,动画其实是由一帧一帧的图像构成的。有 Web 动画那么就会存在该动画在播放运行时的帧率。而帧率在不同设备不同情况下又是不一样的。 有的时候,一些复杂或者重要动画,我们需要实时监控它们的帧率,或者说是需要知道它们在不同设备的运行状况,从而更好的优化它们,本文就是介绍 Web 动画帧率(FPS)计算方法。 流畅动画的标准 首先,理清一些概念。FPS 表示的是每秒钟画面更新次数。我们平时所看到的连续画面都是由一幅幅静止画面组成的,每幅画面称为一帧,FPS 是描述“帧”变化速度的物理量。 理论上说,FPS 越高,动画会越流畅,目前大多数设备的屏幕刷新率为 60 次/秒,所以通常来讲 FPS 为 60 frame/s 时动画效果最好,也就是每帧的消耗时间为 16.67ms。 当然,经常玩 FPS 游戏的朋友肯定知道,吃鸡/CSGO 等 FPS 游戏推荐使用 144HZ 刷新率的显示器,144Hz 显示器特指每秒的刷新率达到 144Hz 的显示器。相较于普通显示器每秒60的刷新速度,画面显示更加流畅。因此144Hz显示器比较适用于视角时常保持高速运动的第一人称射击游戏。 不过,这个只是显示器提供的高刷新率特性,对于我们 Web 动画而言,是否支持还要看浏览器,而大多数浏览器刷新率为 60 次/秒。 直观感受,不同帧率的体验: 帧率能够达到 50 ~ 60 FPS 的动画将会相当流畅

Android中app卡顿原因分析示例

廉价感情. 提交于 2020-01-21 13:35:34
在知乎回答了一个“为什么微博的app在iPhone比Android上流畅”的问题。后面部分是一个典型的动画卡顿的性能分析过程,因此帖在这里。有编程问题可以在这里交流。 知乎链接 。 ========================================================= 我来说下我所知道的事情。我不知道iOS为什么流畅,但我知道一些Android为什么不流畅的原因。 首先,就题主所说的问题,我用iPad和小米Pad对比了一下微博滑动滚屏这件事情(2014年8月10日目前微博app最新版本)。正如题主所说,直观感受上明显感觉iOS要流畅、舒服。 在这件事情上我认为主要是这三个原因: 速度曲线。 当你滑动界面然后松手,这时界面会继续滑动,然后速度减小,直到速度为0时停止。iOS下速度减小的这个过程比较慢,尤其是快要停的时候是慢慢停的,视觉上有种很顺滑的感觉;Android下则从松手到停要快很多,相比之下有种戛然而止的感觉。 从数据/技术角度来看这个事情,我们滑动界面的最终目的不是为了“动”,而是为了“停”,因此只要平滑的到达目的地,似乎越快完成这个过程越好,所以Android的选择是理所当然的。但事实是,大家普遍更喜欢iOS的方式,这样做显得更顺滑、更优雅。 帧率。 绝大部分时间两者都能保持60FPS左右的满帧率。但都会有偶尔的掉帧

性能优化典范

白昼怎懂夜的黑 提交于 2020-01-21 13:30:57
来源:http://hukai.me/android-performance-patterns/#jtss-tsina 0)Render Performance 大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能。从设计师的角度,他们希望App能够有更多的动画,图片等时尚元素来实现流畅的用户体验。但是Android系统很有可能无法及时完成那些复杂的界面渲染操作。Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps,为了能够实现60fps,这意味着程序的大多数操作都必须在16ms内完成。 如果你的某个操作花费时间是24ms,系统在得到VSYNC信号的时候就无法进行正常渲染,这样就发生了丢帧现象。那么用户在32ms内看到的会是同一帧画面。 用户容易在UI执行动画或者滑动ListView的时候感知到卡顿不流畅,是因为这里的操作相对复杂,容易发生丢帧的现象,从而感觉卡顿。有很多原因可以导致丢帧,也许是因为你的layout太过复杂,无法在16ms内完成渲染,有可能是因为你的UI上有层叠太多的绘制单元,还有可能是因为动画执行的次数过多。这些都会导致CPU或者GPU负载过重。 我们可以通过一些工具来定位问题,比如可以使用HierarchyViewer来查找Activity中的布局是否过于复杂

perfdog使用手册

人盡茶涼 提交于 2020-01-18 17:18:03
PerfDog(性能狗)测试须知 Android平台 ScreenShot(只支持USB模式) FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帖率/FPS) 1)Avg(FPS):平均帖率 2)Var(FPS):帖率方差 3)Drop(FPS):降帖次数(平均每小时相邻两个FPS点下降大于8贴的次数) jank(1秒内卡顿次数) 1)BigJank:1秒内严重卡顿次数 2)jank(10分钟):平均每10分走过来卡顿次数 3)BigJank(/10分钟):平均每10分走过来严重卡顿次数 FTime(上下贴画面显示时间间隔,即认为贴耗时) 1)Avg(Ftime)平均贴耗时 2)Delta(FTime):增量耗时(平均每小时两贴之间时间差>100ms的次数) CPU Usage(Total整机/App目标进程,统计结果和Andrid Studio Profilter一致) CPU Clock(各个CPU核心的帖率的频率) Memory (PSS Memory,统计结果和Android java API标准结果一致,也Meminfo也一致) Swap Memory (Swap Memory,部分设备支持Swap功能,在启用Swap功能后,系统会对PSS内存进行压缩,Swap增加,PSS会相应减少,由于压缩会占用CPU资源,同时相应会导致FPS降低) 根据perfdog关键字

码流 / 码率 / 比特率 / 帧速率 / 分辨率 / 高清的区别

大城市里の小女人 提交于 2020-01-13 04:00:53
码流 / 码率 / 比特率 / 帧速率 / 分辨率 / 高清 GOP/ 码流 /码率 / 比特率 / 帧速率 / 分辨率 GOP(Group of picture) 关键帧的周期,也就是两个IDR帧之间的距离,一个帧组的最大帧数,一般而言,每一秒视频至少需要使用 1 个关键帧。增加关键帧个数可改善质量,但是同时增加带宽和网络负载。 需要说明的是,通过提高GOP值来提高图像质量是有限度的,在遇到场景切换的情况时,H.264编码器会自动强制插入一个I帧,此时实际的GOP值被缩短了。另一方面,在一个GOP中,P、B帧是由I帧预测得到的,当I帧的图像质量比较差时,会影响到一个GOP中后续P、B帧的图像质量,直到下一个GOP开始才有可能得以恢复,所以GOP值也不宜设置过大。 同时,由于P、B帧的复杂度大于I帧,所以过多的P、B帧会影响编码效率,使编码效率降低。另外,过长的GOP还会影响Seek操作的响应速度,由于P、B帧是由前面的I或P帧预测得到的,所以Seek操作需要直接定位,解码某一个P或B帧时,需要先解码得到本GOP内的I帧及之前的N个预测帧才可以,GOP值越长,需要解码的预测帧就越多,seek响应的时间也越长。 CABAC/CAVLC H.264/AVC标准中两种熵编码方法,CABAC叫自适应二进制算数编码,CAVLC叫前后自适应可变长度编码, CABAC:是一种无损编码方式,画质好

GPU 优化总结

陌路散爱 提交于 2020-01-11 03:59:06
转自:http://www.cnblogs.com/ghl_carmack/p/4107042.html   前面说了对我这一年多的工作进行一个总结,由于工作比较紧,加上本人比较懒,一直没能抽出时间来写,最近稍微闲下来了。先写一篇GPU优化的,后续的文章希望能慢慢补齐。这些基本都是我个人优化的实际经验,也参考了一些文章,我都放在后面引用 部分了,感兴趣的可以深入研究。个人理解可能有问题,如有不正确的还请指正,下面进入正题。 由于图形引擎的复杂性,瓶颈可能发生在CPU、GPU、,也可能发生在CPU与GPU的传输数据与交互之中。这里我们只假设瓶颈在GPU上,讨论GPU的优化方法。 Premature optimization is the root of all evil. -- Donald Knuth 这告诉我们过早优化程序是不可取的,我觉得有两方面的意思,1、在没有找到高效的算法前就开始优化。2、在没有找到真正的瓶颈关就开始优化。正确的流程大概是这样的   1、使功能能工作,程序能跑起来。   2、功能正确的工作。   3、让整个程序能工作。   4、让整个程序能正确工作。   5、使用这个程序并找到性能瓶颈。   6、使用性能分析工具找到瓶颈所在。   7、使程序高效正确的运行。[1]   还有一个原则就是80~20原则,即只有百分之二十的代码是常用的,所以要集中优化这些代码

GPU 优化总结

巧了我就是萌 提交于 2020-01-11 03:58:15
  前面说了对我这一年多的工作进行一个总结,由于工作比较紧,加上本人比较懒,一直没能抽出时间来写,最近稍微闲下来了。先写一篇GPU优化的,后续的文章希望能慢慢补齐。这些基本都是我个人优化的实际经验,也参考了一些文章,我都放在后面引用 部分了,感兴趣的可以深入研究。个人理解可能有问题,如有不正确的还请指正,下面进入正题。 由于图形引擎的复杂性,瓶颈可能发生在 CPU 、 GPU 、,也可能发生在 CPU 与 GPU 的传输数据与交互之中。这里我们只假设瓶颈在 GPU 上,讨论 GPU 的优化方法。 Premature optimization is the root of all evil. -- Donald Knuth 这告诉我们过早优化程序是不可取的,我觉得有两方面的意思, 1 、在没有找到高效的算法前就开始优化。 2 、在没有找到真正的瓶颈关就开始优化。正确的流程大概是这样的   1、使功能能工作,程序能跑起来。   2、功能正确的工作。   3、让整个程序能工作。   4、让整个程序能正确工作。   5、使用这个程序并找到性能瓶颈。   6、使用性能分析工具找到瓶颈所在。   7、使程序高效正确的运行。[1]   还有一个原则就是 80~20 原则,即只有百分之二十的代码是常用的,所以要集中优化这些代码,而不是一些很少执行的代码上花些时间。 既然直接谈 GPU 优化

音视频即时通讯开发中音频模式的采集

早过忘川 提交于 2020-01-04 06:43:14
在很多即时通讯应用中,会根据应用场景的不同,需要对音频输入源进行选择,不同的应用场景对应不同的音频工作模式。需要支持多种音频工作(采集)模式,包括: 1 、发言模式(默认) :自动选择麦克风为音频输入源设备,用户说话的声音被麦克风采集,启动音频特效处理(包括:回音消除、静音检测、噪音抑制、自动增溢),该模式通常应用于互动交流,用户发言讨论等场合; 2 、放歌模式 :自动选择立体声混音输入源设备,本地计算机所播放的声音被采集,同时SDK内部会自动屏蔽其它用户的声音(如果不屏蔽,则用户的声音会被采集下来,并回传给用户,用户那边将会听到回音),SDK内部会自动关闭音频特效处理,该模式通常应用于向其他用户放歌,而不用关心其他用户发言的场合; 3 、卡拉OK模式 :自动选择立体声混音和麦克风两个输入源设备(该特性与硬件相关,有些声卡不支持同时采集麦克风和立体声混音),本地计算机所播放的声音和用户说话的声音将会被采集,同时SDK内部会自动屏蔽其它用户的声音,SDK内部会自动关闭音频特效处理,该模式通常应用于向其他用户放歌,同时自己用麦克风伴唱,而不用关心其它用户发言的场合; 4 、线路输入模式 :自动选择线路输入源设备,通过线路输入的声音将被采集(通常是指将外部的DV、DVD、TV等设备的音频输出端子接入声卡的LineIn口的应用),SDK内部会自动关闭音频特效处理

盒子端 CSS 动画性能提升研究

最后都变了- 提交于 2020-01-04 03:37:30
不同于传统的 PC Web 或者是移动 WEB,在腾讯视频客厅盒子端,接大屏显示器(电视)下,许多能流畅运行于 PC 端、移动端的 Web 动画,受限于硬件水平,在盒子端的表现的往往不尽如人意。 基于此,对于 Web 动画的性能问题,仅仅停留在感觉已经优化的OK之上,是不够的,想要在盒子端跑出高性能接近 60 FPS 的流畅动画,就必须要刨根问底,深挖每一处可以提升的方法。 流畅动画的标准 理论上说,FPS 越高,动画会越流畅,目前大多数设备的屏幕刷新率为 60 次/秒,所以通常来讲 FPS 为 60frame/s 时动画效果最好,也就是每帧的消耗时间为 16.67ms。 直观感受,不同帧率的体验 帧率能够达到 50 ~ 60 FPS 的动画将会相当流畅,让人倍感舒适; 帧率在 30 ~ 50 FPS 之间的动画,因各人敏感程度不同,舒适度因人而异; 帧率在 30 FPS 以下的动画,让人感觉到明显的卡顿和不适感; 帧率波动很大的动画,亦会使人感觉到卡顿。 盒子端动画优化 在腾讯视频客厅盒子端,Web 动画未进行优化之前,一些复杂动画的帧率仅有 10 ~ 30 FPS,卡顿感非常明显,带来很不好的用户体验。 而进行优化之后,能将 10 ~ 30 FPS的动画优化至 30 ~ 60 FPS,虽然不算优化到最完美,但是当前盒子硬件的条件下,已经算是非常大的进步。 盒子端 Web

直播画质保障的三要素分析

扶醉桌前 提交于 2019-12-25 17:43:42
在直播搭建过程中,经常会忽略一些问题的存在,直播间画质的保障是需要码率、帧率、分辨率三者达到平衡才行,拓幻科技具体分析如下: 1.帧率 直播过程中,帧率容易影响画面的流畅度,帧率是指1秒钟内传输图片的帧数,也可以理解为图形处理器每秒刷新的次数。帧率越大,直播画面越流畅;帧率越小,画面抖动越厉害。其中,帧率会直接影响到视频的体积,每秒种经过的画面越多,需要的码率就越高,视频的体积也会越大。 2.分辨率 直接影响直播图像的大小,分辨率越高图像越大,分辨率越低,图像越小。 3.清晰度 直播过程中,如果,码率是固定的,那么分辨率会与清晰度成反比,也就是说,在相同码率情况下,分辨率越高,图像越不清晰,分辨率越低,图像清晰度越高。分辨率固定,码率越高,图像越清晰,分辨率越低,图像越不清晰。 如果不将码率的大小进行限制,那么分辨率越高,直播中的画质会越高,帧率越高视频就会越流畅,相应的码率也会很大。因为每秒钟需要用更多的数据去承载更高的清晰度和流畅度,在保证清晰度和流畅度的情况下,流量的消耗也会相应增加,造成的费用开支也会随之变的更多。 在开发直播APP软件的过程中,如果给码率一个固定的值,那么帧率越高编码器就越要加大对单帧画面的压缩比,也就是通过降低画质来承载足够多的的帧数,假如是使用摄像头获取视频内容,人眼的极限帧数是24FPS,再过于清晰的画面就可能会造成不适,观看直播