专栏首页即时通信与音视频实时音视频 TRTC 常见问题汇总---集成接入篇
原创

实时音视频 TRTC 常见问题汇总---集成接入篇

腾讯实时音视频(Tencent Real-Time Communication,TRTC)是腾讯云基于 QQ 十多年来在音视频通话技术上积累,并结合腾讯浏览服务 TBS WebRTC 能力与腾讯实时音视频 SDK ,为客户提供多平台互通高品质可定制化的 实时音视频互通服务 解决方案。 为了方便开发者技术选型、开发集成,以下是针对不同问题场景整理的 TRTC 常见问题汇总,后续会持续更新,欢迎反馈。

集成接入篇

一、集成SDK

1. 实时音视频 TXLiteAVSDK 默认输出的日志在哪里?怎么查看?

  • TRTC的日志默认压缩加密,后缀为 .xlog 。日志是否加密是可以通过 setLogCompressEnabled 来控制,生成的文件名里面带 C(compressed) 的就是加密压缩的,带 R(raw) 的就是明文的。

平台

输出位置

iOS&Mac

sandbox的Documents/log

Android

/sdcard/log/tencent/liteav(6.7及之前版本)<BR/>/sdcard/Android/data/包名/files/log/tencent/liteav/(6.8之后版本)

Windows

%appdata%/tencent/liteav/log

Web

打开浏览器控制台,或使用vConsole记录 SDK 打印信息

小程序

启用<live-pusher>和<live-player>标签的debug属性,使用vConsole记录打印信息

注:查看 .xlog 文件下载解密工具,在python 2.7环境中放到xlog文件同目录下直接使用 python decode_mars_log_file.py 运行即可。 日志相关详情参考:https://cloud.tencent.com/developer/article/1502366

2. TRTC集成后,文件增量有多大?

3. TRTC Android端能不能支持64位的arm64-v8a架构?

  • TRTC 6.3 版本开始已提供 arm64-v8a 架构 ABI 支持。

二、房间相关接口

1. 调用加入房间接口 enterRoom() 报错,onEnterRoom 回调返回错误码 -100018是什么原因?

  • 报错-100018错误原因是进房 TRTCParams 里面相关参数不正确导致的SDK校验失败,有下面几种情况: (1)参数 sdkAppId 传入不正确; (2)参数 userId 对应的验证签名 userSig 传入不正确。

排查办法,登录腾讯云控制台在实时音视频-账号信息查看sdkappid,在开发辅助可以使用签名(UserSig)校验工具校验。

2. enterRoom() 应用场景 scene 参数该怎么选择?

进房应用场景参数支持下面4种场景:

  • TRTCAppSceneVideoCall :视频通话场景,适合1对1视频通话、300人视频会议、在线问诊、视频聊天、远程面试等。
  • TRTCAppSceneLIVE :视频互动直播,适合视频低延时直播、十万人互动课堂、视频直播 PK、视频相亲房、互动课堂、远程培训、超大型会议等。
  • TRTCAppSceneAudioCall :语音通话场景,适合1对1语音通话、300人语音会议、语音聊天、语音会议、在线狼人杀等。
  • TRTCAppSceneVoiceChatRoom:语音互动直播,适合:语音低延时直播、语音直播连麦、语聊房、K 歌房、FM 电台等。

3. 离开房间接口 exitRoom() 是否必须调用?

  • 不管进房是否成功,enterRoom 都必须与 exitRoom 配对使用,在调用 exitRoom 前再次调用 enterRoom 函数会导致不可预期的错误问题。

4. 调用 exitRoom() 之后快速操作设备摄像头或麦克风出现被占用等异常现象?

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

5. switchRole() 接口有什么作用?

  • switchRole 接口用于切换角色,仅适用于进房直播场景( TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom ),支持 TRTCRoleAnchor(主播)和 TRTCRoleAudience(观众)2种角色,区别是主播角色可以上行本地音视频数据,观众角色只支持下行。

6. connectOtherRoom() 接口怎么使用?

  • connectOtherRoom 的应用场景用于跨房连麦(主播PK), 接口的逻辑是:主播调用 connectOtherRoom() 后,可以通过 onConnectOtherRoom 回调得到跨房PK的结果;调用之后,主播一所在房间里的所有人,都会通过onUserEnter的回调,得到主播二进房的通知;主播二所在房间的所有人,也都会通过onUserEnter的回调,得到主播一进房的通知。

详情参考API接口文档:https://cloud.tencent.com/document/product/647/32228

三、视频相关接口

1. stopLocalPreviewd() 和 muteLocalVideo() 区别?

  • stopLocalPreviewd 是停止本地视频采集,当调用该接口之后自己本地和远端画面就是黑屏;muteLocalVideo 是设置是否向后台发送自己的视频画面,当调用该接口之后其他用户观看的画面变成黑屏,自己本地的预览还是能看到画面。

2. TRTC SDK 怎么设置上行视频码率、分辨率、帧率?

  • 可以通过 TRTCCloud 里面的 setVideoEncoderParam() 接口设置 TRTCVideoEncParam 参数中 videoResolution(分辨率)、videoFps(帧率)、videoBitrate(码率)。

3. TRTC SDK 都支持哪些分辨率?

4. SDK 控制画面角度与方向是怎么确定的?

1、发送端本地画面的旋转角度,SDK 里通过 setLocalViewRotation 控制,有 4 个方向;

2、发送端本地编码器处理的方向,SDK 里面通过:

2.1、resMode 来指定画面采集的方向是横屏(宽大于高)或竖屏(高大于宽)

2.2、setGSensorMode 指定相机的角度是否随重力感应旋转

2.3、setVideoEncoderRotation 控制编码时旋转画面的角度

其中,GSensorMode 影响的是相机的方向角度; setVideoEncoderRotation 是人为指定的旋转角度;

3、接收端本地解码器的方向,这个一般不用管;

4、接收端显示画面的角度,SDK 里通过 setRemoteViewRotation 控制,有 4 个方向。

由上可以看出,画面旋转的内容较为复杂,因此我们将其放置于高级功能之中,建议开发者按照Demo示例进行处理,避免因为误操作旋转参数导致画面旋转角度不达预期。

5. TRTC 怎样实现横屏视频通话?

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

  • 设置 TRTCVideoFillMode_Fill(填充)可以解决,TRTC 视频渲染模式有2种分别是填充和适应,本地渲染画面可以通过 setLocalViewFillMode() 设置,远端渲染画面可以通过 setRemoteViewFillMode 设置:

参数

描述

TRTCVideoFillMode_Fill

图像铺满屏幕,超出显示视窗的视频部分将被截掉,所以画面显示可能不完整。

TRTCVideoFillMode_Fit

图像长边填满屏幕,短边区域会被填充黑色,但画面的内容肯定是完整的。

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

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

接口

描述含义

setLocalViewMirror()

该接口只改变本地摄像头的预览画面。

setVideoEncoderMirror()

该接口不改变本地摄像头的预览画面,但会改变另一端用户看到的(以及服务器录制下来的)画面效果。

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

  • 调用 setVideoEncoderRotation() 接口的前提,需要设置 setGSensorMode() 为 TRTCGSensorMode_Disable,否则远端用户观看到的画面没有变化。

四、音频相关接口

1. stopLocalAudio() 和 muteLocalAudio() 的区别是什么?

  • stopLocalAudio 是关闭本地音频的采集和上行,而muteLocalAudio 并不会停止发送音视频数据,而是会继续发送码率极低的静音包。

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

  • 目前 TRTC 的音量类型默认使用通话音量,而点播播放器默认使用媒体音量,在 TRTC 设置了通话音量之后,为了保证通话,点播播放器也会复用音频通道走通话音量。可以通过 setSystemVolumeType 接口设置通话时使用的系统音量类型,设置为媒体音量模式 TRTCSystemVolumeTypeMedia 可以解决。

五、自定义采集和渲染

1. TRTC 自定义采集视频数据怎么实现?

2. TRTC 自定义采集音频数据怎么实现?

六、旁路推流和录制

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

  • 首先确认在控制台中已打开自动旁路,未打开的话无法旁路推流;
  • 打开了控制台旁路推流,音视频上行可以正常旁路;纯音频上行需要设置使用 AudioCall 和 VoiceChatRoom 这两个场景。

2. 旁路录制的各种场景下生成录制文件是怎样的?

  • 未打开控制台旁路推流,未配置云端录制,不会生成录制文件;
  • 控制台打开了,音视频上行可以正常录制;
  • 设置了pure_audio_push_mod:1,音视频上行可以正常录制;纯音频上行不会录制;
  • 设置了pure_audio_push_mod:2,音视频上行和纯音频上行都只会生成MP3录制文件;
  • 先音视频上行,中途切换了纯音频,生成的录制文件前一部分是音视频都有,切换后的部分只有音频;
  • 先纯视频上行,中途切换了音视频,上传的录制文件只会有音视频上行的那一部分;
  • 音视频上行需要生成AAC的音频录制文件,可以在云直播配置录制模板加上AAC格式;
  • 纯音频上行不支持录制成视频文件格式,配置了模板也录制不了;
  • 云直播配置的录制模板是账号级别的。实时音视频配置的模板是应用级别的(sdkappid),同一个 sdkappid 发起的旁路推到直播优先选取实时音视频配置的 sdkappid 级别的模板。如果这个账号下还有其它 sdkappid,并且没有在实时音视频配置模板的话就会选用直播的录制模板;
  • 如果云直播录制模板配置了AAC和其它视频格式,刚开始上行只有音频,那也只会生成AAC格式一个录制文件。

七、其它

1. 实时音视频(TRTC)如何打印日志?

技术支持

亲爱的开发者,如果在使用产品过程中遇到任何问题,欢迎到 云+社区GitHub 提问或者查询历史问题以及解决方案。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

相关文章

  • 实时音视频 TRTC 常见问题汇总---咨询问题篇

    支持平台: iOS、Android、Win(C++)、Win(C#)、Mac、Web、Electron、微信小程序、Linux服务端

    腾讯视频云-Zachary
  • iOS端TXLiteAVSDK与其它三方库冲突报错问题

    iOS 端在集成腾讯云视频服务客户端音视频SDK时,与开发者自己工程中的第三方库冲突,导致编译报错。

    腾讯视频云-Zachary
  • 移动直播转换Unix时间戳

    腾讯视频云直播答题NTP时间同步方案是在推流 URL 之后添加 &txAddTimestamp=2 参数(之前的txAddTimestamp=1会在小程序上遭遇...

    腾讯视频云-Zachary
  • 一次完整的WordPress静态资源同步存储至腾讯云COS插件应用

    WPCOS插件地址:https://www.laobuluo.com/2186.html

    老蒋
  • 从实战项目开始学做微信小程序 | 码云周刊第 31 期

    从实战项目开始学做微信小程序 码云 项目推荐 壹 项目名称:灵动电商之微信小程序端 ? 项目地址: https://gitee.com/dotton/lend...

    码云Gitee
  • 人工智能工程师必备干货 | 码云周刊第 45 期

    如果要问当下互联网什么最热门?毫无疑问是人工智能。目前,世界上主要发达国家都已经将人工智能作为国家级发展战略。那么,踩在下一个时代的风口浪尖上,普通程序员如何向...

    码云Gitee
  • tf.sparse

    张量流将稀疏张量表示为三个独立的稠密张量:指标、值和dense_shape。在Python中,为了便于使用,这三个张量被收集到一个SparseTensor类中。...

    于小勇
  • 1G到5G的分野之战,通信洗牌即将开始

    有人的地方就有江湖,通信江湖上,充斥着“尔虞我诈”,从模拟信号到数字信号,从1G、2G、3G、4G到如今甚嚣尘上的5G,站对了队是平步青云,站错了队就是“万劫不...

    镁客网
  • Python笔记(第四章)

    发现没有变化,如果看过元组那一章的小伙伴们,或者有底子的,可能发现了问题所在,没错,少了从新赋予,在这里温习一下如下

    天钧
  • php基于 swoole 实现的异步处理任务功能示例

    本文实例讲述了php基于 swoole 实现的异步处理任务功能。分享给大家供大家参考,具体如下:

    砸漏

扫码关注云+社区

领取腾讯云代金券