直播产品六大痛点终极对策

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

七牛云一站式视频点播和直播解决方案直播产品六大痛点终极对策经过千播大战的洗礼,整个直播市场逐渐趋于理性成熟,但直播的市场规模却在增加,与整个市场一起成长的除了直播平台,也有底层的技术供应商,在服务过千家直播客户后,七牛云对直播产品痛点有了更好的把握,这里分享七牛云直播云SDK技术负责人在泛娱乐沙龙上针对直播首开慢、卡顿、延时高、排障困难、盗链、流量高六大痛点的终极对策。研发要做的事情就是通过技术手段,让产品、销售、CEO们在直播产品上吹出去的牛能够顺利落地。首先,我们看看在不同的人眼里都是怎么样定义泛娱乐?下面图左边是一个产品经理、销售或者CEO,右边是一个程序员:七牛云一站式视频点播和直播解决方案在产品经理和老板眼里,什么是泛娱乐?泛娱乐是IP,是艺术,是文学,是音乐、是影视……在程序员的眼里什么是泛娱乐,泛娱乐是存储,是带宽,是音视频编解码,是传输技术,是CDN……在程序员的脑海里,永远想的是如何用技术让泛娱乐的各种应用能够得到最佳的用户体验,下面我们就以直播产品的角度看一下其背后有哪些痛点,技术又是如何解决它的痛点的。总结下来,直播的痛点主要有以下几个方面,首开慢、播放卡顿、延时高、排障困难、盗链、流量高/费用高。1.首开慢首先看一下首开慢这个问题。什么是首开,首开就是用户点击一个视频,从点击视频到第一帧画面显示出来所花的时间,这个时间越短,用户体验越好。我们可以简单看一下首开的速度和用户体验之间的关系:七牛云一站式视频点播和直播解决方案以内,体验会很好,达到一秒钟才点开这个画面用户觉得有点慢,但是可以等一下看。但是如果超过一秒,用户会说这个应用怎么这么慢,我要切一下应用了,如果超过10秒还点不开,用户会觉得,服务器是不是宕机了?那么,技术上,怎么样去提高首开的体验呢?1.1服务端的优化如图所示,左边是主播,右边是观众,主播的直播流通过服务器到达观众,主播端采集的画面经过H.264编码后,会压缩为一个个I,B,P帧,其中,I帧是指关键帧,可以直接解码显示,P帧要参考前面的帧才可以正常显示,因此,观众端的播放器等到一个关键帧才可以开始解码和显示画面。假设主播推流的过程中,观众如果正好从某一个P帧开始拉流的话,那对不起,收到的P七牛云一站式视频点播和直播解决方案帧可能都会被丢掉,直到遇到一个I帧才会被解码播放,中间P帧的个数越多,延时就会越大,首开体验越慢。当然如果正好观众拉流的时候,第一个帧就是I帧,就不用等了,直接解码播放了,这个首开就会非常快。那么,我们怎么样做到在任何情况下,观众很快拿到I帧呢?我们可以在服务端,把上一个GOP缓存起来,这样,无论观众在任何时候申请码流,服务器首先会下发这个缓存起来的GOP,这样,就做到了任何时候,播放端都可以很快收到关键帧,并且解码显示出来。1.2客户端的优化如图所示,这个是播放器播放视频流全过程,哪些环节可以做优化呢?1.可以提前完成服务器域名-IP的解析2.优化视频的媒体信息解析过程,特别是使用了ffmpeg的播放器3.播放器还没有显示首帧之前,不做任何缓冲,立即渲染2播放卡顿卡顿这个大家都有体验,就是在看视频的时候,出现不断地转圈圈,那么,技术上又是如何优化这个体验呢?七牛云一站式视频点播和直播解决方案如图所示,一个视频流从主播端到CDN再到观众端,经过这么多环节,我们作为观众,点击视频发现卡顿,其实引发的原因有很多种,如果是主播端或者服务端的不稳定,则会引起全局的卡顿,而如果只是观众端下行不稳,则只会触发个体的卡顿。因此,首先我们要去判断卡顿的原因,那么,有哪些判断手段呢?2.1卡顿原因判断如果所示,我们可以用speedtest测速网站测试一下当前的网络带宽,如图可以看到,当前的下行带宽只有4.8Mbps,如果视频流的码率超过4.8Mbps,自然会导致播放卡顿。主播端,除了通过测速软件测试上行带宽外,还有什么好的方法呢?七牛云一站式视频点播和直播解决方案厂商,都会在后台提供实时的推流监控曲线,如图我们可以看到,该主播的推流帧率、码率还是很平稳的,因此,不会产生卡顿。一般卡顿的主播,视频帧率&码率都会频繁波动。2.2主播端的优化如果卡顿是由主播端引发的,如何优化呢?主播端,可以动态调整推流的码率,例如,当检测到当前带宽只有500Kbps的时候,可以主动把码率降低到500Kbps,而不是强行推1000Kbps,这样可以显著减少卡顿的出现。2.3播放端的优化是由播放端引发卡顿如何优化。七牛云一站式视频点播和直播解决方案首先,我们可以在服务端添加实时转码,将主播推上来的1000Kbps的码流转换为多种码率,比如800Kbps,500Kbps,相当于平时我们在视频网站点播视频的超清、高清、标清之类的,当个别观众端由于下行带宽不足,遇到比较卡的时候,可以切换到低码率的流进行观看。3.直播延时高首先我们聊一聊,直播延时怎么测?最简单常用的方法就是主播摄像头对一个北京时间,观众也对着北京时间,对比两者的差值,就拿到了延时参数。有一些延时,是无法避免的,比如编解码耗时、网络传输经过的物理距离等等,但是,有一些延时是可以优化避免的,这些延时主要是由于业务缓冲区带来的,假设1秒钟30帧的视频,你只要缓存30帧,延时就会多1秒,从推流端、CDN到播放器,任何一端的缓存,都会带来延时。那么,延时怎么优化呢?七牛云一站式视频点播和直播解决方案如图所示,由于帧缓冲带来的延时,根本解决办法就是在主播端和观众端主动丢帧,另外,服务端也可以通过调度,选择最佳的线路,减少因为服务器的响应慢和距离导致的延时。4.排障困难我们再看看直播的另一个痛点,那就是排障困难。做直播App的公司大家都会遇到一些问题,比如黑屏、闪屏、花屏、马赛克、发烫、杂音、噪声、回声、线上崩溃、播放失败,音画不同步、拖动不准,关于这些疑难杂症,我们有一个系列的文章专门介绍过。具体如何排障?(1)直播落存储-回放分析其实直播这个东西是稍纵即逝的,主播出现某个问题了,刚刚报到研发这边,研发这边再去看,可能这个问题就过了,如果说有存储,就是这个直播过程都存储的,这个直播就可以还原现场,看一下当时发生了什么,判断这个问题来自哪里比如说主播回放的时候接电话了,导致黑屏没有声音了,我们会去排查一下是不是在接电话这个环节上没有处理好。(2)线上crash收集+日志落存储第二个则是要主动收集线上的crash信息,目前的一些crash收集工具,只能收集线上crash的堆栈,这是远远不够的,最好的情况是,crash后,能把当前上下文的日志信息上传到存储,只有这样,程序员才能更好地分析crash,还原现场。七牛的DEMSDK实现了crash+日志落存储功能,大家可以申请试用。七牛云一站式视频点播和直播解决方案(3)直播流metadata添加必要的排障信息如图所示,就是我们的流包含的系统信息,包括:手机信号,系统版本,网络运营商,软硬编参数等等,通过这些信息,可以很容易分析推流的一些环境信息,加快排障过程。(4)推流&播放状态数据实时上报,在线分析我们可以在推流&播放的时候,将一些状态数据实时上报到服务端,进行在线分析,比如手机的内存剩余、CPU占用率、App状态&事件、采集&编码&发送帧率/码率等等。5.盗链盗链是一个非常让人痛恨的事情,不仅版权泄漏,同时还要承担额外的CDN流量费用,怎么才能更好地从技术角度解决盗链问题呢?5.1Referer防盗链七牛云一站式视频点播和直播解决方案如图所示,是通过referer方式来防盗链的方案,referer是httpheader的一部分,当浏览器向Web服务器发送请求的时候,一般会带上Referer信息,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理,当发现来源不合法的时候,可以拒绝返回有效数据。当然,本方案有个漏洞,只能解决通过浏览器非法访问视频产生的盗链,但是如果盗链者脱离浏览器伪造referer来访问视频,无法很好地识别。5.2时间戳防盗链如图所示,第二种方式则是时间戳防盗链你可以计算一个Token,可以临时通过资源地址&有效的时长,经过加密生存一个Token字符串,然后将这个Token发给CDN,CDN会解密出来,校验是否合法的,不合法就拒绝返回有效数据由于Token是临时生成的,并且有时效的,比如某个token的时效只有一分钟,那一分钟之后,即使你拷贝了这个链接去访问视频流,服务器会发现该token过期,从而解决盗链问题。6.流量高&费用贵当然,当你感受到流量高&费用贵的时候,恭喜你,已经成为比较大直播app了,那么,怎样降低直播的带宽和流量呢?一个可行的方案:H.265H.265可以在同等画质下,节省30%到50%的左右的带宽,而且,直播落储存后,同样节省50%左右的存储空间。另外,还能提升用户体验,有效地解决带宽占用高导致的卡顿问题,以及码率低导致的马赛克问题。七牛云一站式视频点播和直播解决方案那么,什么样的H.265解决方案,才是完整的方案呢?在我看来,有如下几点:1.客户端要支持H.265的编码和解码2.服务端也要支持H.265和H.264的互转举个例子,一般浏览器是不支持H.265的解码的,所以说服务端一定要能把H.265的流,转成H.264的流,这样就可以兼容浏览器的播放,同样也可以满足更多还没有升级到支持H.265播放器的用户。直播应用的场景会越来越多,也会对技术提出更多的挑战,我们会遇到更多产品需求和技术的碰撞,相信这些碰撞会产生巨大的商业价值。而我们作为研发能做的,就是尽力去圆上产品的构想,让那些牛逼闪闪的点子快速落地。

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功