Android Mediarecorder录制的视频持续时间与预期持续时间不同

Android Mediarecorder录制的视频持续时间与预期持续时间不同,android,mediarecorder,android-mediarecorder,Android,Mediarecorder,Android Mediarecorder,我用android Mediarecorder录制了一段视频 (主要问题:我需要知道视频的确切开始时间[系统时间]和结束时间[系统时间],并且[结束时间-开始时间]必须与实际视频的持续时间匹配) 我希望视频有这样的持续时间 预期持续时间=(结束时间-开始时间) 但是, 预期的_持续时间始终大于项目的实际持续时间 录像带 我的怀疑是MediaRecorder.start速度很慢,在它真正开始将帧写入视频之前需要一些时间 那么现在,当MediaRecorder开始将第一帧写入视频时,是否需要得到通知

我用android Mediarecorder录制了一段视频

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

我希望视频有这样的持续时间

预期持续时间=(结束时间-开始时间)

但是,

预期的_持续时间始终大于项目的实际持续时间 录像带

我的怀疑是MediaRecorder.start速度很慢,在它真正开始将帧写入视频之前需要一些时间

那么现在,当MediaRecorder开始将第一帧写入视频时,是否需要得到通知?或者,有没有什么方法可以让我弄清楚视频实际开始录制的确切系统开始时间


感谢您的阅读,并感谢您的评论、意见或建议^^

我发现获得实际开始时间的最佳方法(但我仍然不确定它是否足够准确)是找到持续时间,然后从结束时间中减去它,如下所示:

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;

我遇到了同样的问题,你有解决方案吗?我有一个类似的问题:预期的持续时间比视频持续时间多多少?
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;