我想将手机中的数据与录制视频的经过时间同步。我想获取有关录制视频所用时间的信息(以毫秒为单位)。我尝试通过以下方式解决它:
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.start() 之后立即开始,但真正的视频录制有不同的延迟(取决于设备,...)。当 MediaRecorder 真正开始录制时,我需要“一些”回调或捕获事件。
Information about stop recording is not need it, because i can check real video duration via:
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来解决。但如何呢?
[最低 SDK:API21]
谢谢。