腾讯实时音视频(Tencent Real-Time Communication,TRTC)是腾讯云基于 QQ 十多年来在音视频通话技术上积累,并结合腾讯浏览服务 TBS WebRTC 能力与腾讯实时音视频 SDK ,为客户提供多平台互通高品质可定制化的 **实时音视频互通服务** 解决方案。
为了方便开发者技术选型、开发集成,以下是针对不同问题场景整理的 TRTC 常见问题汇总,后续会持续更新,欢迎反馈。
质量篇
1. 播放远端观众画面出现黑边
如下代码所示,播放远端观众的画面渲染模式选择 TRTC_VIDEO_RENDER_MODE_FIT
模式, 当渲染控件 View 的宽高比与视频宽高此不一致时,有黑边情况。
- Android 示例代码
mTRTCCloud.setRemoteViewFillMode(userId, TRTCCloudDef.TRTC_VIDEO_RENDER_MODE_FIT); mTRTCCloud.startRemoteView(userId, renderView);
- iOS 示例代码
[_trtc startRemoteView:userId view:remoteView]; [_trtc setRemoteViewFillMode:userId mode:TRTCVideoFillMode_Fit];
解决方案:
1.确保渲染控件 View 宽高和视频宽高一致
2.渲染模式选择TRTC_VIDEO_RENDER_MODE_FIT
,但画面可能会出现能会被拉伸裁剪的情况。
2. 播放远端观众画面出现卡顿
1.检测网络情况,建议更换网络重现
2.找到 roomid、userid ,然后到控制台的 监控仪表盘 ,自主查询用户的卡顿情况。
3. 打开摄像头失败
- 确认摄像头权限是否授予
- 如果设备是电视、盒子等,使用的摄像头是外接的。目前 TRTCSDK 是支持识别外接摄像头的。因此,需要确认摄像头接头和设备是否接触良好。
4. 预览/播放画面出现旋转
使用TRTCSDK摄像头采集
- 建议更新 SDK 版本到最新版本。
- 如果是特殊设备,可以使用本地预览画面渲染角度接口
setLocalViewRotation
,远端视频画面的渲染角度接口setRemoteViewRotation
,设置编码器输出的画面渲染角度接口setVideoEncoderRotation
进行调整。具体接口使用说明文档见视频画面旋转
使用自定义视频采集
- 建议更新 SDK 版本到最新版本。
- 确认下将采集的视频画面的角度是正确。
- 将视频数据填充给 TRTCSDK,检查是否给
TRTCCloudDef.TRTCVideoFrame
设置旋转角度 - 如果是特殊设备,可以使用本地预览画面渲染角度接口
setLocalViewRotation
,远端视频画面的渲染角度接口setRemoteViewRotation
,设置编码器输出的画面渲染角度接口setVideoEncoderRotation
进行调整。具体接口使用说明文档见视频画面旋转
5. 视频镜像问题
使用前摄像头进行视频通话,会有镜像效果,所以本地预览和远端观众画面是左右颠倒。如果开发者想让两端画面一致,可以参考文档使用前摄像头进行视频通话,本地预览和远端观众画面是左右颠倒?
6. 如何横屏推流
开发者可能用设备是电视或者因场景需要横屏推流,具体实现可以参考 Android TRTC 实现横屏视频通话 文档。
7. 杀死进程,如何确认主播是否在直播中?
该场景适用于 iOS/Mac、Android 、Windows 平台。
在 TRTC 房间中有推流上行的用户,当应用进程被杀死或者主动断开网络,超过 30 秒之后,主播还没有恢复推流。TRTC 房间里面其他用户会收到主播(有推流上行的用户)退出房间的回调。
8. 直播中出现播放黑屏、花屏、绿屏,是什么原因呢?
黑屏的原因:
1) 播放失败或解码失败,参看播放失败的处理办法。
2) Metadata 问题,比如 metadata 中只有音频流信息,但实际数据中即有音频也有
视频;或者是开始的数据只有音频,但播放一段时间后又加入了视频信息。这种
情况一般建议修改源流的 metadata 信息。
3) 视频编码数据里没有画面信息,只有类似 SEI 之类的帧时,解码也没有画面,自
然就黑屏了,这种一般是定制类的视频数据。
花屏、绿屏的原因:
1) 一般是丢失了 I 帧导致,因为 P 帧和 B 帧的解码都依赖于 I 帧,如果 I 帧丢失了,
P 帧和 B 帧都会解码失败,于是画面就会花屏、拖影、绿屏等情况,先使用不同 播放器如 ffplay、VLC、Potplayer 同时播放一下同一路流,如果播放器都出现花 屏、绿屏的情况,通常就是音视频源码流就存在问题,需要检查源码流。
2) Metadata 发生变化,大多数的播放器一般只会在开始解码之前解析一次 metadata 设置解码参数,当画面发生变化,比如分辨率变化了,但播放器解码参 数没有重新配置,就有可能导致花屏、绿屏,这种情况下,最好的办法是推流端 在直播过程中不改变编码参数,这样就不会引起 metadata 信息的修改。
3) 硬件编解码的兼容性问题,这类情况通常出现在 Android 设备上,一些 Android 设备的硬件编解码器实现不好,兼容性不佳。这种情况,最好的办法,换软编软 解对比。
4) 推流端和播放端颜色格式不一致导致,比如推流端使用的是 NV12,而播放端支持的是 I420,则解码时就会因为颜色格式不一致而显示为花屏、绿屏等情况。这 种情况下,统一推拉流两端的颜色格式。
9. TRTC有哪些技术统计指标?
该场景适用于 iOS/Mac、Android 、Windows 平台。
SDK 提供回调方法 onStatistics(TRTCStatistics statics),每 2 秒回一次技术指标。包括当前 appCpu(App 的 CPU 使用率)、systemCpu(当前系统的 CPU 使用率)、rtt(延迟)、upLoss(上行丢包率)、downLoss(下行丢包率)以及本地成员和远端成员的音视频统计信息,具体参数可参考 TRTCStatistics 类型说明文档。
技术支持
亲爱的开发者,如果在使用产品过程中遇到任何问题,欢迎到 云+社区
和 GitHub
提问或者查询历史问题以及解决方案。
- **云+社区各产品问答页查询及提问:**
实时音视频:https://cloud.tencent.com/developer/tag/10373?entry=ask
即时通信:https://cloud.tencent.com/developer/tag/126?entry=ask
移动直播:https://cloud.tencent.com/developer/tag/10374?entry=ask
短视频:https://cloud.tencent.com/developer/tag/10375?entry=ask
超级播放器:https://cloud.tencent.com/developer/tag/10855?entry=ask
互动直播:https://cloud.tencent.com/developer/tag/10379?entry=ask
- **GitHub 的 issue 页面:**
移动直播:https://github.com/tencentyun/MLVBSDK/issues
实时音视频:https://github.com/tencentyun/TRTCSDK/issues
播放器:https://github.com/tencentyun/SuperPlayer/_Android/issues、https://github.com/tencentyun/SuperPlayer/_iOS/issues
即时通信IM:https://github.com/tencentyun/TIMSDK/issues
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/212462.html