我正在尝试在我的应用程序中记录视频,在我的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;
答案 0 :(得分:1)
为什么不使用
CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
我无法找到此配置文件的确切设置,但我很确定outputformat是mpeg4,这就是你想要的...... 我记得大多数媒体记录器问题都与错误的设置参数有关。尝试使用此个人资料。它保证了设备的最高可用性和工作设置。您可以在http://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_HIGH
了解更多有关此内容和其他可能更符合您需求的信息