Android录制小视频(三)
来源:互联网 发布:seo工作难点跟重点 编辑:程序博客网 时间:2024/05/22 03:33
之前的文章讲到半屏录制小视频,不过微信不已经全屏了么,我们的项目也要与时俱进不是。在仿微信全屏录制的过程中,有两点需要注意的地方:
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,在释放时,设置为空,以免报错。
0 0
- Android录制小视频(三)
- Android录制视频,仿微信小视频录制(三)
- Android录制视频(三)
- Android录制小视频(一)
- Android录制小视频(二)
- Android之---高仿微信录制小视频(拍摄和查看)
- Android MediaRecorder录制视频音量小问题解决 (音视频转码合成)
- Android录制视频,仿微信小视频录制(一)
- Android录制视频,仿微信小视频录制(二)
- 仿微信录制小视频
- Android基于ffmpeg媒体库小视频录制功能
- 使用Android编写录制视频小程序示例
- Android实现微信录制小视频的计时动画
- android点击拍照长按录制小视频
- Android 音视频录制(2)——Buffer录制
- Android音视频录制(4)——变速录制
- android视频录制(调用系统视频录制)
- 利用FFmpeg玩转Android视频录制与压缩(三)
- 一张图道尽程序员的出路
- H5实战页面
- 构造方法、类的初始化块以及类字段的初始化顺序
- Excel VBA 自动添加新行并递增ID
- 【java】Struts2中值栈的理解
- Android录制小视频(三)
- Java之方法重载篇(我重载了,你要如何来调用我。。)
- 海量数据处理(二) 位图
- 海量数据处理(三) T树
- 突如其来的“中断异常”,我(Java)该如何处理?
- 海量数据处理(四) simhash
- 内存管理(一) ptmalloc基础知识
- 内存管理(二)ptmalloc的分配回收…
- Java中实现对象的比较:Comparable接口和Comparator接口