Неправильная продолжительность от MediaRecorder на OnePlus 5 и нескольких моделях Samsung - PullRequest
0 голосов
/ 05 декабря 2018

Как только я прекращаю запись с MediaRecorder, он не сохраняет правильную продолжительность на нескольких моделях (OnePlus 5, несколько моделей Samsung).Попытался также воспроизвести записанный файл с внешнего плеера.Панель поиска показывает общую продолжительность в 5 часов + для видео 10 секунд.Вот как я это настроил:

File outputDir = mContext.getCacheDir();
try {
    mTempOutputFile = File.createTempFile("temp_mov", "mp4", outputDir);
} catch (IOException e) {}

mMediaRecorder = new MediaRecorder();
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setOutputFile(mTempOutputFile.getPath());
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mMediaRecorder.setVideoEncodingBitRate(VIDEO_BIT_RATE);
mMediaRecorder.setVideoSize(VIDEO_WIDTH, VIDEO_HEIGHT);
mMediaRecorder.setVideoFrameRate(30);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mMediaRecorder.setAudioEncodingBitRate(44800);
mMediaRecorder.setOrientationHint(0);
try {
    mMediaRecorder.prepare();
} catch (IOException e) {}

Мне нужно, чтобы продолжительность была правильной, так как она используется в дальнейшем для обрезки и т. Д. Mp4Parser.Как я могу получить его, чтобы сохранить правильную продолжительность?Могу ли я программно ввести записанную продолжительность в метаданные, которые я могу рассчитать как альтернативу?

Я уже ссылался на ссылки здесь и здесь , но это не такпомогите мне намного больше, чем мне нужно, чтобы сделать больше, чем просто получить длительность, еще больше с mp4parser.

...