Android Mediarecorderlogging的video持续时间与预期持续时间不同

我使用Android Mediarecorder录制了一个video。

(主要问题:我需要知道video的确切开始时间[系统时间]和结束时间[系统时间],[结束时间 – 开始时间]必须与实际video的持续时间相匹配)

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

我期待video有这个持续时间

expected_duration =(endTime – startTime)

但是,那

expected_duration总是超过video的实际持续时间。

我的怀疑是MediaRecorder.start速度很慢,实际上开始将帧写入video需要一些时间。

那么现在是否有MediaRecorder开始将第一帧写入video时得到通知? 或者有没有什么办法可以找出video实际开始录制时的准确系统启动时间。

感谢阅读,并感谢任何意见,意见或build议。 ^^

Solutions Collecting From Web of "Android Mediarecorderlogging的video持续时间与预期持续时间不同"

我发现获得真正开始时间的最佳方式(仍然不确定是否足够准确)是find持续时间,然后从endTime中减去它,如下所示:

 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;