У меня есть рабочий код. Он был написан и протестирован на Samsung E55-GC110 (Android 4.1.2), и он отлично работает.Ошибка записи на носители для Android на Nexus 5 (Lolipop)
код инициирует экземпляр нового медиа-рекордер и готовит его для записи видео:
- 5000 Кбит битрейта
- 20 кадров в секунду
- ограниченное время
- нет аудио
Когда я бегу приложение на моем Nexus 5 (Android 5.0.1), которое я получаю: start failed: -19 ошибка и пустой файл mp4.
не могу понять, в чем проблема ...
Код:
mediaRecorder = new MediaRecorder();
camera.unlock();
long duration = calculateDuration();
MAX_DURATION = (int)duration/1000;
mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
mediaRecorder.setCamera(camera);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setVideoEncodingBitRate(5000000);
mediaRecorder.setVideoFrameRate(20);
mediaRecorder.setVideoSize(1280,720);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mediaRecorder.setMaxDuration((int)duration); // Set max duration
mediaRecorder.setOnInfoListener(this);
String root = getSDCardPath();
directory = new File(root + "/FileUpload/");
if (!directory.exists())
directory.mkdirs();
long currentTime = System.currentTimeMillis();
String uniqueOutFile = root + "/FileUpload/"
+ timeFormatter.format(currentTime)
+ ".mp4";
File outFile = new File(directory, uniqueOutFile);
if (outFile.exists()) {
outFile.delete();
}
mediaRecorder.setOutputFile(uniqueOutFile);
try {
mediaRecorder.prepare();
} catch (Exception e) {
}
mediaRecorder.start();
стека Ошибка:
02-25 11:04:04.186 22334-22334/com.vp.fileupload.app I/Process﹕ Sending signal. PID: 22334 SIG: 9
02-25 11:04:05.467 22470-22470/com.vp.fileupload.app I/MediaRecorderJNI﹕ prepare: surface=0xaf251400
02-25 11:04:05.557 22470-22470/com.vp.fileupload.app E/MediaRecorder﹕ start failed: -19
02-25 11:04:05.564 22470-22470/com.vp.fileupload.app D/AndroidRuntime﹕ Shutting down VM
02-25 11:04:05.567 22470-22470/com.vp.fileupload.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.vp.fileupload.app, PID: 22470
java.lang.RuntimeException: start failed.
at android.media.MediaRecorder.start(Native Method)
at com.vp.fileupload.app.BackgroundVideoRecorder.cameraStart(BackgroundVideoRecorder.java:178)
at com.vp.fileupload.app.BackgroundVideoRecorder.surfaceCreated(BackgroundVideoRecorder.java:85)
at android.view.SurfaceView.updateWindow(SurfaceView.java:579)
at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:176)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:847)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1956)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)