android mediarecorder android-mediarecorder

Android Mediarecorder grabó la duración del video diferente de la duración esperada



android-mediarecorder (1)

Grabé un video usando Android Mediarecorder.

(Problema principal: necesito saber la hora de inicio exacta [Hora del sistema] y la hora del sistema [hora del sistema] del video y la [hora final - hora de inicio] debe coincidir con la duración del video real)

MediaRecorder.start startTime = System.currentTimeMillis() then on stop MediaRecorder.stop endTime = System.currentTimeMillis()

Estoy esperando que el video tenga esta duración.

expected_duration = (endTime - startTime)

sin embargo, el

expected_duration siempre es más que la duración real del video.

Mi sospecha es que MediaRecorder.start es lento, tomó algo de tiempo hasta que realmente comenzó a escribir los cuadros en un video.

Entonces, ¿hay alguna forma de recibir una notificación cuando el MediaRecorder comenzó a escribir el primer fotograma en un video? o hay alguna manera de que pueda averiguar exactamente el tiempo de inicio del sistema cuando el video realmente comenzó a grabar.

Gracias por leer, y agradecemos cualquier comentario, opinión o sugerencia. ^^


La mejor manera que encontré para obtener una hora de inicio real (y aún no estoy seguro de que sea lo suficientemente precisa) es encontrar la duración y luego restarla de la hora final como la siguiente:

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;