Запись видео на Android-устройстве Camera API2Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Запись видео на Android-устройстве Camera API2

Сообщение Anonymous »

Ниже приведен простой фрагмент кода. У меня есть планшет Android и одна внешняя USB-камера. Цель — записать видео со всех трёх камер (по одной, в основном с внешнего USB). Код работает только при предварительном просмотре, но при сохранении происходит сбой на передней камере и USB-камере. Непонятно, что происходит, и в logcat не предоставляется никакой информации.

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»