实时音视频(TRTC)常见问题目录:
该场景适用于 iOS 、Android 平台。 需将 SDK 版本更新至 6.6 版本或以上
一般而言,媒体音量指播放音乐、视频的声音、游戏声音等的音量,而通话音量指打电话的音量,视频通话的音量。
默认情况下,麦上用户(视频通话场景中的所有用户,低延时直播场景下的主播和连麦观众)使用的是通话音量。麦下用户(低延时直播场景下的普通观众)使用的是媒体音量。
另外 TRTCSDK 开放 void setSystemVolumeType(int type)
接口,支持自主选择通话音量和媒体音量。
TRTCAudioVolumeTypeAuto
:默认类型,麦上通话音量、麦下媒体音量;
TRTCAudioVolumeTypeMedia
:始终使用媒体音量。
该场景适用于 iOS/Mac、Android 、Windows 平台。 需将 SDK 版本更新至 6.6 版本或以上
SDK 提供回调方法onCameraDidReady()
,当收到该回调时表示摄像头已经准备就绪。
该场景适用于 iOS/Mac、Android 、Windows 平台。 需将 SDK 版本更新至 6.6 版本或以上
SDK 提供回调方法onMicDidReady()
,当收到该回调时表示麦克风已经准备就绪。
该场景适用于 iOS/Mac、Android 、Windows 平台。
SDK 提供回调方法 onSendFirstLocalVideoFrame(int streamType)
,在 enterRoom()
并 startLocalPreview()
成功后开始摄像头采集,并将采集到的画面进行编码。 当 SDK 成功向云端送出第一帧视频数据后,会抛出这个回调事件。
该场景适用于 iOS/Mac、Android 、Windows 平台。 需将 SDK 版本更新至 6.5 版本或以上 SDK 提供回调方法
onSendFirstLocalAudioFrame()
,在enterRoom()
并startLocalPreview()
成功后开始麦克风采集,并将采集到的声音进行编码。 当 SDK 成功向云端送出第一帧音频数据后,会抛出这个回调事件。
该场景适用于 iOS/Mac、Android 、Windows 平台。
SDK 提供回调方法 onFirstVideoFrame(String userId, int streamType, int width, int height)
,如果 userId 为 null,代表开始渲染本地采集的摄像头画面,需要您先调用 startLocalPreview()
触发。 如果 userId 不为 null,代表开始渲染远程用户的首帧画面,需要您先调用 startRemoteView
触发。
/**
* 视频首帧渲染回调
* <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);
}
- (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);
}
该场景适用于 Android 平台的本地预览端和远端观众端。 需将 SDK 版本更新至 6.6 版本或以上
<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>
private TXCloudVideoView mVideoView;
SurfaceView mSurfaceView = (SurfaceView) findViewById(R.id.trtc_tc_cloud_view);
mVideoView = new TXCloudVideoView(mSurfaceView);
该场景适用于 iOS、Android 平台。
1.调用摄像头预览接口,第二参数设置为 null,表示不设置SDK的内部渲染控件 TXCloudVideoView
mTRTCCloud.startLocalPreview(mMoreDialog.isCameraFront(), null);
2.设置监听setLocalVideoRenderListener
,然后进行自定义渲染
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.自定义渲染的具体用法可以参考文档 自定义视频渲染 、 setLocalVideoRenderListener 、 TRTCVideoRenderListener
该场景适用于 iOS/Mac、Android 、Windows 平台。
SDK 提供回调方法 onStatistics(TRTCStatistics statics)
,每 2 秒回一次技术指标。包括当前 appCpu(App 的 CPU 使用率)、systemCpu(当前系统的 CPU 使用率)、rtt(延迟)、upLoss(上行丢包率)、downLoss(下行丢包率)以及本地成员和远端成员的音视频统计信息,具体参数可参考 TRTCStatistics 类型说明文档
该场景适用于 iOS/Mac、Android 、Windows 平台。
用户在 enterRoom()
之前,只调用开启麦克风采集接口 startLocalAudio()
,不需要调用摄像头预览接口startLocalPreview()
。
需要在音频推流配置参数中增加 TRTCParams.businessInfo
字段,指定 CDN 旁路能支持纯音频流。
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版本,如何进行纯音频旁路直播。
适用于Android平台。
<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" />
如下代码所示,播放远端观众的画面渲染模式选择 TRTC_VIDEO_RENDER_MODE_FIT
模式, 当渲染控件 View 的宽高比与视频宽高此不一致时,有黑边情况。
mTRTCCloud.setRemoteViewFillMode(userId, TRTCCloudDef.TRTC_VIDEO_RENDER_MODE_FIT);
mTRTCCloud.startRemoteView(userId, renderView);
[_trtc startRemoteView:userId view:remoteView];
[_trtc setRemoteViewFillMode:userId mode:TRTCVideoFillMode_Fit];
解决方案:
1.确保渲染控件 View 宽高和视频宽高一致
2.渲染模式选择TRTC_VIDEO_RENDER_MODE_FIT
,但画面可能会出现能会被拉伸裁剪的情况。
1.检测网络情况,建议更换网络重现
2.找到 roomid、userid ,然后到控制台的 监控仪表盘 ,自主查询用户的卡顿情况。
setLocalViewRotation
,远端视频画面的渲染角度接口setRemoteViewRotation
,设置编码器输出的画面渲染角度接口setVideoEncoderRotation
进行调整。具体接口使用说明文档见视频画面旋转TRTCCloudDef.TRTCVideoFrame
设置旋转角度setLocalViewRotation
,远端视频画面的渲染角度接口setRemoteViewRotation
,设置编码器输出的画面渲染角度接口setVideoEncoderRotation
进行调整。具体接口使用说明文档见视频画面旋转使用前摄像头进行视频通话,会有镜像效果,所以本地预览和远端观众画面是左右颠倒。如果开发者想让两端画面一致,可以参考文档使用前摄像头进行视频通话,本地预览和远端观众画面是左右颠倒?
开发者可能用设备是电视或者因场景需要横屏推流,具体实现可以参考 Android TRTC 实现横屏视频通话 文档。
该场景适用于 iOS/Mac、Android 、Windows 平台。
在 TRTC 房间中有推流上行的用户,当应用进程被杀死或者主动断开网络,超过 30 秒之后,主播还没有恢复推流。TRTC 房间里面其他用户会收到主播(有推流上行的用户)退出房间的回调。
腾讯实时音视频(TRTC)目前有两种解决方案,一种是视频通话,另一种是万人低延时直播。
腾讯实时音视频(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 浏览器 |
腾讯实时音视频(TRTC) SDK 已经针对手机、盒子、电视等设置做了相关的兼容优化,所以 SDK 能在相关的设备上运行。如果你设备运行有问题,欢迎在评论留言反馈或者在 Github 上提 issue 反馈
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。