Android Media Recorder не записывает длинные видео в Google Glass
Я написал камеру с открытым исходным кодом для стекла Google, но некоторые из людей, которые ее использовали, сообщили, что записанное видео не сохраняется должным образом для длинных видеороликов.
Я не мог найти информацию об этом ограничении в документации по Android
Итак, выяснив, что для видео больше 26 minutes
, видеофайл был сохранен в стекле, а размер его был около 2.7 GB
, но его продолжительность была 0:00
. И он не может воспроизводиться с помощью любого видеопроигрывателя.
Так что мне интересно, почему? Почему видео правильно записано для duration < 26 minutes
и перепутано для более длинных видеороликов.
Код для запуска видео Запись
/**
* Initialize video recorder to record video
*/
private void initRecorder() {
try {
File dir = new File(Environment.getExternalStorageDirectory()
+ File.separator + Environment.DIRECTORY_PICTURES
+ File.separator + "My Videos");
if (!dir.exists()) {
dir.mkdirs();
}
videofile = new File(dir, "video.mp4");
recorder.setCamera(mCamera);
// Step 2: Set sources
recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
// Step 3: Set a CamcorderProfile (requires API Level 8 or higher)
recorder.setProfile(CamcorderProfile
.get(CamcorderProfile.QUALITY_HIGH));
// Step 4: Set output file
recorder.setOutputFile(videofile.getAbsolutePath());
// Step 5: Set the preview output
recorder.setPreviewDisplay(mPreview.getHolder().getSurface());
// Step 6: Prepare configured MediaRecorder
recorder.setMaxDuration(3600* 1000);
recorder.setMaxFileSize(-1);
recorder.setOnErrorListener(new OnErrorListener() {
@Override
public void onError(MediaRecorder mr, int what, int extra) {
Log.e("Error Recording", what+" Extra "+extra);
}
});
recorder.setOnInfoListener(new OnInfoListener() {
@Override
public void onInfo(MediaRecorder mr, int what, int extra) {
if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {
endVideoRecording();
}
}
});
recorder.prepare();
recorder.start();
mOverlay.setMode(Mode.RECORDING);
} catch (Exception e) {
if (e != null && e.getMessage() != null)
Log.e("Error Starting CuXtom Camera for video recording",
e.getMessage());
}
}
Ответы
Ответ 1
Согласно моим исследованиям, похоже, что стекло Google способно записывать видео только в размере 2GB
, поэтому, если вы хотите записать любое видео, размер которого может быть больше, чем тогда, я бы посоветовал вам разделить видео на более мелкие части а затем в конце слить его с помощью mp4 parser