腾讯互动直播1.7横竖屏切换以及画面颠倒问题解决

本文解决了腾讯互动直播中直播端与观众端屏幕旋转不同步及画面颠倒的问题。通过禁用屏幕旋转监听并调整镜像设置,确保直播画面正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用腾讯互动直播的时候,Android 版本1.7demo里面直播端和观众端手机屏幕的旋转都做了监听,这样就会导致一个问题,就是直播端横屏直播了,但是观众端是竖屏的,看到的就是小屏幕,所以我这里的解决方案就是不监听横竖屏的切换,还有就是画面颠倒,重设镜像就可以了。下面是具体的问题;


问题1:直播端横竖屏切换的时候,观众端不动,会看到小屏幕的情况

这里写图片描述

这种情况就是,直播端横屏直播了,但是观众端是竖屏看的,导致看到小屏幕的问题

修改方法:在直播界面将监听横竖屏的相关代码注释或者删除

    void registerOrientationListener() {
//        if (mOrientationEventListener == null) {
//            mOrientationEventListener = new VideoOrientationEventListener(super.getApplicationContext(), SensorManager.SENSOR_DELAY_UI);
//        }
    }

    void startOrientationListener() {
//        if (mOrientationEventListener != null) {
//            mOrientationEventListener.enable();
//        }
    }

    void stopOrientationListener() {
//        if (mOrientationEventListener != null) {
//            mOrientationEventListener.disable();
//        }
    }

原代码是监听屏幕旋转,切换屏幕方向的。我觉得用户体验并不是很好,直接给注释了。

这里写图片描述

下图是解决之后的效果:观众端看到的就是横过来的画面,图片不清晰是我截屏的问题
这里写图片描述

问题2:不监听横竖屏之后,在前置或者后置摄像头进行直播的时候,直播端的画面是反的,即人物是颠倒的

这里写图片描述

直播端看到的画面,在横屏的情况下,主播看到自己的画面一直是倒过来的。修改方法重置镜像

//切换摄像头调用的方法
private void onSwitchCamera() {
        boolean isFront = mQavsdkControl.getIsFrontCamera();
        Log.d(TAG, "onSwitchCamera 111111  " + isFront+",mHostIdentifier="+mHostIdentifier);

        //关键的地方,设置镜像的方法
        mQavsdkControl.setMirror(isFront,mHostIdentifier);
        mSwitchCameraErrorCode = mQavsdkControl.toggleSwitchCamera();

        Log.d(TAG, "onSwitchCamera() switchCamera!!  " + mSwitchCameraErrorCode);
        refreshCameraUI();
        if (mSwitchCameraErrorCode != AVError.AV_OK) {
            showDialog(isFront ? DIALOG_SWITCH_BACK_CAMERA_FAILED : DIALOG_SWITCH_FRONT_CAMERA_FAILED);
            mQavsdkControl.setIsInSwitchCamera(false);
            refreshCameraUI();
        } else {
//            Log.d(TAG, "onSwitchCamera " + currentCameraIsFront);
        }
    }

主要是找到 mAVUIControl,在这层控制
public void setMirror(boolean isFront,String ident){
if(mAVUIControl!=null){
mAVUIControl.setCameraMirror(isFront,ident);
}
}

//这个方法是我手动添加的,demo 里面没有
public void setCameraMirror(boolean isFront,String identifier){
        Log.d(TAG, "setCameraMirror  isFront " + isFront+",identifier="+identifier);

        GLVideoView view = null;
        int index = getViewIndexById(identifier, AVView.VIDEO_SRC_TYPE_CAMERA);
        if (index < 0) {
            index = getIdleViewIndex(0);

            if (index >= 0) {
                view = mGlVideoView[index];
            }
        } else {
            view = mGlVideoView[index];
        }
        if (view != null) {
        //设置镜像的地方
            view.setMirror(!isFront);
        }
    }

view.setMirror(!isFront); true 或者 false 更具自己摄像头的情况定,我是后置是反的,所以是开启后置摄像头的时候,我设置的是true,
如果你前置是反的,开启前置的时候,设置为 true 就好了。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值