Android录制小视频(三)

      之前的文章讲到半屏录制小视频,不过微信不已经全屏了么,我们的项目也要与时俱进不是。在仿微信全屏录制的过程中,有两点需要注意的地方:

     1.camera的预览大小设置

     这个依然采取以前的策略,在支持的预览大小中,选择与当前屏幕宽高比最相近的一个preViewSize,保证surfaceView中画面不会太失真。经过测试发现,手机支持的预览尺寸里还是有很接近屏幕宽高比的,这也可能是机子在设计之初就考虑到了全屏的情况了。

  

     2.录制完结束后,使用mediaPlayer循环播放,直至用户选择确定按钮。

     这里需要注意的地方是,录制结束后,要释放资源,尤其是surfaceHolder。MediaRecorder与camer先后释放出holder后,将其交给MediaPlayer,这样就可以播放了。如果需要重新录制,MediaPlayer释放holder,camera获取即可。

 /**
     * 停止录制:异常返回false
     */
    public boolean stopRecorderVideo() {

        handler.removeCallbacks(mTimestampRunnable);
        endTime = System.currentTimeMillis();

        if (recorder == null || !isRunning) {
            return false;
        }

        try {
            //避免录制过短崩溃
            recorder.setOnErrorListener(null);
            recorder.setPreviewDisplay(null);
            recorder.stop();
            recorder.reset();
            //释放资源
            recorder.release();
            recorder = null;

            camera.stopPreview();
            camera.setPreviewDisplay(null);
            isRunning = false;

            iVideoRecorder.videoRecordStop(getVideoFilePath(), getVideoFileLongTime(), getVideoSyncFrame());


        } catch (Exception e) {
            e.printStackTrace();
            iVideoRecorder.videoRecordError();
            return false;
        }
        return true;
    }
 

        这里需要注意的是:camera释放holder时,需要停止预览,否则有的手机会黑屏,无法交接holder了。


     另外在camera开发的过程中,容易报:Camera is being used after Camera.release(),需要在释放资源前,surfaceHolder.removeCallback(this).如果camera设置了PreviewCallback,在释放时,设置为空,以免报错。

      

 






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值