【问题标题】:MediaRecorder start failed on setVideoSize()在 setVideoSize() 上 MediaRecorder 启动失败
【发布时间】:2015-07-05 00:26:43
【问题描述】:

我正在使用棒棒糖在 xperia z2 上进行开发。

我的应用程序使用默认大小 (1920*1080) 或当我使用 setVideoSize(1920,1080) 手动设置它时,如果我提供其他分辨率它会失败,错误代码为 -19。

任何帮助将不胜感激。谢谢

这是我的代码

private boolean prepareVideoRecorder()
{
    mMediaRecorder = new MediaRecorder();
    // Step 1: Unlock and set camera to MediaRecorder
    mCamera.unlock();
    mMediaRecorder.setCamera(mCamera);
    // Step 2: Set sources
    mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
    mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    // Step 3: Set a CamcorderProfile (requires API Level 8 or higher)
    mMediaRecorder.setProfile(CamcorderProfile.get( CamcorderProfile.QUALITY_HIGH));
    // Step 4: Set output file
        outputUri = FileUtil.createOutputFile(Type.POST_QUESTION, Type.MEDIA_VIDEO); // custom methodthat returns Uri
    String path = new File(outputUri.getPath()).getAbsolutePath();
    mMediaRecorder.setOutputFile(path);
    // set video resolution
     mMediaRecorder.setVideoSize(1600, 900); //fail
    // Step 5: Set the preview output
    mMediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());
    // Step 6: Prepare configured MediaRecorder
    try
    {
        mMediaRecorder.prepare();
    }
    catch (IllegalStateException e)
    {
        e.printStackTrace();
        releaseMediaRecorder();
        return false;
    }
    catch (IOException e)
    {
        releaseMediaRecorder();
        return false;
    }
    return true;
}

还有我的日志猫

07-04 19:01:34.656: E/MediaRecorder(5996): start failed: -19
07-04 19:01:34.656: D/AndroidRuntime(5996): Shutting down VM
07-04 19:01:34.656: E/AndroidRuntime(5996): FATAL EXCEPTION: main
07-04 19:01:34.656: E/AndroidRuntime(5996): Process: com.dwaik.question, PID: 5996
07-04 19:01:34.656: E/AndroidRuntime(5996): java.lang.RuntimeException: start failed.
07-04 19:01:34.656: E/AndroidRuntime(5996):     at android.media.MediaRecorder.start(Native Method)
07-04 19:01:34.656: E/AndroidRuntime(5996):     at com.dwaik.question.fragments.CaptureVideoFragment.startRecording(CaptureVideoFragment.java:243)
07-04 19:01:34.656: E/AndroidRuntime(5996):     at com.dwaik.question.fragments.CaptureVideoFragment.onClick(CaptureVideoFragment.java:404)
07-04 19:01:34.656: E/AndroidRuntime(5996):     at android.view.View.performClick(View.java:4832)
07-04 19:01:34.656: E/AndroidRuntime(5996):     at android.view.View$PerformClick.run(View.java:19839)
07-04 19:01:34.656: E/AndroidRuntime(5996):     at android.os.Handler.handleCallback(Handler.java:739)
07-04 19:01:34.656: E/AndroidRuntime(5996):     at android.os.Handler.dispatchMessage(Handler.java:95)
07-04 19:01:34.656: E/AndroidRuntime(5996):     at android.os.Looper.loop(Looper.java:211)
07-04 19:01:34.656: E/AndroidRuntime(5996):     at android.app.ActivityThread.main(ActivityThread.java:5321)
07-04 19:01:34.656: E/AndroidRuntime(5996):     at java.lang.reflect.Method.invoke(Native Method)
07-04 19:01:34.656: E/AndroidRuntime(5996):     at java.lang.reflect.Method.invoke(Method.java:372)
07-04 19:01:34.656: E/AndroidRuntime(5996):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016)
07-04 19:01:34.656: E/AndroidRuntime(5996):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)

【问题讨论】:

  • 您不能只制作视频分辨率并期望它们能够正常工作。您的视频分辨率必须是getSupportedVideoSizes() on Camera.Parameters 返回的值之一。
  • 我有尺寸,但里面没有正方形分辨率,我真的需要录制正方形视频,即 (640 , 640),你知道吗

标签: android android-mediarecorder


【解决方案1】:

CamcorderProfile.QUALITY_HIGHT 已在您的手机中自动设置最高分辨率 (http://developer.android.com/reference/android/media/CamcorderProfile.html)。

因此,手动设置分辨率可能会在 MediaPlayer 参数中产生一些不一致。

另外,您的手机可能没有您尝试设置的分辨率 (1600x900)。您可以通过 Camera.Parameters 中的 getSupportedVideoSizes() 方法获取可用的分辨率。

我的建议:要么使用 CamcorderProfile(我更喜欢),要么手动设置。帧速率限制也可能因手机而异。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2012-07-30
    • 2012-06-30
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多