经常会看到,很多公司都在带宽和卡顿中抉择,想把H.265编码格式做为视频编码格式普及开来,用于直播电商源码播放,无论在TV上,还是手机上,由于很多设备不支持这种编码格式,所以往往要做适配。有人问,为什么大家都在说切H.265?

H.265是ITU-T VCEG 继H.264之后所制定的新的视频编码标准。H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术,同时对一些相关的技术加以改进。新技术使用先进的技术用以改善码流、编码质量、延时和算法复杂度之间的关系,达到最优化设置。具体的研究内容包括:提高压缩效率、提高鲁棒性和错误恢复能力、减少实时的时延、减少信道获取时间和随机接入时延、降低复杂度等。H264由于算法优化,可以低于1Mbps的速度实现标清数字图像传送;H265则可以实现利用1~2Mbps的传输速度传送720P(分辨率1280*720)普通高清音视频传送。

回到商业目的本质上来,就是为直播电商源码省带宽。在有限带宽下传输更高质量的网络视频。这就是相比于H.264最突出的。当然还有有些在算法优化上,更高效。最终都是省带宽。打个比方理解,原来10M带宽,可以传输1T的网络视频,现在用H.265编码格式,可以传输2T的同等清晰度的网络视频。要用H.265来做编码格式,其代价就是设备计算能力:H.265编码的视频需要更多的计算能力来解码。所以,经常看到手机发烫,电视盒子发烧,手机更加耗电。因为会把CPU一下飙起来。前面都是闲话,今天总结下直播电商源码如何快速起播直播流。直播行业流传一句话,现在的直播应用,没有混到首屏秒开,都不好意思,说自己是搞直播的。这句话不是没有道理的。现在直播应用,基本都是首屏秒开的。

对于直播电商源码来讲,它是一个流,它不像点播,大家都从0秒开始,任何一个视频文件,0秒第一个帧肯定都是关键帧。那么对于直播来讲,是一个随机的时间点接到这个视频流进行播放,那么我接入的这个时间点的帧有可能拿到的第一个帧的数据是I帧,也有可能是B帧,也有可能是P帧。这是一个随机的。在这种情况下,我们大概率会出现一个黑屏的状态。因为我拿到的是个P帧,对于P帧来讲,解码器面那个Buffer是空的,它不知道这个P帧如何进行解码,所以它只能丢弃这个帧。

先来看一个花屏,解释参考帧丢失,I帧是关键帧,一个完整画面,可以独立解码,P帧,是前向预测编码帧,可以理解为运动补偿帧,根据关键帧+运动补偿预测下一个关键帧。B帧,是双向预测编码帧,也是用来预测修补下一个I帧,所以B帧,P帧统称为参考帧。如 I P P B I 如下

视频流是1080*1920分辨率的。用1080*720的,没有任何问题。猜测如下原因:

  • 同一种视频封装格式,分辨率越小,花屏现象越少。

  • 分辨率越小,服务端发送给客户端的数据越小,其花屏现象越少,说明花屏现象与服务端发送的数据量有关。

  • 可能的原因是服务端发送的数据量较大时,客户端缓冲区不足,导致数据丢失的问题,从而引起花屏现象。

对于直播电商源码来讲,我一秒钟的帧数是固定的,只能等到我下一个关键帧到来的时候,我才能开始去播放。当然正好赶巧了的话,接入那瞬间得到的数据正好是个I帧。就可以达到秒开的效果。

直播电商源码的服务端优化,CDN 预缓存 GOP,以高倍速推送,缩短I帧等待时间:

  • 在直播服务器中,支持设置一个cache,用于存放GOP(就是I/P/B组起来的),客户端播放。 
    直播服务器缓存了当前的GOP序列,当播放端请求数据的时候,CDN会从I帧返回给客户端,从而保证客户端可以快速获取I 帧进行显示;当然,由于缓存的是之前的视频信息,当音频数据到达播放端后,为了音视频同步,播放器会进行视频的快进处理(也就是赶上,据说百度视频云,在~“赶上”~这块,还专门写了专利),但这种影响很小;相比于能够达到“秒开”的效果,这个代价是值得的;

播放端优化:

DNS解析加快,通常,DNS解析,意味着要把一个域名为xxx.com解析成ip过程,平时请求网页,网络差,就会打开网页半天。

修改播放器逻辑,基于FFmpeg二次开发,FFmpeg起播视频,都是拿到视频完整信息,才起播。能不不能只拿到部分信息,就起播。就要修改代码了。通常FFmpeg起播时,finder_decoder, avformat_find_stream_info较耗时,前者去找解码器,相对后者,又不那么耗时,凡事都有相对。在avformat.h声明。在libavformat\utils.c中实现如下:

finder_decoder:

avformat_find_stream_info:

这里优化后者,主要修改两个参数,一个是 probesize,一个是 analyzeduration,分别用来控制其读取的数据量大小和时长。减少 probesize 和 analyzeduration 可以降低avformat_find_stream_info 的函数耗时,达到起播快。

如果是基于ijkplayer二次开发的,不用修改c层,直接在ijkVideoView.java中,也可以作相应修改。

注意:修改任何参数,都是有代价的,要视具体情况。这个值修改,大小,可能播不起来,这种情况就坑了,如果是先有画面,在有声音,音画不同步。

还有一些方法如,直播电商源码识别首个关键帧即启动播放,或者通过减小GOP间隔来提高加载速度;也是可以达到的。

直播电商源码的优化是一个渐进的过程,从表面显而易见的开始,逐步拆解流程,找到可能的优化点,对这些点逐个分析,找到性能瓶颈,然后想办法解决。当然优化有时也需要权衡代价和效果,重点先解决性价比比较高的优化点。

直播电商源码是怎样实现快速打开直播的相关推荐

  1. 直播电商源码,通过vue实现直播聊天

    基于vue2.0+vue-cli+vuex+vue-router+webpack+es6+wcPop等技术开发的直播电商源码聊天室vue-chatRoom,实现了直播电商源码聊天功能,新增了消息下拉刷 ...

  2. 优化音质是直播电商源码不能忽略的

    最近直播电商源码在使用WebRTC进行直播推流的时候,遇到了音乐音质不好的问题,对此进行优化后,音乐音质有很大提升,因此记录下优化过程,分享出来 1. 关闭AEC,AGC,NS 因为WebRTC是专为 ...

  3. 直播电商源码使用缓存,将面临什么问题

    直播电商源码使用缓存的设计包含很多技巧,设计不当将会导致严重的后果.本文将介绍缓存使用中常见的三大问题,并给出相应的解决方案. 1. 缓存穿透 在大多数直播电商源码中,缓存的使用方式如下图所示: 当业 ...

  4. 直播电商源码,简述直播的实现原理

    现在直播非常火爆,可以从PC或手机直播,然后从PC或是手机或是 支持HTML5的浏览器 收看.但是,你知道直播电商源码后面的技术和实现原理码? 首先,视频有它的播放协议.原则上,RTSP,RTMP,H ...

  5. 直播电商源码如何实现开屏广告

    直播电商源码如何实现开屏广告的相关代码 1.1 添加SplashView. 在XML布局文件中添加SplashView. Xml 代码 <?xml version="1.0" ...

  6. JAVA多语言多商户跨境电商源码

    多语言无货源跨境电商源码是一个功能强大的电子商务平台,该平台具有许多先进的功能和特点,可以帮助用户轻松地开展跨境电商业务. 一.主要功能介绍 多语言支持:该平台支持多语言,包括英语.中文.法语.西班牙 ...

  7. 微信小程序电商源码:外卖小程序,电商小程序,门店类小程序,展示类小程序,批发商城小程序、分销小程序。

    介绍: 1.naicha 2.xianhua 3.xingbake 4.zhubaoxiao 5.zhubaoxiao 6.majiangshangcheng 7.jiafang 8.huazhuan ...

  8. 赶上直播电商、在线教育、小程序直播的风口 腾讯音视频解决方案助力

    小暑 发自 凹非寺  量子位 编辑 | 公众号 QbitAI 从18年至今音视频产品市场暴增20倍以上.疫情期间,远程会议.在线课堂等业务井喷带来了音视频流量的急剧增长.腾讯云实时音视频日均通话时长突 ...

  9. java版商城 springcloud+springboot+mybatis+redis+uniapp 多商户电子商务源码 直播带货源码 短视频带货源码 社交电商源码 分布式 微服务电子商务源码

    涉及平台:平台管理(包含自营店面).商家端(PC端.手机端).买家平台(PC端.H5/公众号.小程序.APP端(IOS/Android).微服务平台(业务服务) 核心架构:Spring Cloud.S ...

最新文章

  1. python学习笔记(15)循环设计
  2. linux 备份iphone,用linux搭建Mac备份服务器,伪TimeCapsule
  3. poj 1815(最小割、割集)
  4. 让div不占位置_开箱测评户外折叠桌椅,收纳起来真的不占位置,强行不血亏啊!...
  5. 数据结构面试常见问题
  6. 从《黑暗森林》到《萤火意志》:外表与内在极度失衡的“艺术品”
  7. 气死老师的作文(转贴)
  8. Linux详细到爆炸的一篇文章
  9. python实现mysql二叉树_python环境下使用mysql数据及数据结构和二叉树算法(图)...
  10. js在浏览器中对cookie进行增删改查
  11. 一小时电动力学 02 麦克斯韦方程组
  12. python中的科学计数法表示
  13. 小程序 项目文件夹命名导致的Bug
  14. java的山形命名_厦门“鸡地名”共有20处 多因山形像鸡而得名
  15. HEVC一些工具汇总
  16. 解决win7自带天气小工具不能使用
  17. 网络安全学习查询黑客
  18. Arduino 操控 12v 电压控制电磁铁 (线性振动马达?
  19. RDP 优化操作 微软远程桌面 开启显卡加速、60FPS、USB设备重定向
  20. 漫画:博弈论系列 之 辛普森悖论

热门文章

  1. 小游戏内测|如何增加小游戏流量分发渠道
  2. 聊聊QD=1:下一代非易失性存储(NG-NVM)对PCIe SSD和SSD驱动器意味着什么
  3. 代码动态设置tabLayout 导航条宽度
  4. 微信“摇一摇·周边”正式开放
  5. 2021年中国水稻(稻谷)种植面积、产量、单产量及进出口情况分析:种植面积小幅减少,但产量出现小幅增长[图]
  6. [软工导论③]实验报告三(机票预订系统的需求分析建模、总体结构设计、详细设计、测试))
  7. 国外摄影 可使用下载_何时以及如何租用摄影器材
  8. CSDN 学院奉绵薄之力,为程序员做点公益!
  9. 顶级的 Bootstrap 日期选择器和时间选择器插件(附免费下载链接)
  10. 【Windows】电脑成功连接网络却无法上网?