Android Mediarecorder录制的video时长与预期持续时间不同

我用android Mediarecorder录制了一个video。

(主要问题:我需要知道video的确切startTime [系统时间]和endTime [系统时间],[endTime – startTime]必须与实际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实际开始录制时的确切系统开始时间。

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

我发现获得真正开始时间的最佳方法(我仍然不确定它是否足够准确)是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;