使用Camera
录制前解锁MediaRecorder
的协议是什么? docs说:
使用Android框架进行视频捕获需要仔细管理Camera对象并与MediaRecorder类协调。使用Camera录制视频时,除了Camera.open()和Camera.release()调用之外,您还必须管理Camera.lock()和Camera.unlock()调用以允许MediaRecorder访问摄像头硬件。
注意:从Android 4.0(API级别14)开始,将自动为您管理Camera.lock()和Camera.unlock()调用。
但是,无论我测试什么设备,如果我在Camera.unlock
之前没有打电话给MediaRecorder.start
,我会收到例外(start failed)
。
文档是在撒谎,还是我做错了什么?
我的流程是打开相机(使用Camera.open(int)
),将录制提示设置为true,设置预览FPS和大小,以及显示方向。然后我创建MediaRecorder
并设置音频和视频源,输出格式,帧速率,大小,视频比特率,音频和视频编码器,方向提示,输出文件,然后我致电MediaRecorder.prepare
。
如果所有内容成功完成,则当用户点击"记录"按钮,我调用MediaRecorder.start()
并抛出异常。如果我改为致电:
Camera.unlock();
MediaRecorder.start();
没有例外。
答案 0 :(得分:0)
我对MediaRecorder有足够的经验说这个错误可能发生在大量案件中。 顺便说一下,如果锁定/解锁方法出现问题,那么错误将是
解锁失败
在大多数情况下,(启动失败)错误会导致错误的录像机初始化。 写你的init方法请。