【问题标题】:Difference between setVideoFrameRate and setCaptureRate / MediaRecorder start failed: -19?setVideoFrameRate 和 setCaptureRate / MediaRecorder 启动失败的区别:-19?
【发布时间】:2015-12-18 23:02:34
【问题描述】:

第一季度。我可以同时使用 setVideoFrameRate 和 setCaptureRate 吗?谁能解释一下两者的区别以及何时使用哪一个?

第二季度。下面的代码流程是否正确? Nexus 7 (2013) Android 4.3 前置摄像头出现 MediaRecorder start failed: -19 错误。使用后置摄像头,相同的代码可以正常工作,没有任何错误。谁能更正以下代码以及为什么它适用于后置摄像头而不适用于前置摄像头?

public void saveVideo(int resX, int resY, int bitRate, int fps, Camera camera){

        File tempFile = null;
        MediaRecorder mediaRecorder = null;
        try{                                    

            tempFile = new File("/storage/emulated/0/Pictures/MyCameraApp/"+"_"+resX+"x"+resY+"_"+bitRate+"_"+fps+".mp4");                  

            mediaRecorder = new MediaRecorder(); 
            camera.unlock();            
            mediaRecorder.setCamera(camera);
            mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);                              
            mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);                       
            mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);                       
            mediaRecorder.setVideoSize(resX, resY);
            mediaRecorder.setVideoFrameRate(fps);   
            //mediaRecorder.setCaptureRate(fps);
            mediaRecorder.setVideoEncodingBitRate(bitRate);         
            mediaRecorder.setOnErrorListener(new MediaRecorder.OnErrorListener()
            {

                @Override
                public void onError(MediaRecorder mr, int what, int extra) {
                    Log.i("MainActivity", "MediaRecorder Error");
                }

            });

            mediaRecorder.setOutputFile(tempFile.toString());
            mediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());
            mediaRecorder.prepare();                
            mediaRecorder.start();

            Thread.sleep(5000); // Recording for 1 second
        }
        catch (InterruptedException interrptedException ) {

        }
        catch ( IOException ioException){

        }
        catch(IllegalStateException illegalState){

        }

        if (mediaRecorder != null) {    

            try {
                mediaRecorder.stop();
            }
            catch (IllegalStateException illegal){

            }
            mediaRecorder.reset();   // clear recorder configuration
            mediaRecorder.release(); // release the recorder object
            mediaRecorder = null; 

        }
            camera.lock();


}

【问题讨论】:

    标签: android mediarecorder android-mediarecorder


    【解决方案1】:

    setCaptureRate 用于延时情况。 setVideoFrameRate 用于普通记录情况。

    如果setCaptureRate 失败,可能您的设备不支持延时模式。

    【讨论】:

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