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



我使用Android Mediarecorder录制了一个视频。

(主要问题:我需要知道视频的确切启动时间[系统时间]和末端时间[系统时间]和[endtime -starttime]必须匹配实际视频的持续时间)

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

我希望该视频有此持续时间

enducent_duration =(endtime -starttime)

但是,

预期_duration始终大于 视频。

我的怀疑是Mediarecorder.start很慢,花了一段时间才真正开始将帧写入视频。

所以现在,当中国人开始将第一帧写入视频时,是否有任何通知?还是有什么办法可以找出视频实际录制时的确切系统启动时间。

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

我发现真正开始时间的最佳方法(但我仍然不确定它是否足够准确)是找到持续时间,然后从最终时间中减去它:

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;

最新更新