Android Mediarecorder记录的视频持续时间与预期持续时间不同该怎么办?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (47)

我使用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总是超过视频的实际持续时间。

提问于
用户回答回答于

我发现获得真正开始时间的最佳方式(仍然不确定是否足够准确)是找到持续时间,然后从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;

扫码关注云+社区