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

时间:2014-02-05 19:08:43

标签: android mediarecorder android-mediarecorder

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

(主要问题:我需要知道视频的确切startTime [系统时间]和endTime [系统时间],[endTime - startTime]必须与实际视频的持续时间相匹配)

MediaRecorder.start
startTime = System.currentTimeMillis()

then on stop

MediaRecorder.stop
endTime = System.currentTimeMillis()

我期待视频有这段时间

  

expected_duration =(endTime - startTime)

然而,

  

expected_duration总是超过实际的持续时间   视频。

我怀疑MediaRecorder.start很慢,它实际上开始将帧写入视频需要一些时间。

现在,无论如何,当MediaRecorder开始将第一帧写入视频时,是否会收到通知?或者有什么方法可以找出视频实际开始录制时的确切系统开始时间。

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

1 个答案:

答案 0 :(得分:5)

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

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;
相关问题