实时音视频TRTC 你问我答 第2季
本期共解答10个问题
Q1:TRTC通话,实现大小屏切换,类似微信通话效果,点击自己的画面和对方的画面展示位置互换。
支持大小屏切换,使用updateView功能,但需要给TXCloudVideoView调用addview添加一个textureview。
解决方案:
- 通话过程中,保证双方通话画面正常;
- 直接调用stop,再调用start,会有一段时间黑屏;
- 直接调用updateView对调,会导致远端画面不显示,或者没有效果;
- updateView只支持textureview,使用的前需要对TXCloudVideoView调用addview添加一个textureview。
Q2:Android特定机型系统摄像头旋转角度有问题?
- sdk可以将数据采集出来,画面渲染都是正常的,只是画面被旋转了,说明采集的数据没有问题,sdk有办法解码就有办法将画面旋转;
- 可以在通话过程中,通过点击按钮触发这些旋转角度,旋转不同的角度,能确保画面采集出来了才执行的旋转;
- 调用编码器旋转没有效果,注意要将重力感应关掉setGSensorMode。
Q3:TRTCCalling各端版本兼容性问题。信令版本没有相互验证。导致通话交互出现问题,比如,Web端呼叫安卓端,安卓端挂断失败,但界面显示已经挂断。实际Web端没有挂断,安卓端再次呼叫显示对方通话中?
首先更新信令模块到最新版本:npm update tsignaling --save
- 确定是哪个端的问题。
- 确定安卓已发送挂断信令,Web端没有执行挂断操作。
- 明确是Web端TRTCCalling问题。
Q4:利用TRTC SDK进行自定义音频采集无法成功回调?
- 自定义音频采集的多种音频(CapturedRawAudioFrame/LocalProcessedAudioFrame/RemoteUserAudioFrame/MixedPlayerAudioFrame/MixedAllAudioFrame)分成 本地端 远端 混合端;
- 通过在回调(listener)中打印日志的方式来检测音频是否被采集(发送方) 或 接收(接收方) 成功,音频通信的双方均是发送方 & 接收方。
Q5:用户A在麦位上并正在播放歌曲,用户B上麦,上麦瞬间,用户A的歌曲会短暂卡声(短时间不发声),而且过后音量会突然变大?
由于sdk中默认设置的是“麦上通话,麦下媒体”,即主播上麦时使用通话音量,观众不上麦则使用媒体音量,所以有人上麦的时候,从媒体切到通话,切的时候会卡一下,然后媒体和通话音量大小不一致,所以声音不一致。
Q6:startRemoteView这个方法重复调用的话会重置吗?
这是正常现象,因为流和view是绑定的,如果想显示后者,只能先stopRemoteView 或者直接updateRemoteView才行。
- 确认具体需求和操作步骤,了解到是重复调用startRemoteView接口传入的userid不同,渲染的view是同一个。然后拉到的画面是首次调用接口传的userid的画面。
- 按照步骤测试调试确认接口逻辑,然后电话沟通引导。
Q7:在TRTC设置的指定用户录制,在混流之后没有录制文件生成?
推流会携带rtemp_id=30 的参数所以不会录制。
客户的推流参数:
"txSecret=eca07737ee8d08e22f365ffbccb53e4c&txTime=72e3f06f&from=interactive&client_business_type=0&sdkappid=1400409499&sdkapptype=1&groupid=8347&userid=Y2lkXzExMTI0ODU5ODg4ODQ4NDg2NA==&ts=6059d85a&tinyid=144115232792037712&roomid=2821265&rtemp_id=30&product_name=CSIG_TRTC&cliRecoId=0&trtcclientip=116.113.127.238&useMixPlayer=1&txHost=109319.livepush.myzijiebao.com"
Q8:TRTC横屏屏幕分享无法显示全部界面?
- TRTC屏幕分享场景除了Live,其他都会有这个问题;
- 目前接口分辨率采集都是按照固定的大小来采集,手机屏幕大小不一定完全符合SDK固定的分辨率大小;
- 主播端调用一下这个实验性接口。
宽高计算
//分辨率与码率根据业务需要设置,注意分辨率的16字节对齐
uint32_t hight = (uint)(540 * screenSize.height / screenSize.width);
hight = hight (16 - hight % 16);
修改编码的分辨率
NSString *apiJson = [NSString stringWithFormat:@"{"api":"setVideoEncodeParamEx","params":{"videoWidth":%f,"videoHeight":%f,"videoFps":30,"videoBitrate":2400}}",size.width,size.height];
[[TRTCCloud sharedInstance] callExperimentalAPI:apiJson]。
Q9:TRTC同个userID在不同设备登录,出现互踢。
目前TRTC使用同一userid在不同设备同一时间段进房,就会出现互踢,这是当前的机制
Q10:短时间内频繁调用SwitchRole接口切换用户角色,偶现无法推流现象。
调用SwitchRole接口后,需要等角色切换完成的onChangeRole回调,才可以继续调用SwitchRole。从而避免在身份切换过程中出现状态混乱。