直播录制和故障排查

大家好,本文档主要是分享下怎么进行直播录制和问题排查思路

直播分为推流和拉流。推流是从本地通过推流工具将音视频推到直播服务器,然后客户端通过拉流地址去获取流。

推流软件

目前主流的直播推流软件是使用开源的 OBS,它支持各个 PC 端平台,比如 Windows linux mac系统等,我们要获取直播软件,需要去它的官网下载

官网:https://obsproject.com/

下载对应平台的程序包后,我们要进行安装,Windows 的安装直接点击下一步下一步就可以,不过可能需要去微软官网下载几个包进行安装,注意要下载32位的安装包。这个在安装过程会有弹出对话框提示你的,注意看下提示。安装完成后,我们打开 OBS

在来源中我们点击右键选择对应的来源,比如本地音视频或者桌面、摄像头等等,这个需要自己一个一个去研究下了,我这里以推一个本地的 MP4文件为例来进行讲解

我们右键添加–媒体源,输入媒体源的名称,我这里默认点击确定

选择本地的文件,然后点击确定

这样视频就添加进来了,在主程序可以看到预览,但是会有一大块是黑色部分,我们调整下

选择刚才添加的媒体源右键–变换–拉伸到屏幕

然后在观察下变化

设置推流地址

点击主程序的设置

选择串流—串流类型选择自定义流媒体服务器,在 URL 中输入你的推流地址和接入点和流密钥,然后点击确定

推流地址 接入点 流密钥 这三个参数需要自己在又拍云的后台设置并获取,具体如何获取可以参考这个视频教程

推流地址比如我这边是test.v0.v5linux.com 接入点是 live 流名是lol

那么 rtmp 格式的流名就是:rtmp://test.v0.v5linux.com/live/lol

拉流

可以通过拉流播放进行拉流,又拍云后台配置完模式是支持 rmtp的,当然你也可以开启 HTTP-FLVHTTP-HLS

可以安装 vlc 播放器,打开媒体

选择网络,然后输入拉流地址

比如我的拉流域名是test.b0.v5linux.com。那么我上面推流的接入点是 live。流名是 lol,那么播放地址如下

rtmp: rtmp//test.b0.v5linux.com/live/lol
http-flv: http://test.b0.v5linux.com/live/lol.flv
m3u8: http://test.b0.v5linux.com/live/lol.m3u8

播放效果

如何判断推流卡还是播放(拉流)卡

1.推流排查

推流端应当有一个良好的网络环境,否则推流极容易失败,推流是基于 RTMP 协议的。RMTP协议要经过一系列的,RTMP如何建立连接的,可以参考这篇文章

如果这中间出现了异常,肯定是客户端的问题。当然 OBS 主界面的一些参数也可以辅助我们判断推流端是否卡,注意下图红色圈过的地方有:

  • 丢帧,0表示正常,稍微有一点也没有关系,如果这个值特别大,一定是本地上行网络不好。
  • CPU:如果 CPU 使用率特别高,也会导致卡顿
  • kb/s:码率,如果码率特别低也是会造成无法推流或卡顿的现象。

此外,如果出现重新连接,也是本地网络不好

另外,你也可以 ping 下推流地址看看 ping 值是否过高,是否丢包,将这个信息记录下来


上面的是正常的,没有问题,如果出现这样的情况,首先判断是不是本地网络问题

然后可以通过 trzceroute 或者 Windows 的 tracert 命令进行判断是不是路由出现了问题,比如这种的,一直到程序运行结束都没有到达目标网络就可能是有问题的

另外也可以用mtr 去看下中间链路是不是丢包

$ mtr test.v0.v5linux.com

比如这中间的 ip loss%值 是不是很大

上面这个方法同样适用于拉流,当然这个需要一些网络和系统功底的才能做。如果你不懂,可以下载https://www.ipip.net/download.html#ip_trace basetrace 这个软件,图形化的界面,非常好用。输入域名或 ip,选择 dns 进行测试。

2.拉流排查

上面说了如何使用 vlc 进行播放,但是 vlc 播放花屏、卡住等现象,我们不能进行分析,我们可以通过如下方法进行分析

打开http://ossrs.net/srs.release/trunk/research/players/srs_player.html
填写你的拉流地址

如果出现下面的情况,请检查浏览器是否按照 flash 播放器

比如 chrome 要在内容中运行 flash

如果出现黑屏,并且卡顿的现象

可以调整缓冲区大小

和最大缓冲区

另外卡顿多少次,也可以在播放器下方看到

  • @B 三个值分别表示缓存大小/缓存区时间/最大缓存区时间单位是秒
  • @F * @E 卡顿次数,卡顿次数较多,表示网络质量可能不怎么好
  • @F 实时帧率
  • @B 实时视频+音频码率

类似这样的就是正常的

对于播放卡,我们可以首先判断下本地网络是否正常,可以访问
http://pubstatic.b0.upaiyun.com/cdn-stream-test.html 看看,这个最好是当时卡顿就截图保存,可以发又拍云的技术分析

如果显示速度理想,可以参考推流的说明 ping 和 traceroute/tracert 或者用 besttrace 去测下截图一并发给又拍云的技术排查

我们都需要哪些信息

好了,我们可以看下,都需要哪些信息

  • 推流和拉流客户端信息,推流卡顿的时间点,比如运营商信息,参考上面的文档内容提供 ping traceroute/tracert截图
  • 路由信息、DNS信息
  • OBS 显示的丢帧、CPU 占比、码率等

视频教程

可以参考又拍云官网的视频教程,针对 PC 端 移动端(Android iOS)都有介绍http://docs.upyun.com/faq/#_5