Android Mediarecorder записывает длительность видео, отличную от ожидаемой продолжительности
Я записал видео с помощью android Mediarecorder.
(Основная проблема: мне нужно знать точное время начала [System time] и endTime [Системное время] видео, а [endTime - startTime] должно соответствовать длительности фактического видео)
MediaRecorder.start
startTime = System.currentTimeMillis()
then on stop
MediaRecorder.stop
endTime = System.currentTimeMillis()
Я ожидаю, что видео будет иметь эту продолжительность
expected_duration = (endTime - startTime)
Однако
expected_duration всегда больше, чем фактическая продолжительность видео.
Мое подозрение в том, что MediaRecorder.start работает медленно, потребовалось некоторое время, прежде чем он начал писать кадры в видео.
Итак, есть ли когда-нибудь уведомление, когда MediaRecorder начал записывать первый кадр в видео? или я могу найти точный System startTime, когда видео действительно начало запись.
спасибо за чтение и оцените любые комментарии, мнения или предложения. ^^
Ответы
Ответ 1
Лучший способ найти реальное время начала (и, тем не менее, я не уверен, что он достаточно точен) - найти продолжительность, а затем вычесть ее из конечного времени следующим образом:
MediaRecorder.stop
endTime = System.currentTimeMillis()
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
//use one of overloaded setDataSource() functions to set your data source
retriever.setDataSource(this, Uri.fromFile(file));
String time =
retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
long movieDurationInMillis = Long.parseLong(time );
long startCaptureTimeMillis = endTime - movieDurationInMillis;