本文将介绍TRTC视频推流的API以及注意事项并加上示例代码,让读者对TRTC中视频推流方面有所了解。
视频画面来自于摄像头,TRTC SDK会采集摄像头的画面,然后编码打包发送至云端链路,开发者只需要调用采集接口和设置编码器视频参数(码率、分辨率、帧率等)完成摄像头画面的采集。
示例代码
// 视频编码参数
TRTCCloudDef.TRTCVideoEncParam videoEncParams = new TRTCCloudDef.TRTCVideoEncParam();
videoEncParams.videoBitrate = 1500; // 编码码率
videoEncParams.minVideoBitrate = 640; // 最小码率
videoEncParams.videoFps = 15; // 设置帧率
mTRTCCloud.setVideoEncoderParam(videoEncParams);
// 发起视频采集并预览
mTRTCCloud.startLocalPreview(mIsFrontCamera, mTXCVVLocalPreviewView);
注意事项
屏幕共享画面上在教育展示等场景直接让远端用户观看自己的屏幕画面,TRTC SDK会采集屏幕画面,编码打包后发送到云端链路。开发者只需设置好分辨率、码率等参数,然后一键发起屏幕共享;支持Window、iOS、Android和Web发起屏幕共享。
示例代码
// 视频编码参数
TRTCCloudDef.TRTCVideoEncParam encParams = new TRTCCloudDef.TRTCVideoEncParam();
encParams.videoResolution = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_1280_720;
encParams.videoResolutionMode = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_MODE_LANDSCAPE;
encParams.videoFps = 10;
encParams.enableAdjustRes = false;
encParams.videoBitrate = 1200;
TRTCCloudDef.TRTCScreenShareParams params = new TRTCCloudDef.TRTCScreenShareParams();
// 发起屏幕分享
mTRTCCloud.startScreenCapture(TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_SUB, encParams, params);
注意事项
TRTC 部分SDK支持采集自定义画面,开发者只需要按一定的帧率发送经过处理的帧数据包到TRTC SDK,SDK将自动打包并发送到云端链路。
如果开发者需要更灵活的场景,比如下列场景可以使用该功能:
示例代码
// 启用自定义采集
mTRTCCloud.enableCustomVideoCapture(TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG,true);
// 组装视频帧数据包
TRTCCloudDef.TRTCVideoFrame videoFrame = new
TRTCCloudDef.TRTCVideoFrame();
videoFrame.texture = new TRTCCloudDef.TRTCTexture();
videoFrame.texture.textureId = textureId;
videoFrame.texture.eglContext14 = eglContext;
videoFrame.width = width;
videoFrame.height = height;
videoFrame.pixelFormat = TRTCCloudDef.TRTC_VIDEO_PIXEL_FORMAT_Texture_2D;
videoFrame.bufferType = TRTCCloudDef.TRTC_VIDEO_BUFFER_TYPE_TEXTURE;
// 发送自定义视频帧数据包
mTRTCCloud.sendCustomVideoData(TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG ,videoFrame);
注意事项
示例代码
TRTCCloudDef.TRTCVideoEncParam encParams = new TRTCCloudDef.TRTCVideoEncParam();
...
// 设置分辨率
encParams.videoResolution = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_1280_720;
注意事项
分辨率主要分横屏或竖屏,对应的桌面端和移动端摄像头采集的视频画面。
示例代码
TRTCCloudDef.TRTCVideoEncParam encParams = new TRTCCloudDef.TRTCVideoEncParam();
...
// 设置分辨率方向
encParams.videoResolutionMode = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_MODE_PORTRAIT;
注意事项
人们在视频通话过程中,更希望看到的是自己的镜像图像。设置后预览画面和远端观看的画面将是镜像。
-- 注意,屏幕分享时候镜像无效。
示例代码
boolean isMirror = true ; //设置是否镜像
mTRTCCloud.setVideoEncoderMirror( isMirror );
注意事项
示例代码
TRTCCloudDef.TRTCVideoEncParam videoEncParams = new TRTCCloudDef.TRTCVideoEncParam();
videoEncParams.videoBitrate = 1500; // 编码码率
videoEncParams.minVideoBitrate = 640; // 最小码率
mTRTCCloud.setVideoEncoderParam(videoEncParams);
注意事项
为了能够兼容不同的带宽,可以开启通过TRTC SDK开启大小流画面编码(双路编码),在低码率环境,用户只需要拉小画面视频流,正常码率环境的用户拉大画面视频流。需要开发者手动启用,并设定小画面的码率、分辨率等参数。
示例代码
TRTCCloudDef.TRTCVideoEncParam videoEncParams = new TRTCCloudDef.TRTCVideoEncParam();
videoEncParams.videoResolution = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_240_180;
...
...
// 启用并设置小流的编码器参数
mTRTCCloud.enableEncSmallVideoStream(true, videoEncParams );
注意事项
示例代码
// 画面渲染参数
TRTCCloudDef.TRTCRenderParams renderParams = new TRTCCloudDef.TRTCRenderParams();
...
// 设置预览画面渲染参数使其生效
mTRTCCloud.setLocalRenderParams(renderParams);
SDK支持两种画面渲染模式: Fill和Fit,前者无论原分辨率如何都将画面铺满View组件,多出部分画面将被剪裁;后者将会显示完整的视频画面,多出的部分View区域将黑屏显示。
示例代码
TRTCCloudDef.TRTCRenderParams params = new TRTCCloudDef.TRTCRenderParams();
// 填充模式
params.fillMode = TRTCCloudDef.TRTC_VIDEO_RENDER_MODE_FILL;
// 平铺模式
params.fillMode = TRTCCloudDef.TRTC_VIDEO_RENDER_MODE_FIT;
...
// 设置本地预览画面参数
mTRTCCloud.setLocalRenderParams(params);
TRTCCloudDef.TRTCRenderParams params = new TRTCCloudDef.TRTCRenderParams();
// 旋转画面90度
params.rotation = TRTCCloudDef.TRTC_VIDEO_ROTATION_90;
...
// 设置本地预览画面参数
mTRTCCloud.setLocalRenderParams(params);
示例代码
TRTCCloudDef.TRTCRenderParams params = new TRTCCloudDef.TRTCRenderParams();
// 自动模式,如果前置摄像头将会镜像,后置将不会镜像
params.mirrorType = TRTCCloudDef.TRTC_VIDEO_MIRROR_TYPE_AUTO;
// 强制镜像,前置后置摄像头将开启镜像
params.mirrorType = TRTCCloudDef.TRTC_VIDEO_MIRROR_TYPE_ENABLE;
// 禁用镜像
params.mirrorType = TRTCCloudDef.TRTC_VIDEO_MIRROR_TYPE_DISABLE;
// 设置本地预览画面参数
mTRTCCloud.setLocalRenderParams(params);
muteLocalVideo(true) 将暂停推流视频,远端画面将暂停,本地视频采集还会继续,muteLocalVideo(false):取消暂停视频推流,远端视频画面将恢复显示。
// 禁用视频推流
mTRTCCloud.muteLocalVideo(TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG , true );
// 恢复视频推流
mTRTCCloud.muteLocalVideo(TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG , false );
注意事项
设置后muteLocalVideo true将推该图片
Bitmap bitmap = ...
// 设置垫片,帧率为 5
mTRTCCloud.setVideoMuteImage(bitmap,5);
停止视频采集已经视频推流,同时预览画面也将黑屏显示。
mTRTCCloud.stopLocalPreview();
注意事项
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。