文档章节

直播推流端弱网优化策略 | 直播 SDK 性能优化实践

Gh0stClub
 Gh0stClub
发布于 2016/12/13 11:16
字数 2492
阅读 335
收藏 15

直播无疑是 2016 年的大热话题,七牛云在 6 月底发布了实时流网络 LiveNet 和直播云解决方案后,我们用《直播技术详解》系列文章系统地介绍了直播各个环节的关键技术,帮助视频直播创业者们更全面、深入地了解直播技术,更好地技术选型。

《直播 SDK 性能优化实践》系列文章是介绍七牛云在直播 SDK 上的技术创新实践。欢迎探讨。

弱网优化的场景

网络直播行业经过一年多的快速发展,衍生出了各种各样的玩法。最早的网络直播是主播坐在 PC 前,安装好专业的直播设备(如摄像头和麦克风),然后才能开始直播。后来随着手机性能的提升和直播技术的进步,主播只需要有手机和有网络就可以直播。直播发展到现在,单一的室内聊天互动直播已经无法满足观众的需求。主播们开始走向户外,在更多的场景下直播。

在可以预见的未来,这种直播形式会快速发展。直播的内容会更优质,直播的形式也会从单纯的娱乐转向体验。

直播想延伸到户外需要克服很多困难,而最主要的困难就是应对不稳定的网络。移动网络下,通常容易遇到网络不稳定,连接被重置,断线重连,一方面频繁重连,建立连接需要开销。另一方面尤其是发生 GPRS/2G/3G/4G 切换时,带宽可能出现瓶颈。当带宽不够,帧率较高/码率较高的内容较难发送出去,这个时候就需要我们在不同网络状况执行不同的策略编码推流,让观众可以看到最优质的直播视频。

直播无疑是 2016 年的大热话题,七牛云在 6 月底发布了实时流网络 LiveNet 和直播云解决方案后,我们用《直播技术详解》系列文章系统地介绍了直播各个环节的关键技术,帮助视频直播创业者们更全面、深入地了解直播技术,更好地技术选型。

《直播 SDK 性能优化实践》系列文章是介绍七牛云在直播 SDK 上的技术创新实践。欢迎探讨。

弱网优化的场景

网络直播行业经过一年多的快速发展,衍生出了各种各样的玩法。最早的网络直播是主播坐在 PC 前,安装好专业的直播设备(如摄像头和麦克风),然后才能开始直播。后来随着手机性能的提升和直播技术的进步,主播只需要有手机和有网络就可以直播。直播发展到现在,单一的室内聊天互动直播已经无法满足观众的需求。主播们开始走向户外,在更多的场景下直播。

在可以预见的未来,这种直播形式会快速发展。直播的内容会更优质,直播的形式也会从单纯的娱乐转向体验。

直播想延伸到户外需要克服很多困难,而最主要的困难就是应对不稳定的网络。移动网络下,通常容易遇到网络不稳定,连接被重置,断线重连,一方面频繁重连,建立连接需要开销。另一方面尤其是发生 GPRS/2G/3G/4G 切换时,带宽可能出现瓶颈。当带宽不够,帧率较高/码率较高的内容较难发送出去,这个时候就需要我们在不同网络状况执行不同的策略编码推流,让观众可以看到最优质的直播视频。

弱网优化的原理

思路一: 根据上行带宽的状况来调整码率、FPS、分辨率

弱网优化其实有一个概念性的东西,我们如何评价一个推流方案,它的弱网优化好不好?首先我们要知道三个概念,这个是和解码器相关的,码率(BitRate)、FPS(video frame per second)、分辨率(VideoSize)。

人们对视频流的感受集中在卡顿、模糊等消极的情况,在 UGC 、 PGC 的直播场景中,这些情况时常发生。直播推流对实时性的要求很高,为了保证实时性,在网络带宽不足或者上行速度不佳的情况下,都需要做出选择。要么选择更好的流畅度但牺牲清晰度(模糊),要么选择更好的清晰度但牺牲流畅度(卡顿)。当选定了一个分辨率后,推流过程中就不会对分辨率做变更,但可以对码率和 FPS 做出调节,从而达到上述两种情况的选择。

图像说明文字

通过这个关联,我们就可以容易的知道该如何从技术层面做出调整。在追求更好的流畅度时,我们可以适当降低码率。如果 FPS 已经较高(如 30)时,可以维持 FPS 不变更;如果此时因码率太低而画面无法接受,可以再适当调低 FPS。在追求更清晰的画质时,可以提高码率,FPS 调节至 24 左右人眼大多还会识别为流畅。如果可以接受有轻微卡顿,那么可以将 FPS 设置的更低,比如 20 甚至 15。

总之,这三者之间一起构建了画面清晰和视频流畅的感觉,但最终参数是否能满意需要不断调整和调优,从而满足产品层面的需求。

思路二: 通过高压缩比的编码技术,比如:H.265

当然动态调整编码策略是一种应对方式,而直接提高视频流的压缩比降低直播对网络的要求也是一种策略。目前如果使用 H.265 编码就可以降低 40% 的带宽占用。但是目前的在手机直播上用 H.265 编码还有很多的问题要解决。比如 H.265 编码对移动端来说性能开销过大,相继会带来的问题还有发热过高、掉电过快等问题。

七牛在弱网优化上做了什么

很显然弱网优化在目前多样化的直播行业中是一个非常有用功能,所以七牛直播云的 SDK 也在这方面做出了大量的努力,下面可以分享下思路和效果。

根据大量客户的反馈定制优秀的弱网优化策略

所谓弱网优化的本质是一种策略。而弱网优化的效果取决于以下两点:

1)更精确和细粒度的检测网络的状况,便于推流端 SDK 调整参数。

2)更丰富的策略和更合理的选择。当 SDK 精确的反馈了网络的状况,我们需要做出正确的判断选择出一种合适的策略来应对。

要做到以上两点,就需要有大量的用户反馈来验证策略的可靠性和效果。七牛直播云已经通过了很多客户的验证,而且集成七牛直播推流 SDK 时不需要做任何的配置,默认就会打开这个功能。

极其优秀的优化效果

弱网优化报告-iOS

测试目标:比较七牛和某著名直播 App 在弱网下的直播表现

测试范围:七牛 iOS 推流 demo 、某著名直播 App

测试策略:使用 atc 弱网工具模拟 10%的丢包率的网络,同时使用七牛 demo 和某著名直播 App 直播时钟走时 5 分钟,并使用 SrsPlayer 播放(播放器参数相同),分别查看播放效果,统计卡顿次数。

测试结果:好网丢包率 10% 的情况下,七牛 iOS 的表现稍优于某著名直播 App 的 iOS 端。

图像说明文字

弱网优化报告-Android

测试目标:比较 Android 端七牛和著名直播 App 在弱网下直播的表现

测试范围:七牛 Android 推流 demo、某著名直播 App 的 Android 端

测试策略:分别从限制上下行和设置丢包率的角度进行弱网的模拟。具体设置的弱网环境,见以下内容。

使用 atc 弱网工具分别模拟 3G 网和好网下 10% 丢包率的网络,同时使用七牛 Android 推流 demo、某著名直播 App 的 Android 端、直播时钟走时 5 分钟,并使用 SrsPlayer 播放,分别查看播放效果,统计卡顿次数。

测试结果: 3G 弱网丢包率 0 的情况下,七牛 Android 的表现优于某著名直播 App 的 Android 端。 好网丢包率 10% 的情况下,七牛 Android 的表现稍优于某著名直播 App 的 Android 端。

测试数据: 3G 网络:

1)3G 网丢包率 0(上行 420 Kbps,下行 850 Kbps): 图像说明文字

2)好网丢包率 10%: 图像说明文字

结语

弱网优化在直播领域是一个非常值得深挖的功能。虽然网络质量一直在升级,但是观众的要求也会越来越高。如何根据网络状况动态变化调整到最佳观看体验码流是一门艺术。

这里还可以展开更前沿的展望,比如我们把动态调整的策略做成一个放在云端的库。而每个终端会反馈弱网优化策略的使用结果,这些海量的结果数据可以通过机器学习建模出更优质的策略,最后把这些策略又回馈到各个终端。

© 著作权归作者所有

Gh0stClub
粉丝 6
博文 11
码字总数 14149
作品 0
石家庄
程序员
私信 提问
如何做好 Android 端音视频测试?

  网易云信(https://netease.im/)主要有四款音视频产品,有实时音SDK、直播SDK、播放SDK以及短视频SDK。实时音SDK主要覆盖安卓、IOS、PC、Mac、Web端;直播和播放SDK主要覆盖安卓、IOS、P...

yinengronghe
2018/03/17
0
0
什么是最佳的视频用户体验?阿里云视频服务四大体验优化实践

5月29日,VEA中国视频体验联盟与VideoCTO联合主办“中国视频体验CTO论坛”在成都圆满落幕。该论坛旨在邀请视频产业生态链的经理人与技术专家,共同探讨视频体验评估标准,推动内容分发产业发...

zhaowei121
06/05
0
0
网页端实时音视频服务架构与实践

本文整理自RTC大会,陈功的演讲《网页端实时音视频服务架构与实践》。 网页端的实时通信有什么特点 首先,在浏览器端,依赖于浏览器获取音视频的能力,以及强大的网页上的渲染能力,所以,就...

Agora
2017/11/27
0
0
移动直播技术秒开优化经验(七牛)@高可用架构

编者按:本文由徐立在高可用架构群分享,转载请注明来自@高可用架构。 徐立,七牛创始合伙人兼产品副总裁,负责七牛直播云的整体研发,是国内 Go / Docker / Container 技术早期布道者,Go ...

秦无炎
2016/10/25
37
0
如何快速搭建一个完整的移动直播系统?

移动直播行业的火热会在很长一段时间内持续,通过和各行业的整合,从而成为具有无限可能性的行业。主要因为以下三个原因: 移动直播的UGC生产模式比PC端的直播更明显,人人都有设备,随时随地...

我是王雪梨
2016/07/18
4K
3

没有更多内容

加载失败,请刷新页面

加载更多

仿优酷客户端底部导航源码

实现类似优酷客户端底部导航菜单按钮。效果十分炫,用户拖动列表是,导航按钮自动隐藏。点击某个按钮,更多按钮会从底部引出。具体效果请看视频。测试时,需将模拟器的语言区域设置成中国。该...

CAIYOUE
16分钟前
0
0
springboot项目打包docker镜像

第一步、项目打包 首先将你的项目打包成jar包 第二步、将jar包上传到服务器 第三步、Dockerfile Dockerfile.txt 内容 FROM openjdk:8-jdk-alpineADD dockertest.jar app.jarEXPOSE 8080...

嘴角轻扬30
18分钟前
1
0
ssh,scp带密码操作

ssh,scp带密码操作 1、远程执行,带密码参数 sshpass 安装命令: yum install sshpass 执行命令: sshpass -p "mima" ssh root@localhost --------参数小写p,密码mima 2、非22端口 ssh -p 9......

linjin200
22分钟前
0
0
三种百度网盘加速器,轻松突破10M/S,总有一款适合你!

这几天群里有同学一直抱怨百度网盘下载电影和学习资料太慢了,让我帮忙推荐几款可以提高速度的软件,其实市面上已经有不少软件在干这件事了,今天我就来详细介绍几个软件,注意:只有pc端,没...

lwaif
23分钟前
1
0
RDS MySQL 8.0 语句级并发控制

RDS MySQL 8.0 语句级并发控制 背景 为了应对突发的数据库请求流量,资源消耗过载的语句访问,SQL 访问模型的变化, 并保持 MySQL 实例持续稳定运行,AliSQL 版本设计了基于语句规则的并发控...

zhaowei121
27分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部