small-video-record icon indicating copy to clipboard operation
small-video-record copied to clipboard

设置全屏录制时,画面扭曲

Open panliming-tuya opened this issue 7 years ago • 3 comments

全屏播放时高度似乎识别不正确

MediaRecorderConfig config = new MediaRecorderConfig.Buidler().fullScreen(true).smallVideoWidth(displayMetrics.widthPixels).smallVideoHeight(displayMetrics.heightPixels)

我是这么设置的,虽然视频全屏了,但是高度被拉长了

panliming-tuya avatar Jan 18 '18 08:01 panliming-tuya

找到原因了,是高度设置的问题,在魅族pro6上设置480,vivo xplay6设置了720就不会被拉长 可是,我如何计算高度该设置成什么呢?

panliming-tuya avatar Jan 18 '18 09:01 panliming-tuya

已解决,你设置视频预览宽高地方的代码有问题

MediaRecorderBase.java类,给支持尺寸的排序

    Collections.sort(supportedPreviewSizes, new Comparator<Size>() {
        @Override
        public int compare(Size o1, Size o2) {
            return  (o2.height + o2.width)-(o1.height + o1.width);
        }
    });

然后修改MediaRecorderBase.java类中的prepareCameraParaments方法中设置预览尺寸的地方

    if(!NEED_FULL_SCREEN){
        mParameters.setPreviewSize(mSupportedPreviewWidth, SMALL_VIDEO_HEIGHT);
    }else {
        Size size = mSupportedPreviewSizes.get(0);
        mParameters.setPreviewSize(size.width, size.height);
    }

MediaRecorderNative类的startRecord也需要修改

    if (NEED_FULL_SCREEN) {
        Camera.Size size = mSupportedPreviewSizes.get(0);
        FFmpegBridge.prepareJXFFmpegEncoder(mMediaObject.getOutputDirectory(), mMediaObject.getBaseName(), vCustomFormat, size.width, size.height, size.width, size.height, mFrameRate, mVideoBitrate);
    } else
        FFmpegBridge.prepareJXFFmpegEncoder(mMediaObject.getOutputDirectory(), mMediaObject.getBaseName(), vCustomFormat, mSupportedPreviewWidth, SMALL_VIDEO_HEIGHT, SMALL_VIDEO_WIDTH, SMALL_VIDEO_HEIGHT, mFrameRate, mVideoBitrate);

panliming-tuya avatar Jan 18 '18 09:01 panliming-tuya

那大佬 你是把项目导进去 重写的么?

WangPney avatar May 11 '18 06:05 WangPney