含 UI 集成方案

有奖征文|投稿上云技术实践,赢取价值5000元大奖> HOT

一、视频问题

TRTC 视频画面出现黑边怎么去掉?

设置 TRTCVideoFillMode_Fill(填充)即可解决,TRTC 视频渲染模式分为填充和适应,本地渲染画面可以通过 setLocalViewFillMode() 设置,远端渲染画面可以通过 setRemoteViewFillMode 设置:
TRTCVideoFillMode_Fill:图像铺满屏幕,超出显示视窗的视频部分将被截掉,所以画面显示可能不完整。
TRTCVideoFillMode_Fit:图像长边填满屏幕,短边区域会被填充黑色,但画面的内容肯定是完整的。

TRTC 出现卡顿怎么排查?

可以通过对应的 RoomID、UserID 在实时音视频控制台的 监控仪表盘 页面查看通话质量:
通过接受端视角查看发送端和接收端用户情况。
查看发送端和接收端是否丢包率比较高,如果丢包率过高一般是网络状况不稳定导致卡顿。
查看帧率和 CPU 占用率,帧率比较低和 CPU 使用率过高都会导致卡顿现象。

TRTC 出现画质不佳,模糊、马赛克等现象怎么排查?

清晰度主要和码率有关,检查 SDK 码率是否配置的比较低,如果高分辨率低码率容易产生马赛克现象。
TRTC 会通过云端 QOS 流控策略,根据网络状况动态调整码率、分辨率,网络比较差时容易降低码率导致清晰度下降。
检查进房时使用的 VideoCall 模式还是 Live 模式,针对通话场景 VideoCall 模式主打低延时和保流畅,所以在弱网情况下会更容易牺牲画质确保流畅,对画质更加看重的场景建议使用 Live 模式。

TRTC 自己的本地画面和远端画面左右相反?

本地默认采集的画面是镜像的。App 端可以通过 setLocalViewMirror 接口设置,该接口只改变本地摄像头预览画面的镜像模式;也可以通过 setVideoEncoderMirror 接口设置编码器输出的画面镜像模式,该接口不改变本地摄像头的预览画面,但会改变另一端用户看到的(以及服务器录制下来的)画面效果。Web 端可以通过 createStream 接口修改 mirror 参数来设置。

TRTC 设置视频编码输出的方向没有效果?

需要设置 setGSensorMode() 为 TRTCGSensorMode_Disable,关闭重力感应,否则调用 setVideoEncoderRotation 后远端用户观看到的画面不会变化。

TRTC 正常上行有数据,为什么旁路拉流失败看不到画面?

请确认是否已在 应用管理>功能配置 中开启自动旁路推流。

预览/播放画面出现旋转?

使用 TRTCSDK 摄像头采集
建议更新 SDK 版本到最新版本。
如果是特殊设备,可以使用本地预览画面渲染角度接口 setLocalViewRotation,远端视频画面的渲染角度接口 setRemoteViewRotation,设置编码器输出的画面渲染角度接口 setVideoEncoderRotation 进行调整。具体接口使用说明请参见 视频画面旋转
使用自定义视频采集
建议更新 SDK 版本到最新版本。
确认下将采集的视频画面的角度是正确。
将视频数据填充给 TRTCSDK,检查是否给 TRTCCloudDef.TRTCVideoFrame 设置旋转角度
如果是特殊设备,可以使用本地预览画面渲染角度接口 setLocalViewRotation,远端视频画面的渲染角度接口 setRemoteViewRotation,设置编码器输出的画面渲染角度接口 setVideoEncoderRotation 进行调整。具体接口使用说明请参见 视频画面旋转

视频出现镜像问题?

使用前摄像头进行视频通话,会有镜像效果,所以本地预览和远端观众画面是左右颠倒。若您想让两端画面一致,请参见 使用前摄像头进行视频通话,本地预览和远端观众画面是左右颠倒

如何横屏推流?

开发者可能用设备是电视或者因场景需要横屏推流,具体实现请参见 Android TRTC 实现横屏视频通话

直播中出现播放黑屏是什么原因呢?

播放失败或解码失败,参看播放失败的处理办法。
Metadata 问题,例如 metadata 中只有音频流信息,但实际数据中即有音频也有视频;或者是开始的数据只有音频,但播放一段时间后又加入了视频信息。这种情况一般建议修改源流的 metadata 信息。
视频编码数据里没有画面信息,只有类似 SEI 之类的帧时,解码也没有画面,自然就黑屏了,这种一般是定制类的视频数据。

直播中出现播放花屏、绿屏,是什么原因呢?

一般是丢失了 I 帧导致,因为 P 帧和 B 帧的解码都依赖于 I 帧,如果 I 帧丢失了,P 帧和 B 帧都会解码失败,于是画面就会花屏、拖影、绿屏等情况,先使用不同 播放器如 ffplay、VLC、Potplayer 同时播放一下同一路流,如果播放器都出现花 屏、绿屏的情况,通常就是音视频源码流就存在问题,需要检查源码流。
Metadata 发生变化,大多数的播放器一般只会在开始解码之前解析一次 metadata 设置解码参数,当画面发生变化,例如分辨率变化了,但播放器解码参 数没有重新配置,就有可能导致花屏、绿屏,这种情况下,最好的办法是推流端 在直播过程中不改变编码参数,这样就不会引起 metadata 信息的修改。
硬件编解码的兼容性问题,这类情况通常出现在 Android 设备上,一些 Android 设备的硬件编解码器实现不好,兼容性不佳。这种情况,最好的办法,换软编软 解对比。
推流端和播放端颜色格式不一致导致,例如推流端使用的是 NV12,而播放端支持的是 I420,则解码时就会因为颜色格式不一致而显示为花屏、绿屏等情况。这 种情况下,统一推拉流两端的颜色格式。


二、音频问题

TRTC 的通话同时用了点播播放器 TXVodPlayer 播放,为什么播放声音很小?

通过 setSystemVolumeType 接口设置通话时使用的系统音量类型,设置为媒体音量模式 TRTCSystemVolumeTypeMedia 即可解决。

如何选择媒体音量和通话音量?

通过 setSystemVolumeType 接口,支持自主选择通话音量和媒体音量。
TRTCAudioVolumeTypeAuto :默认类型,麦上通话音量、麦下媒体音量。
TRTCAudioVolumeTypeVOIP :始终使用通话音量。
TRTCAudioVolumeTypeMedia :始终使用媒体音量。

TRTC 上下行无声怎么处理?

具体请参见 上下行无声排查

声音小怎么处理?

所有观众听到的声音都小,则是上行因素导致:
检查 Windows 和 mac 的 setCurrentDeviceVolume、全平台的 setAudioCaptureVolume 接口的 volume值是否小于50,可以适当调大音量。
检查3A处理的 AGC 自动增益是否开启。
检查是否是由于蓝牙耳机导致。
部分观众听到声音小,则是下行因素导致:
检查 setAudioPlayoutVolumesetCurrentDeviceVolume 接口的 volume 值是否小于50,可以适当调大音量。
手机端可以检查是否调用 setAudioRoute API 切换了听筒播放。

声音卡顿断续?

打开 监控仪表盘,在音频选项卡中查看:
若接收端和发送端“设备状态”的 CPU 超过90%,建议关闭其他后台程序。
若音频上下行存在明显丢包,rtt 值波动较大,表明当前用户网络质量不佳,建议切换稳定网络。

为什么有回声?

通话双方的设备相距太近的时候,属于正常现象,测试时请相互距离远一点;是否误关了 3A 处理的 AEC 回声消除。

声音音质差或者声音忽大忽小?

若您外接了声卡,开了耳返,当连麦时就会引发此问题,建议您在外接声卡时关闭耳返,因为声卡一般自带了耳返功能。

Web 通话过程中出现回声、杂音、噪声、声音小?

通话双方的设备相距太近的时候,属于正常现象,测试时请相互距离远一点。当其他端听到 Web 端的声音存在回声、噪声、杂音等情况时,说明 Web 端的 3A 处理没有生效。 若您使用了浏览器原生 getUserMedia API 进行自定义采集,则需要手动设置 3A 参数:
echoCancellation:回声消除开关。
noiseSuppression:噪声抑制开关。
autoGainControl:自动增益开关,详细设置请参见 媒体追踪约束
若您使用 TRTC.createStream 接口进行采集,则无需手动设置 3A 参数,SDK 默认开启 3A。


三、其他问题

TRTC 怎么监测网络状态,实现信号强弱展示功能?

可以使用 onNetworkQuality() 监听当前网络的上行和下行质量,以Android为例,可参考 TRTC-API-Example 实现信号强弱功能。

为什么设备摄像头或麦克风出现被占用等异常现象?

调用 exitRoom() 接口会执行退出房间的相关逻辑,例如释放音视频设备资源和编解码器资源等,硬件设备的释放是异步操作,待资源释放完毕,SDK 会通过 TRTCCloudListener 中的 onExitRoom() 回调通知上层。如果您要再次调用 enterRoom() 或切换到其他的音视频 SDK,请等待 onExitRoom() 回调到来之后再执行相关操作。

如何判断打开摄像头成功?

通过回调方法 onCameraDidReady,当收到该回调时表示摄像头已经准备就绪。

如何判断打开麦克风成功?

通过回调方法 onMicDidReady,当收到该回调时表示麦克风已经准备就绪。

打开摄像头失败?

确认摄像头权限是否授予
如果设备是电视、盒子等,使用的摄像头是外接的。目前 TRTCSDK 是支持识别外接摄像头的。因此,需要确认摄像头接头和设备是否接触良好。

TRTC 有哪些技术统计指标?

注意
该场景适用于 iOS/Mac、Android 、Windows 平台。
SDK 提供回调方法 onStatistics(TRTCStatistics statics),每 2 秒回一次技术指标。包括当前 appCpu(App 的 CPU 使用率)、systemCpu(当前系统的 CPU 使用率)、rtt(延迟)、upLoss(上行丢包率)、downLoss(下行丢包率)以及本地成员和远端成员的音视频统计信息,具体参数请参见 TRTCStatistics 类型说明。
目录