我使用android Mediarecorder录制了视频。
(主要问题:我需要知道视频的确切开始时间[系统时间]和结束时间[系统时间],并且[结束时间-开始时间]必须与实际视频的时长相匹配)
MediaRecorder.start
startTime = System.currentTimeMillis()
then on stop
MediaRecorder.stop
endTime = System.currentTimeMillis()
我希望影片有这个时长
但是,那
我的怀疑是MediaRecorder.start很慢,花了一些时间才真正开始将帧写入视频。
因此,现在,当MediaRecorder开始将第一帧写入视频时,是否还能得到通知?还是有什么办法可以确定实际开始录制视频的确切系统开始时间。
感谢您的阅读,并感谢任何评论,意见或建议。 ^^
最佳答案
我发现获得真实开始时间的最佳方法(但仍然不确定它是否足够准确)是找到持续时间,然后从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;