前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >实时音视频(TRTC)常见问题

实时音视频(TRTC)常见问题

原创
作者头像
腾讯云-yyuanchen
修改于 2019-09-30 03:45:01
修改于 2019-09-30 03:45:01
13.7K1
举报

实时音视频(TRTC)常见问题目录:

集成类

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

该场景适用于 iOSAndroid 平台。 需将 SDK 版本更新至 6.6 版本或以上

一般而言,媒体音量指播放音乐、视频的声音、游戏声音等的音量,而通话音量指打电话的音量,视频通话的音量。

默认情况下,麦上用户(视频通话场景中的所有用户,低延时直播场景下的主播和连麦观众)使用的是通话音量。麦下用户(低延时直播场景下的普通观众)使用的是媒体音量。

另外 TRTCSDK 开放 void setSystemVolumeType(int type) 接口,支持自主选择通话音量和媒体音量。

TRTCAudioVolumeTypeAuto :默认类型,麦上通话音量、麦下媒体音量;

TRTCAudioVolumeTypeMedia :始终使用媒体音量。

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

该场景适用于 iOS/Mac、Android 、Windows 平台。 需将 SDK 版本更新至 6.6 版本或以上

SDK 提供回调方法onCameraDidReady(),当收到该回调时表示摄像头已经准备就绪。

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

该场景适用于 iOS/Mac、Android 、Windows 平台。 需将 SDK 版本更新至 6.6 版本或以上

SDK 提供回调方法onMicDidReady(),当收到该回调时表示麦克风已经准备就绪。

4.音视频通话,如何判断推流成功?

该场景适用于 iOS/Mac、Android 、Windows 平台。

SDK 提供回调方法 onSendFirstLocalVideoFrame(int streamType),在 enterRoom()startLocalPreview() 成功后开始摄像头采集,并将采集到的画面进行编码。 当 SDK 成功向云端送出第一帧视频数据后,会抛出这个回调事件。

5.纯音频通话,如何判断推流成功?

该场景适用于 iOS/Mac、Android 、Windows 平台。 需将 SDK 版本更新至 6.5 版本或以上 SDK 提供回调方法 onSendFirstLocalAudioFrame(),在 enterRoom()startLocalPreview() 成功后开始麦克风采集,并将采集到的声音进行编码。 当 SDK 成功向云端送出第一帧音频数据后,会抛出这个回调事件。

6.如何判断拉取远端观众流成功?

该场景适用于 iOS/Mac、Android 、Windows 平台。

SDK 提供回调方法 onFirstVideoFrame(String userId, int streamType, int width, int height),如果 userId 为 null,代表开始渲染本地采集的摄像头画面,需要您先调用 startLocalPreview() 触发。 如果 userId 不为 null,代表开始渲染远程用户的首帧画面,需要您先调用 startRemoteView 触发。

  • Android 示例代码
代码语言:txt
AI代码解释
复制
 /**
 * 视频首帧渲染回调
 * <p>
 * 一般客户可不关注,专业级客户质量统计等;您可以根据您的项目情况决定是否进行统计或实现其他功能。
 *
 * @param userId     用户 ID
 * @param streamType 视频流类型
 * @param width      画面宽度
 * @param height     画面高度
 */
@Override
public void onFirstVideoFrame(String userId, int streamType, int width, int height) {
    Log.i(TAG, "onFirstVideoFrame: userId = " + userId + " streamType = " + streamType + " width = " + width + " height = "+ height);
}
  • iOS 示例代码
代码语言:txt
AI代码解释
复制
- (void)onFirstVideoFrame:(NSString *)userId streamType:(TRTCVideoStreamType)streamType width:(int)width height:(int)height
{
    NSLog(@"onFirstVideoFrame userId:%@ streamType:%d width:%d height:%d", userId, streamType, width, height);
}

7.是否支持 SurfaceView 自定义渲染?

该场景适用于 Android 平台的本地预览端和远端观众端。 需将 SDK 版本更新至 6.6 版本或以上

  • 在布局文件中,使用 SurfaceView 控件代替 TXCloudVideoView
代码语言:txt
AI代码解释
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/trtc_rl_bar"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!--<com.tencent.rtmp.ui.TXCloudVideoView-->
        <!--android:id="@+id/trtc_tc_cloud_view"-->
        <!--android:layout_width="match_parent"-->
        <!--android:layout_height="match_parent" />-->
    <SurfaceView
        android:id="@+id/trtc_tc_cloud_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>
  • Java层代码中,初始化 TXCloudVideoView 对象
代码语言:txt
AI代码解释
复制
private TXCloudVideoView mVideoView;

SurfaceView mSurfaceView = (SurfaceView) findViewById(R.id.trtc_tc_cloud_view);
mVideoView = new TXCloudVideoView(mSurfaceView);

8.如何实现本地预览画面自定义渲染?

该场景适用于 iOS、Android 平台。

Android 平台

1.调用摄像头预览接口,第二参数设置为 null,表示不设置SDK的内部渲染控件 TXCloudVideoView

代码语言:txt
AI代码解释
复制
mTRTCCloud.startLocalPreview(mMoreDialog.isCameraFront(), null);

2.设置监听setLocalVideoRenderListener,然后进行自定义渲染

代码语言:txt
AI代码解释
复制
mTRTCCloud.setLocalVideoRenderListener(TRTCCloudDef.TRTC_VIDEO_PIXEL_FORMAT_Texture_2D, TRTCCloudDef.TRTC_VIDEO_BUFFER_TYPE_TEXTURE, new TRTCCloudListener.TRTCVideoRenderListener() {
    @Override
    public void onRenderVideoFrame(String userId, int streamType, TRTCCloudDef.TRTCVideoFrame trtcVideoFrame) {
        // 拿到 trtcVideoFrame(待渲染视频帧) 进行渲染
    }
});

3.自定义渲染的具体用法可以参考文档 自定义视频渲染setLocalVideoRenderListenerTRTCVideoRenderListener

9.有哪些技术统计指标?

该场景适用于 iOS/Mac、Android 、Windows 平台。

SDK 提供回调方法 onStatistics(TRTCStatistics statics),每 2 秒回一次技术指标。包括当前 appCpu(App 的 CPU 使用率)、systemCpu(当前系统的 CPU 使用率)、rtt(延迟)、upLoss(上行丢包率)、downLoss(下行丢包率)以及本地成员和远端成员的音视频统计信息,具体参数可参考 TRTCStatistics 类型说明文档

10.如何纯音频通话?

该场景适用于 iOS/Mac、Android 、Windows 平台。

场景1:业务场景中没有使用到 CDN 旁路直播

用户在 enterRoom() 之前,只调用开启麦克风采集接口 startLocalAudio(),不需要调用摄像头预览接口startLocalPreview()

场景2:业务场景中使用到 CDN 旁路直播

需要在音频推流配置参数中增加 TRTCParams.businessInfo字段,指定 CDN 旁路能支持纯音频流。

  • Android
代码语言:txt
AI代码解释
复制
JSONObject Str_uc_params = new JSONObject();
JSONObject pure_audio_push_mod = new JSONObject();

try {
    pure_audio_push_mod.put("pure_audio_push_mod", 1); 
    // 1: 允许纯音频推流,2: 允许纯音频推流+录制
    Str_uc_params.put("Str_uc_params", pure_audio_push_mod);
    Log.i(TAG, "纯音频推流参数: " + Str_uc_params.toString());
} catch (JSONException e) {
    e.printStackTrace();
}

trtcParams = new TRTCCloudDef.TRTCParams(sdkAppId, selfUserId, userSig, roomId, "", 
Str_uc_params.toString());

具体使用流程可以参考文档:实时音视频V2版本,如何进行纯音频旁路直播

11.TRTC 需要哪些用户权限?

适用于Android平台。

代码语言:txt
AI代码解释
复制
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

质量类

1.播放远端观众画面出现黑边

如下代码所示,播放远端观众的画面渲染模式选择 TRTC_VIDEO_RENDER_MODE_FIT模式, 当渲染控件 View 的宽高比与视频宽高此不一致时,有黑边情况。

  • Android 示例代码
代码语言:txt
AI代码解释
复制
mTRTCCloud.setRemoteViewFillMode(userId, TRTCCloudDef.TRTC_VIDEO_RENDER_MODE_FIT);
mTRTCCloud.startRemoteView(userId, renderView);
  • iOS 示例代码
代码语言:txt
AI代码解释
复制
[_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摄像头采集
  1. 建议更新 SDK 版本到最新版本。
  2. 如果是特殊设备,可以使用本地预览画面渲染角度接口setLocalViewRotation ,远端视频画面的渲染角度接口setRemoteViewRotation ,设置编码器输出的画面渲染角度接口setVideoEncoderRotation进行调整。具体接口使用说明文档见视频画面旋转
使用自定义视频采集
  1. 建议更新 SDK 版本到最新版本。
  2. 确认下将采集的视频画面的角度是正确。
  3. 将视频数据填充给 TRTCSDK,检查是否给TRTCCloudDef.TRTCVideoFrame设置旋转角度
  4. 如果是特殊设备,可以使用本地预览画面渲染角度接口setLocalViewRotation ,远端视频画面的渲染角度接口setRemoteViewRotation ,设置编码器输出的画面渲染角度接口setVideoEncoderRotation进行调整。具体接口使用说明文档见视频画面旋转

5.视频镜像问题

使用前摄像头进行视频通话,会有镜像效果,所以本地预览和远端观众画面是左右颠倒。如果开发者想让两端画面一致,可以参考文档使用前摄像头进行视频通话,本地预览和远端观众画面是左右颠倒?

6.如何横屏推流

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

7.杀死进程,如何确认主播是否在直播中?

该场景适用于 iOS/Mac、Android 、Windows 平台。

在 TRTC 房间中有推流上行的用户,当应用进程被杀死或者主动断开网络,超过 30 秒之后,主播还没有恢复推流。TRTC 房间里面其他用户会收到主播(有推流上行的用户)退出房间的回调。

产品咨询类

1.腾讯实时音视频提供的解决方案有哪些?

腾讯实时音视频(TRTC)目前有两种解决方案,一种是视频通话,另一种是万人低延时直播

2.视频通话和低延时直播的区别?

  • 按房间人数划分 视频通话里面所有的角色都是主播,适用于人数不超过 10 人(考虑到手机性能限制)的多人双向视频通话场景,例如在在线教育、视频客服、在线招聘、小型会议等业务场景。低延时直播里面有多个主播角色,但是绝大部分都是观众,方案适用于主播在线直播以及主播观众互动连麦场景。
  • 按照服务器线路划分 在视频通话下,服务端会分配主干网上核心机房的服务器供主播连接。低延时直播中,服务器分配主干网上核心机房的服务器供主播连接,观众则是分配高速网上机房的服务器。

3.TRTCSDK支持哪些平台和版本

腾讯实时音视频(TRTC) SDK 支持 iOS、Android、Mac OS、Windows、Web 和微信小程序等平台,并平台间互通。具体兼容性见下表:

平台

支持版本

Android

最低兼容 Android 4.1(SDK API Level 16),建议使用 Android 5.0 (SDK API Level 21)及以上版本

iOS

iOS 9.0 以上的 iPhone 或者 iPad

Windows(C++)

Microsoft Windows 7及以上版本

Windows(C#)

Microsoft Windows 7及以上版本

Mac OS

OS X10.10+

微信小程序

最新版本

Web

最新版本的 Chrome 浏览器

4.TRTCSDK 支持Android哪些设备?

腾讯实时音视频(TRTC) SDK 已经针对手机、盒子、电视等设置做了相关的兼容优化,所以 SDK 能在相关的设备上运行。如果你设备运行有问题,欢迎在评论留言反馈或者在 Github 上提 issue 反馈

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

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

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

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

评论
登录后参与评论
1 条评论
热度
最新
腾讯云TRTC支持Unity开发吗?
腾讯云TRTC支持Unity开发吗?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
实时音视频 TRTC 常见问题汇总---集成接入篇
TRTC 的日志默认压缩加密,后缀为 .xlog。日志是否加密是可以通过 setLogCompressEnabled 来控制,生成的文件名里面含 C(compressed) 的就是加密压缩的,含 R(raw) 的就是明文的。
腾讯视频云-Zachary
2019/11/01
14.5K1
实时音视频 TRTC 常见问题汇总---集成接入篇
实时音视频 TRTC 常见问题汇总---质量篇
如下代码所示,播放远端观众的画面渲染模式选择 TRTC_VIDEO_RENDER_MODE_FIT模式, 当渲染控件 View 的宽高比与视频宽高此不一致时,有黑边情况。
腾讯视频云-Zachary
2021/10/10
4.1K0
实时音视频 TRTC 常见问题汇总---咨询问题篇
TRTC 是腾讯云基于 QQ 十多年来在音视频通话技术上积累,结合腾讯浏览服务 TBS WebRTC 能力与腾讯实时音视频 SDK ,为客户提供多平台互通高品质可定制化的 实时音视频互通服务 解决方案。 (1)您可以通过“crtl+F”(win)、“command+F”(mac)搜索关键字。 (2)若没有您想要的问答,欢迎在评论区提问、留言和交流,笔者会定期解答疑惑。 (3)最新产品动态与变更以官网文档为准。
TRTC小百科
2021/09/16
8.9K2
TRTC零基础上手 -- 码上视频推流篇
视频画面来自于摄像头,TRTC SDK会采集摄像头的画面,然后编码打包发送至云端链路,开发者只需要调用采集接口和设置编码器视频参数(码率、分辨率、帧率等)完成摄像头画面的采集。
天上云间
2022/01/13
2.4K0
实时音视频SDK,如何实现类似微信的纯语音通话功能?
实时音视频TRTCSDK适用的业务场景是视频会议、坐席视频、在线教育等,如果您希望实现类似微信的语音通话、语音会议功能,TRTCSDK也是支持的,只需要微调几个参数就可以实现,将采集音视频的api,换成只采集音频。
腾讯云-chaoli
2019/03/05
8.2K2
实时音视频SDK,如何实现类似微信的纯语音通话功能?
实时音视频(TRTC)使用前摄像头进行视频通话,本地预览和远端观众画面是左右颠倒?
使用前摄像头进行视频通话,会有镜像效果,所以本地预览和远端观众画面是左右颠倒。如果开发者想让两端画面一致,TRTCSDK 提供两个接口供你使用选择使用
腾讯云-yyuanchen
2019/07/25
3.6K1
腾讯云实时音视频客户端实现A+B->A和A+B->C混流方式
上一篇文章介绍了腾讯云实时音视频的两种混流方式分别是A+B->A和A+B->C,本文重点介绍,客户端如何实现这两种混流的方式,代码附上
singleli
2022/11/28
1.5K0
【最佳实践】巡检项:实时音视频 (TRTC) 原生平台 SDK 的进入同一房间的用户是否设定相同的 应用场景(TRTCAppScene)参数
在视频通话场景(VideoCall),出现Android端推流绿屏现象,具体表现是,房间内其他用户拉流观看,显示该用户的画面出现绿色色块,并且在进房后一直持续出现。这种现象不是该用户每次进房都出现,是偶现的。
jackwlchen
2022/04/29
9080
实时音视频 TRTC 常见问题汇总---咨询问题篇
支持的平台包括 iOS、Android、Windows(C++)、Windows(C#)、Mac、Web、Electron、微信小程序、Flutter,更多详情请参见 平台支持。
腾讯视频云-Zachary
2019/11/01
13.3K0
实时音视频 TRTC 常见问题汇总---咨询问题篇
你问我答 | 实时音视频TRTC(2021年8月-10月)
实时音视频TRTC 你问我答 第2季 本期共解答10个问题 Q1:TRTC通话,实现大小屏切换,类似微信通话效果,点击自己的画面和对方的画面展示位置互换。 支持大小屏切换,使用updateView功能,但需要给TXCloudVideoView调用addview添加一个textureview。 解决方案: 通话过程中,保证双方通话画面正常; 直接调用stop,再调用start,会有一段时间黑屏; 直接调用updateView对调,会导致远端画面不显示,或者没有效果; updateView
腾讯云音视频
2021/11/26
1.2K0
你问我答 | 实时音视频TRTC(2021年5月-7月)
实时音视频TRTC 你问我答 第1季 本期共解答10个问题 Q1:移动端(Andriod/iOS)支持哪几种系统音量模式? 支持2种系统音量类型,即通话音量类型和媒体音量类型: 通话音量,手机专门为通话场景设计的音量类型,使用手机自带的回声抵消功能,音质相比媒体音量类型较差, 无法通过音量按键将音量调成零,但是支持蓝牙耳机上的麦克风。 媒体音量,手机专门为音乐场景设计的音量类型,音质相比于通话音量类型要好,通过通过音量按键可以将音量调成零。使用媒体音量类型时,如果要开启回声抵消(AEC
腾讯云音视频
2021/08/30
1.3K0
TRTC零基础上手 -- 码上视频订阅篇
当作为拉流端,在远端推流后即可开始拉流,为了用户体验,建议按照规范要求,在收到SDK的事件回调后开始拉流,并在控件上显示远端画面
天上云间
2022/01/19
1.3K0
实时音视频 TRTC 常见问题汇总---小程序篇
如有更多需求,或希望深度合作,可以 提交工单 或致电4009100100联系我们。
腾讯视频云-Zachary
2021/09/21
5.8K0
实时音视频 TRTC 常见问题汇总---小程序篇
实时音视频V2版本,如何进行纯音频旁路直播
实时音视频TRTCSDK适用的业务场景是视频会议、坐席通话、在线教育等,也可以实现类似微信的语音通话、语音会议功能,
腾讯云-chaoli
2019/03/13
3.5K0
实时音视频V2版本,如何进行纯音频旁路直播
TRTC学习之旅(四)-- 用electron实现视频聊天室
前面我们已经学习过在web端用TRTC实时音视频SDK实现了多人会议室和互动直播模式,今天我们学习一下在桌面应用层用electron实现视频聊天。
黑眼圈云豆
2020/07/08
4.9K7
TRTC 视频旋转场景方案
在网络会议、双人视频通话等场景时,将手机横屏、竖屏放置场景下,实现本地和远端都可以看到正常的画面效果。
erickyan
2022/04/12
1.8K0
TRTC 视频旋转场景方案
实时音视频 TRTC 常见问题汇总---WebRTC篇
TRTC Web SDK 对浏览器的详细支持度,您可以查看 TRTC Web SDK 对浏览器支持情况。
腾讯视频云-Zachary
2019/11/15
23.2K3
实时音视频 TRTC 常见问题汇总---WebRTC篇
Android TRTC 推自定义采集的视频数据
如果开发者想在 TRTC 中集成第三方美颜库来实现美颜、滤镜等功能,第三方库的美颜功能输入数据格式支持有 camera 的原始数据(YUV 数据)、纹理数据(Textureid)。开发者想实现该功能,需要采用自定义采集视频数据接口,然后复用 LiteAVSDK 的编码和推流功能。
腾讯云-chaoli
2019/07/07
1.9K0
Android TRTC 推自定义采集的视频数据
iOS音视频接入 - TRTC接入实时视频通话
(前面我们已经了解TRTC的基本架构和功能,现在我们就来接入实时视频通话功能,此功能和微信的一对一视频通话是一致的,需要两个角色,一个角色是主动呼叫、一个为呼叫接听,结合使用场景我们来接入此功能。
小明同学接音视频
2020/10/13
6.3K0
iOS音视频接入 - TRTC接入实时视频通话
产品动态 | TRTC React Native SDK上线啦
React Native 是一个使用React和应用平台的原生功能来构建 Android 和 iOS 应用的开源框架。通过 React Native,您可以使用 JavaScript 来访问移动平台的 API,以及使用 React 组件来描述 UI 的外观和行为:一系列可重用、可嵌套的代码。 TRTC React Native SDK 是基于腾讯云 iOS/Android 平台的 TRTC SDK 进行封装的,架构图整体跟Flutter类似。 TRTC React Native sdk类文件说
腾讯云音视频
2021/11/22
1.2K0
推荐阅读
相关推荐
实时音视频 TRTC 常见问题汇总---集成接入篇
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档