玩转直播系列之从 0 到 1 构建简单直播系统(1) (2)

通过访问 :8090/control/get?room=movie 就可以获取用于推流的 channelkey,如下所示,其中 data 字段就是此次获取到的 channelkey。

{ "status": 200, "data": "rfBd56ti2SMtYvSgD5xAV0YU99zampta7Z7S575KLkIZ9PYk" } 复制代码

到现在,推流地址和 channelkey 都有了,只需要在OBS里面进行相关设置就可以进行推流。首先点击“控件”的“设置”按钮,进入设置面板。

玩转直播系列之从 0 到 1 构建简单直播系统(1)

然后,选择“推流”选项。服务选择“自定义”,服务器设置为:rtmp://localhost:1935/live,串流密钥设置为前面获取到的 channelkey:rfBd56ti2SMtYvSgD5xAV0YU99zampta7Z7S575KLkIZ9PYk 。设置好后,点击“控件”的“开始推流”按钮,就可以进行推流了。

玩转直播系列之从 0 到 1 构建简单直播系统(1)

一般情况下,默认的输出配置就足以应付大多数场景了,但是要想获得更适合自己想要的的直播效果的话,可以在“输出”选项里设置“高级”输出模式,对此无需求的话可以直接跳过本部分。如下图所示,在高级输出设置界面,可以对串流、录像、音频和回放缓存进行配置,其中,最重要的就是对串流的设置。编码器软件可以选择 x264 和 QuickSync H.264,使用强大的 x264就可以。“重新缩放输出”可以设置输出的分辨率,默认使用原视频的分辨率。

玩转直播系列之从 0 到 1 构建简单直播系统(1)

比特率(码率)的含义是视频经过压缩编码后每秒的数据量的大小,单位是 Kbps,此处 K=1000。该值越大,每秒推送的视频数据流就越大,视频质量也越高,但是占用的带宽也更多,可以根据需要进行调整,一般秀场直播常用2000~2500Kbps就可,游戏直播可能对码率的要求比较高一点,可以做对应的调整。

直播推流时,可以使用多种码率控制方式,主要有CBR、ABR、VBR和CRF。

CBR(Constant Bitrate)恒定码率,一定时间范围内比特率基本保持恒定。使用该模式时,在视频动态画面较多的场景下,图像质量会变差,而在静态画面较多的场景下,图像质量又会变好。

VBR(Variable Bitrate)可变码率,其码率可以随着图像的复杂程度的不同而变化。使用该模式时,在图像内容比较简单的场景下,分配较少的码率,而在图像内容复杂的场景下,则分配较多的码率。这样既保证了质量,又兼顾到带宽限制,优先考虑到图像质量。

ABR(Average Bitrate)平均比特率,是VBR的一种插值参数。简单场景分配较低码率,复杂场景分配足够码率,这一点类似VBR。同时,一定时间内平均码率又接近设置的目标码率,这一点又类似CBR。可以认为ABR是CBR和VBR的折中方案。

CRF(Constant Rate Factor)恒定码率系数。CRF值可以理解为对视频的清晰度和流畅度期望的一个固定输出值,即无论是在复杂场景还是在简单场景下,都希望有一个稳定的主观视频质量。

关键帧间隔(Group of Pictures,GOP)指的是一组由一个I帧、多个P帧和B帧组成的一个帧序列。一帧就是视频中的一个画面,其中:

I帧(intra coded picture):最完整的画面,自带全部信息,无需参考其他帧即可解码,每个GOP都是以I帧开始;

P帧(predictive coded picture):帧间预测编码帧,需要参考前面的I帧或P帧,才能进行解码,压缩率较高;

B帧(bipredictive coded picture):双向预测编码帧,以前帧后帧作为参考帧,压缩率最高。

对于普通视频,加大GOP长度有利于减小视频体积,但是在直播场景下,GOP过大会导致客户端的首屏播放时间变长。GOP越小图片质量越高,建议设为2秒,最长不要超过4秒。

3.3 直播流观看

我们刚刚已经搭建完成了RTMP服务器,并且使用目前比较成熟,功能比较丰富的推流工具OBS进行推流,接下来我们就要解决如何在用户终端进行观看了的问题。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwdsgp.html