我用android Mediarecorder录制了一段视频。
(主要问题:我需要知道视频的确切startTimeSystem时间和endTimeSystem时间,endTime - startTime必须与实际视频的时长匹配)
MediaRecorder.start
startTime = System.currentTimeMillis()
then on stop
MediaRecorder.stop
endTime = System.currentTimeMillis()
我期待这段视频的持续时间
expected_duration = (endTime - startTime)
但是,
expected_duration总是大于视频的实际时长。
我怀疑MediaRecorder.start速度很慢,在它真正开始将帧写入视频之前,它花了一段时间。
那么,当MediaRecorder开始将第一帧写入视频时,有没有什么方法可以得到通知呢?或者有没有什么方法可以让我找出视频真正开始录制的确切系统startTime。
感谢您的阅读,并感谢您的评论、意见或建议。^^
发布于 2017-05-11 18:06:16
我找到的获得实际开始时间的最好方法(我仍然不确定它是否足够准确)是找到持续时间,然后像这样从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;
https://stackoverflow.com/questions/21586295
复制相似问题