Я использую MediaRecorder для записи видео с контейнером MPEG2TS на Samsung Galaxy Note 2. Он инициализирует без каких-либо ошибок и фактически записывает данные в файл (файл увеличивается до нескольких МБ). Однако файл не воспроизводится на любом медиаплеере.Android MediaRecorder создает невоспроизводимый выход MPEG2TS
Вот мой код для инициализации MediaRecorder:
CamcorderProfile profile = null;
if(CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_720P)){
profile = CamcorderProfile.get(CamcorderProfile.QUALITY_720P);
}else if(CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_480P)){
profile = CamcorderProfile.get(CamcorderProfile.QUALITY_480P);
}else{ profile = CamcorderProfile.get(CamcorderProfile.QUALITY_LOW); }
myMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
myMediaRecorder.setOutputFormat(8);
myMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
myMediaRecorder.setVideoFrameRate(profile.videoFrameRate);
myMediaRecorder.setVideoSize(profile.videoFrameWidth, profile.videoFrameHeight);
myMediaRecorder.setVideoEncodingBitRate(profile.videoBitRate);
String f = Environment.getExternalStorageDirectory().toString() + "/video.ts";
myMediaRecorder.setOutputFile(f);
myMediaRecorder.setPreviewDisplay(previewHolder.getSurface());
myMediaRecorder.prepare();
myMediaRecorder.start();
Приведенный выше код работает нормально, когда я установить выходной формат MP4 ("2"), а не в формате MPEG2-TS ("8"), но когда он установлен в 8, он создает неиграбельное (но не пустое) видео!
Что может быть?
Редактировать: здесь sample video записан на устройстве, если кому-то это интересно.
Вы пытались открыть видеофайл с помощью gspot или чего-то подобного? –
@ DanielMošmondor Да, а также с VLC и mplayer. –
Что говорит gspot? непризнанный? Возможно, если вы загрузите его где-нибудь и сделаете его доступным для кого-то с лучшими инструментами для просмотра ... –