我希望能够将手机中的数据与录制视频的经过时间同步。我想获取有关录制视频已经经过时间的信息(以毫秒为单位)。我尝试通过以下方式解决:
1. 运行自己的计时器。
伪代码:
1. 运行自己的计时器。
伪代码:
mMediaRecorder.start(); //start recording
startTime = System.currentTimeMillis(); //save start recording time
timerHandler.postDelayed(timerRunnable, 0); //for save elapsed time and timerHandler.postDelayed(this, 20); for next 20ms
但是 MediaRecorder 存在问题,因为实际录制不会立即开始,而是有不同的延迟时间(取决于设备等)。我需要“一些”回调或捕获事件来确保 MediaRecorder 真正开始录制。
不需要关注停止录制的信息,因为我可以通过以下方式检查实际视频持续时间:
FileInputStream stream = new FileInputStream(storage.getVideoFile());
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(stream.getFD());
String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
我尝试在录制过程中通过MediaMetadataRetriever获取实际持续时间,但仅适用于已关闭的视频文件。
我尝试通过FileObserver和onEvent进行检测,但这不是很准确。
如果可能的话,我希望通过Android SDK解决。但是怎么做?
[min SDK: API21]
谢谢。