应答提前和卡顿的终极指南-直播优化-Flv.js (提前相近的词是什么)
之前写过一篇阅读器直播的文章,叫《用一个flv.js播放监控的例子,带你深撅直播流技术》。关键内容就是科普直播是什么,以及如何在阅读器中播放直播。
成功方法很便捷,经常使用一个盛行的第三方包flv.js,即可极速播放直播。
在咱们的名目中也经常使用这种方式,比如播放海康监控器的直播、教学直播等,都可以反常播放。
但是在产品成熟后,咱们发现直播中有两个致命疑问:
处置上述两个疑问是直播稳固性和可用性的关键,上方就来详解一下。
抗提前关键——追帧
点播不要务实时性,暂停之后再继续播放,视频会接着暂停的画面继续播放;而假设是直播,暂停后继续播放时肯定切换到最新的画面帧,这就是追帧的概念。
一图胜千言,不追帧的成果是这样的:
追帧的成果是这样的:
可以看到,设置追帧后的暂停重播,会立刻切换到最新的画面。
在实践场景中,直播没有暂停按钮,但是经常会由于网络疑问卡顿。假设卡顿复原后视频没有追帧,就会造成直播提前越来越高。
经常使用mpegts.js替代flv.js
据传说,flv.js的作者是一个高中毕业在B站下班的小伙子,月薪仅仅不到5k。起初小伙离任去了日本,不可更新flv.js,于是有了mpegts.js。
目前flv.js已中止保养,mpegts.js是其更新版,开发者是同一团体。触及到追帧的初级性能,mpegts.js允许地更好。
在flv.js主页也可以看到介绍:
mpegts.js的用法与flv.js基本分歧,如下:
importmpegtsfrom'mpegts.js';letconfig={};letplayer=mpegts.createPlayer({type:'flv',isLive:true,url:'http://xxxx.flv',},config,);
mpegts.js提供了智能追帧的性能项liveBufferLatencyChasing,开启智能追帧方法如下:
letconfig={liveBufferLatencyChasing:true,};
设置智能追帧后,只管提前疑问处置了,但画面或许会愈加卡顿。这里触及到IO缓存的疑问。
性能IO缓存,优化追帧卡顿
首先思索一个疑问:直播的提前越低越好吗?
从需求上讲,当然是越低越好;可从技术上讲,并不是越低越好。
直播是实时流,从远端拉流并实时解码播放,但这个环节极容易遭到网络影响。不论是推流端或拉流端遇到了网路颤抖,数据传输碰壁,直播肯定会卡顿,这个是反常现象。
怎样办呢?这个时刻就要用到IO缓存,就义一点实时性,用提前换取流利。
假定播放器缓存了1秒的数据流,并将直播提前1秒播放。当遇到网络颤抖时,播放器会读取缓存数据继续播放,网络复原后再向缓冲区追加数据,这样用户在看直播时,齐全感触不到卡顿。
但假设网络意外期间超越1秒,缓冲区中的数据读取终了,直播还是会卡住;假设放大缓存量,缓存了3秒的数据,这又会造成直播提前过高。
所以,设置缓存可以有效处置追帧卡顿疑问;若要在保障流利的前提下,尽或许地降落提前,则要求一个正当的缓存值。
mpegts.js提供了liveBufferLatencyMaxLatency和liveBufferLatencyMinRemn两特性能项来管理缓存期间,区分示意最大缓存期间和最小缓存期间,单位为秒。
以下方性能为例,缓存期间设置越长、流利性越好、提前越高:
letconfig={liveBufferLatencyChasing:true,//开启追帧liveBufferLatencyMaxLatency:0.9,//最大缓存期间liveBufferLatencyMinRemain:0.2,//最小缓存期间};
实践的缓存期间会依据网络状况灵活变动,值的范畴在上述两特性能项之间。
处置卡顿关键——断流检测
直播是实时流播放,任何一个环节出现意外,都会造成直播卡顿、出现黑屏等现象。这是由于实时拉取的流数据断开了,咱们称之为断流。
少数状况下的断流都是网络要素造成,此时或许要求提示用户以后网络拥挤、或许显示直播加载中的字样,通知用户出现了什么。
而成功这些性能的前提,肯定要知道流什么时刻断开,咱们就要求做断流检测。
mpegts.js提供了几个内置事情来监听直播的形态,罕用如下:
前两个事情区分会在出现意外和直播完结的时刻触发,监听方法如下:
letplayer=mpegts.createPlayer({...})player.on(mpegts.Events.ERROR,e=>{console.log('出现意外')});player.on(mpegts.Events.LOADING_COMPLETE,(e)=>{console.log("直播已完结");});
当未出现意外、且直播未完结的状况下,咱们就要求监听直播卡顿。经过监听STATISTICS_INFO事情来成功。
首先科普一下:播放器在播放直播时要求实时解码,每一帧画面上来,就要求解码一次性。当直播卡顿时,没有画面上来,解码也会暂停,因此可以经过已解码的帧数来判别能否卡顿。
STATISTICS_INFO事情的回调函数参数中,有一个decodedFrames属性,正是示意以后已解码的帧数,咱们来看一下:
player.on(mpegts.Events.STATISTICS_INFO,(e)=>{console.log("解码帧:"e.decodedFrames);//曾经解码的帧数});
在直播环节中,上述回调函数会不时口头,打印结果如下:
可以看到,解码帧不时在递增,示意直播反常。
当直播卡顿时,打印结果是这样的:
解码帧延续9次卡在了904一个数值不变,这是由于直播卡顿了,没有画面要求解码。
所以,判别卡顿的方法是将上一次性的解码帧与以后解码帧做对比,假设值分歧则出现了卡顿。
当然细微的卡顿不要求处置。咱们可以将延续N次出现相反的解码帧视为一次性卡顿,而后口头自己的业务逻辑。
当解码帧的值长期间没有变动时,咱们可以视为推流已完结,此时可以被动完结直播。
flv.js的技术到底是什么水平
的几个意义:1,h5上实现直播的目前已知的最优解决方案,性能不弱于原生app直播:直播延迟控制到1秒内。 带宽、存储其实比原生app普遍采用的mp4更优。 2,h5上用js实现高质量音视频解码、并支持h5富媒体标准mse使其得到应用、重视,从而促进h5具备原生应用多媒体能力得以大大提升。 3,这是中国程序员在h5音视频领域的一项杰出成果!考虑到类似成果之前还基本出自非中国程序员,这个价值特别值得一说。
GTA5 PC版:解决卡顿和Bug的终极指南
自《侠盗猎车手5》(Grand Theft Auto V)发售以来,它凭借其庞大的开放世界、吸引人的故事情节和深入的角色设定赢得了玩家的广泛好评。 但是,对于PC玩家来说,游戏中的卡顿和Bug可能会影响到游戏的体验。 在这篇文章中,我们将探讨一些常见的问题,并为玩家提供解决方案。 硬件要求和优化:确保你的PC满足或超过游戏的最低系统要求。 如果不是,可能会导致游戏卡顿或不流畅。 考虑升级硬件或降低游戏的图形设置以获得更好的性能。 更新图形驱动:过时的图形驱动程序可能会导致游戏中出现许多问题。 定期检查和更新你的图形驱动可以帮助解决这些问题。 清理背景程序:关闭在后台运行的不必要的应用程序和进程,特别是那些消耗大量资源的程序,如杀毒软件或视频播放软件。 游戏文件完整性检查:如果你通过Steam购买了GTA5,你可以使用Steam的“验证游戏文件完整性”功能来检查和修复游戏中的问题。 修改设置:在游戏内,你可以调整图形设置,如分辨率、纹理质量、阴影质量等,以适应你的硬件配置。 查找专门的修复:许多在线社区和论坛都会分享针对特定Bug的解决方案。 如果你遇到了特定的问题,不妨查找看看是否有其他玩家分享过解决方法。 重新安装游戏:如果上述方法都不能解决问题,考虑重新安装游戏。 但在此之前,确保备份你的游戏存档。 结论:虽然《侠盗猎车手5》PC版可能存在一些技术问题,但是通过一些简单的技巧和方法,玩家可以轻松解决这些问题,从而获得流畅的游戏体验。 希望这篇文章能帮助到正在寻求解决方案的玩家。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。