【发布时间】: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