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

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

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

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

集成类

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

该场景适用于 iOS 、Android 平台。 需将 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
复制
 /**
 * 视频首帧渲染回调
 * <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
复制
- (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
复制
<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
复制
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
复制
mTRTCCloud.startLocalPreview(mMoreDialog.isCameraFront(), null);

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

代码语言:txt
复制
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
复制
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
复制
<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
复制
mTRTCCloud.setRemoteViewFillMode(userId, TRTCCloudDef.TRTC_VIDEO_RENDER_MODE_FIT);
mTRTCCloud.startRemoteView(userId, renderView);
  • iOS 示例代码
代码语言:txt
复制
[_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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 集成类
    • 1.如何选择媒体音量和通话音量?
      • 2.如何判断打开摄像头成功?
        • 3.如何判断打开麦克风成功?
          • 4.音视频通话,如何判断推流成功?
            • 5.纯音频通话,如何判断推流成功?
              • 6.如何判断拉取远端观众流成功?
                • 7.是否支持 SurfaceView 自定义渲染?
                  • 8.如何实现本地预览画面自定义渲染?
                    • Android 平台
                  • 9.有哪些技术统计指标?
                    • 10.如何纯音频通话?
                      • 场景1:业务场景中没有使用到 CDN 旁路直播
                      • 场景2:业务场景中使用到 CDN 旁路直播
                    • 11.TRTC 需要哪些用户权限?
                    • 质量类
                      • 1.播放远端观众画面出现黑边
                        • 2.播放远端观众画面出现卡顿
                          • 3.打开摄像头失败
                            • 4.预览/播放画面出现旋转
                              • 使用TRTCSDK摄像头采集
                              • 使用自定义视频采集
                            • 5.视频镜像问题
                              • 6.如何横屏推流
                                • 7.杀死进程,如何确认主播是否在直播中?
                                • 产品咨询类
                                  • 1.腾讯实时音视频提供的解决方案有哪些?
                                    • 2.视频通话和低延时直播的区别?
                                      • 3.TRTCSDK支持哪些平台和版本
                                        • 4.TRTCSDK 支持Android哪些设备?
                                        相关产品与服务
                                        实时音视频
                                        实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
                                        领券
                                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档