首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 实时音视频(TRTC)实现横屏视频通话

Android 实时音视频(TRTC)实现横屏视频通话

原创
作者头像
腾讯云-yyuanchen
修改2019-09-30 11:40:52
9.4K1
修改2019-09-30 11:40:52
举报

问题场景

如果您因业务场景需求,需要用户将手机横着放,然后进行视频通话。可以参考以下文档实现该功能。

解决方案

场景一:用户习惯是手机固定横着放。

1. 将 Activity 设置为横屏

假设视频通话界面名为 TRTCMainActivity,在 AndroidManifest.xml 中将该界面设置为横屏。

<activity
    android:name=".trtc.TRTCMainActivity"
    android:launchMode="singleTask"
    android:windowSoftInputMode="adjustPan"
    android:screenOrientation="landscape" />

2.将视频分辨率设置为横屏

private TRTCCloud trtcCloud;              /// TRTC SDK 实例对象
private TRTCCloudListener trtcListener;   /// TRTC SDK 回调监听

// 创建 trtcCloud 实例
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ....
    trtcListener = new TRTCCloudListenerImpl(this);
    trtcCloud = TRTCCloud.sharedInstance(this);
    trtcCloud.setListener(trtcListener);
    // 预览前配置默认参数
	setTRTCCloudParam();
	// 开启视频采集预览
	......
	//进房
	trtcCloud.enterRoom(trtcParams, TRTCCloudDef.TRTC_APP_SCENE_VIDEOCALL);
}

/**
 * 设置视频通话的视频参数(分辨率、帧率和流畅模式等参数)
 */
private void setTRTCCloudParam() {

    // 大画面的编码器参数设置
    TRTCCloudDef.TRTCVideoEncParam encParam = new TRTCCloudDef.TRTCVideoEncParam();
    encParam.videoResolution = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_640_360;  
    encParam.videoFps = 15;
    encParam.videoBitrate = 550;
    // videoResolutionMode 设置为横屏
    encParam.videoResolutionMode = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_MODE_LANDSCAPE; 
    trtcCloud.setVideoEncoderParam(encParam);

    ......
}

场景二:用户习惯是手机固定横着放,但需支持手机旋转 360 度。

首先按照场景一的流程实现,然后开启 SDK 的重力接口即可。

/**
 * 设置视频通话的视频参数(分辨率、帧率和流畅模式等参数)
 */
private void setTRTCCloudParam() {

    // 大画面的编码器参数设置
    TRTCCloudDef.TRTCVideoEncParam encParam = new TRTCCloudDef.TRTCVideoEncParam();
    encParam.videoResolution = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_640_360;  
    encParam.videoFps = 15;
    encParam.videoBitrate = 550;
    // videoResolutionMode 设置为横屏
    encParam.videoResolutionMode = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_MODE_LANDSCAPE; 
    trtcCloud.setVideoEncoderParam(encParam);

	// 开启重力感应
	trtcCloud.setGSensorMode(TRTCCloudDef.TRTC_GSENSOR_MODE_UIAUTOLAYOUT);
    ......
}

原理说明

TRTC SDK 还提供了 5个 改变渲染角度(本地预览、远端观众)的接口,方便您根据场景需要进行各种调整。

补充

1) 为什么横屏预览会有出现裁剪的问题?

建议您先将TRTC SDK 更新到 6.3 版本或以上,问题应该能迎刃而解。

2) 是否能设置预览画面的渲染效果(填充 or 适应)?

SDK 支持该功能。您可以使用TrtcCloud.setLocalViewFillMode(); 接口来实现效果。其中的值分别是:

填充模式(画面可能会被拉伸裁剪)值为 TRTCCloudDef.TRTC_VIDEO_RENDER_MODE_FIT

适应模式(画面可能会有黑边)值为 TRTCCloudDef.TRTC_VIDEO_RENDER_MODE_FILL

3) 参考文档


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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题场景
  • 解决方案
    • 场景一:用户习惯是手机固定横着放。
      • 1. 将 Activity 设置为横屏
        • 2.将视频分辨率设置为横屏
        • 场景二:用户习惯是手机固定横着放,但需支持手机旋转 360 度。
        • 原理说明
        • 补充
          • 1) 为什么横屏预览会有出现裁剪的问题?
          • 2) 是否能设置预览画面的渲染效果(填充 or 适应)?
          • 3) 参考文档
          相关产品与服务
          实时音视频
          实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档