我一直在试图让自定义相机屏幕工作,但由于某种原因,下面的代码似乎不工作。我最终得到一个RuntimeException
,由一个错误导致:setAudioSource called in an invalid state(4)
。MediaRecorder错误:setAudioSource处于无效状态(4)
以下是有问题的代码:
Preview.getRecorderInstance().setVideoSource(MediaRecorder.VideoSource.CAMERA);
Preview.getRecorderInstance().setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
Preview.getRecorderInstance().setAudioSource(MediaRecorder.AudioSource.MIC);
Preview.getRecorderInstance().setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
Preview.getRecorderInstance().setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
Preview.getRecorderInstance().setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/test" + System.currentTimeMillis() + ".mp4"
);
Preview.getRecorderInstance().prepare();
Preview.getRecorderInstance().start();
Preview.getRecorderInstance()
获取单媒体记录器绑在Preview
类(这是设计来显示相机预览的SurfaceView
的子类)。
我的权限: <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
我会很感激任何帮助,因为我没有在这方面成气候,我已经看了看计算器类似的问题。阅读回复后我无法解决问题。
感谢您的帮助!这消除了这个错误,但另一方面现在我得到一个错误,说'开始失败:-19'。问题是当我开始记录器时,我无法弄清楚为什么。 – adilipan
@adilipan:其他SO帖子显示此错误可能与MediaRecorder.setVideoSize()设置的视频大小有关。你是否在你的代码中调用该方法? –
不,我根本没有在我的代码中调用该方法。 – adilipan