大家好,本文档主要是分享下怎么进行直播录制和问题排查思路
直播分为推流和拉流。推流是从本地通过推流工具将音视频推到直播服务器,然后客户端通过拉流地址去获取流。
推流软件
目前主流的直播推流软件是使用开源的 OBS
,它支持各个 PC
端平台,比如 Windows linux mac系统等,我们要获取直播软件,需要去它的官网下载
下载对应平台的程序包后,我们要进行安装,Windows 的安装直接点击下一步下一步就可以,不过可能需要去微软官网下载几个包进行安装,注意要下载32位的安装包。这个在安装过程会有弹出对话框提示你的,注意看下提示。安装完成后,我们打开 OBS
在来源中我们点击右键选择对应的来源,比如本地音视频或者桌面、摄像头等等,这个需要自己一个一个去研究下了,我这里以推一个本地的 MP4文件为例来进行讲解
我们右键添加–媒体源,输入媒体源的名称,我这里默认点击确定
选择本地的文件,然后点击确定
这样视频就添加进来了,在主程序可以看到预览,但是会有一大块是黑色部分,我们调整下
选择刚才添加的媒体源右键–变换–拉伸到屏幕
然后在观察下变化
设置推流地址
点击主程序的设置
选择串流—串流类型选择自定义流媒体服务器,在 URL 中输入你的推流地址和接入点和流密钥,然后点击确定
推流地址 接入点 流密钥 这三个参数需要自己在又拍云的后台设置并获取,具体如何获取可以参考这个视频教程
推流地址比如我这边是test.v0.v5linux.com
接入点是 live
流名是lol
那么 rtmp 格式的流名就是:rtmp://test.v0.v5linux.com/live/lol
拉流
可以通过拉流播放进行拉流,又拍云后台配置完模式是支持 rmtp
的,当然你也可以开启 HTTP-FLV
和 HTTP-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