Код: Выделить всё
private void startRecordingW() {
Toast.makeText(context, "Recording Started !", Toast.LENGTH_SHORT).show();
try {
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setVideoFrameRate(30);
outputFile = new File(VIDEO_FOLDER, "video_chunk_" + System.currentTimeMillis() + ".mp4");
mediaRecorder.setOutputFile(outputFile.getAbsolutePath());
SurfaceTexture texture = textureView.getSurfaceTexture();
if (texture == null) {
throw new IllegalStateException("SurfaceTexture is not ready");
}
Surface recorderSurface = new Surface(texture);
mediaRecorder.setPreviewDisplay(recorderSurface);
mediaRecorder.setVideoSize(previewSize.getWidth(), previewSize.getHeight());
// mediaRecorder.setCaptureRate(30);
mediaRecorder.prepare();
try {
mediaRecorder.start();
} catch (IllegalStateException ex) {
Log.d(TAG, "startRecording: " + ex.getMessage());
}
isRecording = true;
new Thread(() -> {
try {
//Thread.sleep(300000); // 5 minutes
Thread.sleep(30000);
} catch (InterruptedException e) {
e.printStackTrace();
}
stopRecording();
startRecording(); // Start a new recording chunk
}).start();
} catch (IllegalStateException ex) {
ex.printStackTrace();
stopRecording();
} catch (IllegalArgumentException ex) {
ex.printStackTrace();
stopRecording();
} catch (UnknownError ex) {
ex.printStackTrace();
stopRecording();
} catch (IOException e) {
e.printStackTrace();
stopRecording();
}
}
https://github.com/kishorpise/camtest
Я ожидаю, что он должен генерировать файлы каждые 30 секунд (или в любое время). с поверхности вместе с отметкой времени. Похоже, у MediaRecorder возникли проблемы.
Подробнее здесь: https://stackoverflow.com/questions/792 ... amera-api2
Мобильная версия