Android Mediarecorderlogging的video持续时间与预期持续时间不同

我使用Android Mediarecorder录制了一个video。

(主要问题:我需要知道video的确切开始时间[系统时间]和结束时间[系统时间],[结束时间 – 开始时间]必须与实际video的持续时间相匹配)

MediaRecorder.start startTime = System.currentTimeMillis() then on stop MediaRecorder.stop endTime = System.currentTimeMillis() 

我期待video有这个持续时间

expected_duration =(endTime – startTime)

但是,那

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

我的怀疑是MediaRecorder.start速度很慢,实际上开始将帧写入video需要一些时间。

那么现在是否有MediaRecorder开始将第一帧写入video时得到通知? 或者有没有什么办法可以找出video实际开始录制时的准确系统启动时间。

感谢阅读,并感谢任何意见,意见或build议。 ^^

  • 我怎样才能在Android中暂停录音?
  • Android:如何初始化没有有效的video预览的MediaRecorder?
  • 我停止录制时MediaRecorder失败
  • Android无法用前置摄像头录制video,MediaRecorder启动失败:-19
  • 如何知道MediaRecorder何时完成将数据写入文件
  • MediaRecorder.stop()挂在Android 4.0(ICS)
  • 使用与生成的video文件不同的预览大小录制video
  • 来电录音/处理服务! - Android
  • 我发现获得真正开始时间的最佳方式(仍然不确定是否足够准确)是find持续时间,然后从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;