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;