移动直播的常见排查手段过程最主要是了解移动直播推流的url是怎样的
一个推流url引起的问题
直播中大多数问题是推流的url不正确导致的,那么推流url是怎么样了,下面来讲解url的规则
推流地址的拼接规则
推流地址可以通过后台自动拼装得到
常见问题
1.域名是否 CNAME 到了腾讯云地址?
流域名只有 CNAME 到腾讯云地址才能推流成功,可以在【[域名管理](https://console.cloud.tencent.com/live/domainmanage)】里面查看已经创建的推流域名是否有 CNAME。其中有个 CNAME 标题栏,可以根据此项中的状态来查看推流域名是否有 CNAME。已经 CNAME 的状态如下: ![](https://main.qcloudimg.com/raw/ec13b07a9da29afe71f587b53ba9fbaa.jpg)
2.txsecret秘钥是否正确在直播直播鉴权控制比对
https://cloud.tencent.com/document/product/267/32463
3.txTime是否过期
txTime 过期有些客户担心自己的直播流量被人盗用,会将 txTime 设置的过于保守,例如从当前时间开始往后推5分钟。其实由于有 txSercet 签名的存在,txTime 的有效期不用设置的太短。相反,如果有效期设置的太短,当主播在直播过程中遭遇网络闪断时会因为推流 URL 过期而无法恢复推流。
txTime 建议设置为当前时间往后推12或者24小时为宜,也就是要长于一场普通直播的直播时间
那推流url怎么生成呢
移动直播的流id就这个直播码 下面云控制台更具体介绍
用户自己判断流的情况方法
判断直播流是否正常断流在云控制台的辅助工具中有断流诊端原因
可以查询断流错误具体错误码可以参考下面的链接
https://cloud.tencent.com/document/product/267/35256
也自己查看简单的流的情况
https://cloud.tencent.com/document/product/267/31161
移动直播sdk怎么设置推流情况
推流配置参数 LivePushConfig
每秒需要多少帧画面FPS以及gop表示多少秒一个i帧
TXLivePushConfig mLivePushConfig=new TXLivePushConfig
mLivePushConfig.setVideoEncodeGop(5)代表设置的gop为5秒一个i帧
mLivePushConfig.setVideoFPS(15) 表示每秒需要15帧画面
其它一些参数都可通过推流配置对象.set设置,不一一列出如下图
可参考https://cloud.tencent.com/document/product/454/34756
设置setVideoQuality
推流的时候setVideoQuality 设置视频编码质量。包括是否开启动态码率开关。动态切分辨率开关,画质类型标清,高清,超高清
参考代码如下
推流码率设置
其中视频码率对直播也有影响,网络较差又使用较高的码率会造成卡顿,这个时候可以调整码率,只有开启码率自适应, 该设置项才能启作用:setAutoAdjustBitrate(boolean)
才能设置最大和最小码率setMaxVideoBitrate,setMinVideoBitrate
,开启后,SDK会根据网络情况自动调节视频码率,调节范围在(videoBitrateMin - videoBitrateMax)
播放流畅度控制
也在TXLivePlayConfig指定
直播播放器有三种缓存策略对应就是播放的时候的极速 流畅 自动
其实就是设置自适应缓冲时长 和最小缓冲时长 和最大缓冲时长
代码语言:javascript复制TXLivePlayConfig mPlayConfig = new TXLivePlayConfig();
//
//自动模式
mPlayConfig.setAutoAdjustCacheTime(true);
mPlayConfig.setMinAutoAdjustCacheTime(1);
mPlayConfig.setMaxAutoAdjustCacheTime(5);
//
//极速模式
mPlayConfig.setAutoAdjustCacheTime(true);
mPlayConfig.setMinAutoAdjustCacheTime(1);
mPlayConfig.setMaxAutoAdjustCacheTime(1);
//
//流畅模式
mPlayConfig.setAutoAdjustCacheTime(false);
mPlayConfig.setCacheTime(5);
//
mLivePlayer.setConfig(mPlayConfig);
//设置完成之后再启动播放
点击下图的红框修改播放的缓存策略,用demo测试
第一个按钮 | 开始播放和暂停播放 |
---|---|
第二个按钮 | 硬件加速,当某些手机软件效果不好的时候可以开启 |
第三个按钮 | 横竖屏切换 |
第四个按钮 | 小屏和大屏幕切换,注意的是只有竖屏才生效 |
第五个按钮 | 播放模式包括极速,流畅,自动 |
流的状态不对
没有结束之前的流,流的状态控制不对主要参考,以及检测自己的推流是否暂停onstop和重新播放onresume
用于推流的 TXLivePusher 和用于显示影像的 TXCloudVideoView 都是不能多实例并行运转的,所以清理工作不当会导致下次直播遭受不良的影响。
代码语言:javascript复制//结束推流,注意做好清理工作
public void stopRtmpPublish() {
mLivePusher.stopCameraPreview(true); //停止摄像头预览
mLivePusher.stopPusher(); //停止推流
mLivePusher.setPushListener(null); //解绑 listener
}
两个重要判断流的方法
其中sdk中TXLivePlayListener
onPlayEvent(事件通知) 和 onNetStatus(状态反馈)这两个事件可以判断播放事件状态 和流的信息状态
通过onNetStatus中的一些状态参数判断当前的流的状态
拿 demo的调试工具
1.rtmp推流是否成功
第一个按钮 | 开始播放和暂停播放 |
---|---|
第二个按钮 | 前后置摄像头 |
第三个按钮 | 手机聚焦和自动聚焦切换 |
第四个按钮 | 硬件加速 |
第五个按钮 | 简单美颜 |
第六个按钮 | 日志显示信息 |
第七个按钮 | 设置推流模式包括自适应码率自适应分辨率 |
第八个按钮 | 重力感应切换横竖屏,注意的是只有在手机没有锁定方向才生效生效 |
这里弹窗可以看出你的流再哪一阶段的大骤出现的问题
值得一提的终端测试工具中,i图标的按钮都会弹窗了解到推流的信息
移动直播应用功能测试
还可以使用移动直播的摄像头推流和直播拉流分别测推流情况和拉流情况,方法同上
扫码测试
demo中带有二维码扫描的图片 ,demo中的扫码功能都是一套的,所以只要遇到下面图片就可以使用扫描测试,比较快捷,只要将你的url 找个在线二维码工具转换,输入你的url转换二维码
下面举个使用播放器的demo测试你的拉流地址的列子
特殊机型不能播放的问题
andriod9.0手机手机只能播放 RTMP 格式的流,无法播放HTTP-FLV 格式的流。
使用https协议的播放地址将flv格式的播放地址总http替换成https 如果上图中的高级配置的https配置
https://cloud.tencent.com/document/product/267/32826?from=10680
直接在AndroidMainfest.xml 标签下使用 android:usesCleartextTraffic="true"
具体参考修改参考https://cloud.tencent.com/developer/article/1399337
其它问题
录制 转码 截图鉴黄 水印 问题
可以参考云直播的服务端api文档,提供了API Explorer工具,该工具非常适用调试服务端调用接口
https://console.cloud.tencent.com/api/explorer?Product=live&Version=2018-08-01&Action=CreateLiveCallbackRule
并结合云直播控制台使用
https://cloud.tencent.com/document/product/267/20379
或者提供流id和bizid
一条正常的推流,音视频数据的比特率、cpu消耗、上行网速、网络波动、推流数据堆积等等都稳定在正常值范围内,不在范围内的异常数据很好分辨。
工作人会通过后台运营系统查询整个直播链路的过程,以及你的流是否推到upload服务器,是否生成录制文件,以及
推流信息 的上下码率 情况是否稳定等