你问我答 | 实时音视频TRTC(2021年8月-10月)

2021-11-26 18:10:57 浏览数 (1)

实时音视频TRTC 你问我答 第2季

本期共解答10个问题

Q1:TRTC通话,实现大小屏切换,类似微信通话效果,点击自己的画面和对方的画面展示位置互换。

支持大小屏切换,使用updateView功能,但需要给TXCloudVideoView调用addview添加一个textureview。

解决方案:

  1. 通话过程中,保证双方通话画面正常;
  2. 直接调用stop,再调用start,会有一段时间黑屏;
  3. 直接调用updateView对调,会导致远端画面不显示,或者没有效果;
  4. updateView只支持textureview,使用的前需要对TXCloudVideoView调用addview添加一个textureview。
Q2:Android特定机型系统摄像头旋转角度有问题?
  1. sdk可以将数据采集出来,画面渲染都是正常的,只是画面被旋转了,说明采集的数据没有问题,sdk有办法解码就有办法将画面旋转;
  2. 可以在通话过程中,通过点击按钮触发这些旋转角度,旋转不同的角度,能确保画面采集出来了才执行的旋转;
  3. 调用编码器旋转没有效果,注意要将重力感应关掉setGSensorMode。
Q3:TRTCCalling各端版本兼容性问题。信令版本没有相互验证。导致通话交互出现问题,比如,Web端呼叫安卓端,安卓端挂断失败,但界面显示已经挂断。实际Web端没有挂断,安卓端再次呼叫显示对方通话中?

首先更新信令模块到最新版本:npm update tsignaling --save

  1. 确定是哪个端的问题。
  2. 确定安卓已发送挂断信令,Web端没有执行挂断操作。
  3. 明确是Web端TRTCCalling问题。
Q4:利用TRTC SDK进行自定义音频采集无法成功回调?
  1. 自定义音频采集的多种音频(CapturedRawAudioFrame/LocalProcessedAudioFrame/RemoteUserAudioFrame/MixedPlayerAudioFrame/MixedAllAudioFrame)分成 本地端 远端 混合端;
  2. 通过在回调(listener)中打印日志的方式来检测音频是否被采集(发送方) 或 接收(接收方) 成功,音频通信的双方均是发送方 & 接收方。
Q5:用户A在麦位上并正在播放歌曲,用户B上麦,上麦瞬间,用户A的歌曲会短暂卡声(短时间不发声),而且过后音量会突然变大?

由于sdk中默认设置的是“麦上通话,麦下媒体”,即主播上麦时使用通话音量,观众不上麦则使用媒体音量,所以有人上麦的时候,从媒体切到通话,切的时候会卡一下,然后媒体和通话音量大小不一致,所以声音不一致。

Q6:startRemoteView这个方法重复调用的话会重置吗?

这是正常现象,因为流和view是绑定的,如果想显示后者,只能先stopRemoteView 或者直接updateRemoteView才行。

  1. 确认具体需求和操作步骤,了解到是重复调用startRemoteView接口传入的userid不同,渲染的view是同一个。然后拉到的画面是首次调用接口传的userid的画面。
  2. 按照步骤测试调试确认接口逻辑,然后电话沟通引导。
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横屏屏幕分享无法显示全部界面?
  1. TRTC屏幕分享场景除了Live,其他都会有这个问题;
  2. 目前接口分辨率采集都是按照固定的大小来采集,手机屏幕大小不一定完全符合SDK固定的分辨率大小;
  3. 主播端调用一下这个实验性接口。

宽高计算

//分辨率与码率根据业务需要设置,注意分辨率的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。从而避免在身份切换过程中出现状态混乱。

0 人点赞