Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android MediaRecorder准备失败:-牛轧糖2147483648_Android_Mediarecorder_Android Camera2 - Fatal编程技术网

Android MediaRecorder准备失败:-牛轧糖2147483648

Android MediaRecorder准备失败:-牛轧糖2147483648,android,mediarecorder,android-camera2,Android,Mediarecorder,Android Camera2,我正在写一个应用程序,通过表面从摄像机录制视频 以下代码用于准备MediaRecorder MediaRecorder mediaRecorder; mediaRecorder = new MediaRecorder(); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

我正在写一个应用程序,通过表面从摄像机录制视频

以下代码用于准备MediaRecorder

MediaRecorder mediaRecorder;
mediaRecorder = new MediaRecorder();
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        mediaRecorder.setOutputFile(videoFilename);
        mediaRecorder.setVideoEncodingBitRate(1000000);
        mediaRecorder.setVideoFrameRate(30);
        mediaRecorder.setVideoSize(videoSize.getWidth(), videoSize.getHeight());
        mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
        try {
            mediaRecorder.prepare();
        } catch (IOException e) {
            e.printStackTrace();
        }
像这样获取outfile(videoFilename)

File defaultExternalFolder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
File videoFolder = new File(defaultExternalFolder, "My-Vids");
    if (!videoFolder.exists()) {
        videoFolder.mkdir();
    }

String timestemp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String prepend = "MyVid_" + timestemp + "_";
File videoFile = File.createTempFile(prepend, ".mp4", videoFolder);
videoFilename = videoFile.getAbsolutePath();
return videoFile;
videoSize只是一个对象大小类

当我尝试启动MediaRecorder时,我得到
java.io.IOException:prepare失败。


奇怪的是,它只在牛轧糖操作系统中崩溃,在其他设备中工作正常

我猜您正在emulator上运行此代码。实际上,emulator不支持MediaRecorder。 见:

注意:目前,MediaRecorder在模拟器上不工作

好的,您可以通过comment-Mic-config测试它,您将看到它的工作原理

MediaRecorder mediaRecorder;
mediaRecorder = new MediaRecorder();
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
//mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setOutputFile(videoFilename);
mediaRecorder.setVideoEncodingBitRate(1000000);
mediaRecorder.setVideoFrameRate(30);
mediaRecorder.setVideoSize(videoSize.getWidth(), videoSize.getHeight());
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
//mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
try {
    mediaRecorder.prepare();
} catch (IOException e) {
    e.printStackTrace();
}

我已经在安卓7.1(三星Galaxy S8)上测试了你的代码及其工作原理。仅在emulator上出现问题。

对于我来说,MediaRecorder-2147483648错误 依赖于设备和操作系统级别。通常,录音机 将启动1次,随后的启动将失败。 修复方法是添加对MediaRecorder.release()的调用

。。。
试一试{
录音机键入_MR.stop();

audioRecorderType_MR.release();//您找到解决方案了吗?我有完全相同的问题。它只在牛轧糖上失效。不,我还没有找到任何解决方案。是的,这就是问题所在,但它在三星手机上仍然不起作用。特别是对于正面摄像头。
...
try {
      audioRecorderType_MR.stop();
      audioRecorderType_MR.release();  // <<-- ADD THIS LINE
} catch (Exception e) {
      J42CallerId.printStackTrace(new J42ProgramCheck("J42VM0072E:", e));
}
audioRecorderType_MR = null;
...