启动MediaRecorder启动失败的某些设备出错-19

时间:2014-11-12 14:16:31

标签: android mediarecorder

我正在尝试在我的应用程序中记录视频,在我的Nexus 5和中兴这个代码工作正常但在Samsumg Galaxy S2和S3失败,除了“启动失败-19”我是MediaRecorder的菜鸟,我只需要一个适用于所有摄像机的配置,这些摄像机可以记录正常质量的.mp4视频文件。

    try {
        prCamera.unlock();
        prMediaRecorder.setCamera(prCamera);
        prMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        prMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
        prMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        prMediaRecorder.setVideoFrameRate(24);
        prMediaRecorder.setVideoSize(720, 480);
        prMediaRecorder.setVideoFrameRate(24);
        prMediaRecorder.setVideoEncodingBitRate(3000000);
        prMediaRecorder.setAudioEncodingBitRate(12200);
        prMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        prMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
        prMediaRecorder.setMaxDuration(cMaxRecordDurationInMs);
        // Nombre del video de salida
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.ENGLISH).format(new Date());
        nombreVideo = "video_" + timeStamp;
        prRecordedFile = new File(cVideoFilePath + nombreVideo + ".mp4");
        prMediaRecorder.setOutputFile(prRecordedFile.getPath());
        prMediaRecorder.setPreviewDisplay(prSurfaceHolder.getSurface());
        try {
            prMediaRecorder.prepare();
        // Fail on next line
            prMediaRecorder.start();
        } catch (IllegalStateException e) {
            Log.d(tag, "IllegalStateException preparing MediaRecorder: " + e.getMessage());
            timer.cancel();
            cerrarCamara();
            return false;
        } catch (IOException e) {
            Log.d(tag, "IOException preparing MediaRecorder: " + e.getMessage());
            timer.cancel();
            cerrarCamara();
            return false;
        } catch (Exception e) {
            Log.d(tag, "Unknown exception preparing MediaRecorder: " + e.getMessage());
            timer.cancel();
            cerrarCamara();
            return false;
        }
        prRecordInProcess = true;

1 个答案:

答案 0 :(得分:1)

为什么不使用

CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);

我无法找到此配置文件的确切设置,但我很确定outputformat是mpeg4,这就是你想要的...... 我记得大多数媒体记录器问题都与错误的设置参数有关。尝试使用此个人资料。它保证了设备的最高可用性和工作设置。您可以在http://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_HIGH

了解更多有关此内容和其他可能更符合您需求的信息