我使用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;