魔扣论坛

魔扣源码论坛业务
查看: 356|回复: 2

如何让短视频做到”秒播“?(上)

[复制链接]
  • TA的每日心情
    慵懒
    2020-6-24 14:40
  • 签到天数: 90 天

    [LV.6]每天都来

    81

    主题

    0

    回帖

    466

    积分

    中级魔扣

    Rank: 3Rank: 3

    魔扣币
    976
    贡献
    348
    威望
    1
    发表于 2020-3-16 16:45:08 | 显示全部楼层 |阅读模式
    魔扣币兑换比例:【 50以下 : ¥1 = 10 魔扣币 】丨【 50 - 100 :¥1 = 20 魔扣币】丨【 100以上:¥1 = 30 魔扣币 】

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    和直播一样,短视频想要做到“秒播”,不仅仅是要在短视频小程序源码上做优化,还要在服务器上做优化。移动设备的视频播放器是通过某个视频url域名,通过DNS服务请求到IP地址,通过这个IP地址与视频服务器建立TCP链接,在连接之上建立http协议,最终请求到数据,通过播放器进行解析,用户看到画面听到声音,一个短视频的起播流程就结束了。
    那么从这个起播过程入手,可以对以下环节做优化:
    一、域名解析
    耗时原因:DNS请求包会先发到本地DNS服务器,如果查不到,会递归到根域名服务器,这个过程是比较耗时的。如果请求过了,或者期间有其他方请求过相同的域名,那域名服务器就会有缓存,再次请求的时候就很快了;但是一般缓存的周期很短,需要有人不停地请求才能保持更新,所以具有很大的不确定性。
    解决方案:1、注意请求使用的IP协议版本,不管是直播还是短视频,做播放的肯定都绕不过ffmpeg,在ffmpeg里为了兼容性,DNS请求的IP协议版本设置为AF_UNSPEC,这样在请求的时候会先请求IPv6的地址,如果没有再请求IPv4的地址,是很保险,但是在实际的项目中,没有IPv6的地址,造成一直递归到根域名服务器也查不到IPv6地址,极大的浪费了时间,可以使用AF_INET指定请求IPv4地址,节省一半以上的时间,首次请求或缓存过期后请求,耗时大概在大几十毫秒到100毫秒左右。
    2、预置或预解析域名IP地址,对于实现秒内播放来说,100毫秒还是很大一笔时间,这个方案就是提前把域名解析出来,这个方案就是提前把域名解析出来,用的时候直接使用IP地址。但是这种方案有局限性,可能适合特定的音视频直播,对于短视频播放地址比较多样来说操作起来有一定难度,而且还存在CP切流和更换接入CP的情况。
    二、Socket buffer
    耗时原因:TCP connection在客户端的具体操作中基本都是通过socket实现的。在socket中有一个缓冲区的概念,发送端先把数据写到缓冲区,接收端数据也是先经过缓冲区,再从缓冲区读出,移动设备作为接收端,接收端缓冲区设置的太小,影响效率,接收端缓冲区设置的太大,会短时间内消耗带宽,如果带宽不够会引起网络传输问题,还会造成流量的浪费。这些都会影响首屏数据的及时送达。
    解决方案:根据实际情况调整接收端缓冲区大小,通过计算和测试数据得到一个比较合理的值。可以在ffmpeg的network和tcp里进行调整,这是比较低层的修改了,为了通用性可以扩展http/tcp的选项并通过ffmpeg提供的AVDictionary机制在avformat API这一层进行透传相关设置参数。
    三、Probe buffer
    耗时原因:播放端一开始并不能得到要播放的视频的相关信息,比如封装格式、分辨率,音视频编码等信息,需要先读一段数据进来,再对这段数据进行探测,从而得出相应的信息。而存放这段探测数据需要一个buffer,这个buffer若设置的太小可能导致分析不出信息导致重新探测,但是若设置的太大就会增加收流的时间从而影响了首屏的播放,所以太小太大都会引起延迟。
    解决方案:根据实际情况调整这个buffer,通过计算和测试数据得到一个比较合理的值。可以通过ffmpeg的AVFormatContext结构体的probesize和max_analy_duration把对buffer的限制透传下去。
    以上就是让短视频做到”秒播”的一些解决方案,由于篇幅的原因,剩余的几个方面我们留到下期再说。
    直播系统源码、短视频系统源码、一对一直播系统源码开发和出售,vx:17116105317 QQ:3502958486

    该用户从未签到

    2

    主题

    298

    回帖

    598

    积分

    高级魔扣

    Rank: 4

    魔扣币
    298
    贡献
    298
    威望
    0
    发表于 2020-3-16 16:45:43 | 显示全部楼层
    又一轮皎洁的明月,又一个牵动人心的中秋佳节,又一个朋友思念之夜。粒粒相思豆,点点相思雨,绵绵相思情,句句相思语。粒粒红豆永收藏,点点心雨润柔肠,绵绵友情常萦绕,句句思语心内装,魔扣源码论坛。祝友年年平安如意!月月事事顺心!日日喜悦无比!时时开心快乐!

    该用户从未签到

    2

    主题

    255

    回帖

    512

    积分

    高级魔扣

    Rank: 4

    魔扣币
    255
    贡献
    255
    威望
    0
    发表于 2020-5-10 23:19:21 | 显示全部楼层
    你以为我会眼睁睁地看着你去送死吗?魔扣源码论坛,我会闭上眼睛的!  
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    • 联系我们
    • 新浪微博 :
    • 在线客服 :魔扣科技 
    • 源码QQ群 :魔扣源码论坛官方总群
    • 联系邮箱 :charlin#morko.net
    • 微信扫一扫
    快速回复 返回顶部 返回列表