我的应用需要录制最长 8 秒的视频。这已经通过 MediaRecorder.setMaxDuration(long milliseconds) 实现。 该应用还需要顶部的进度条和带有剩余时间倒计时的标签。
这里的问题是 UI 和 MediaRecorder 进度之间存在偏移,这会导致用户混淆。例如,用户认为他/她录制了一些东西,因为 UI 中的进度是这么说的,但媒体录制器提前一秒切断了视频。
挑战在于在录音机实际开始录音的同时启动进度条和计数器。 我已经尝试在 MediaRecorder.start() 之后启动计时器,在第一次修改创建的文件时的回调中,但我还没有找到以正确方式实现此目的的方法。我们尝试为这些值设置硬编码偏移量,但当然它对每个设备的工作方式都不一样。
我希望有来自 MediaRecorder 的回调通知它实际上已经开始录制视频,或者可能是当前长度。
问题清楚了吗?以前有人解决过这个问题吗?
最佳答案
MediaRecorder 已知存在提前切断音频的问题。我用一个按钮实现了一个录音机——点击按钮停止录音机实际上会产生一个音频文件,最后一秒被切断。 不确定您的 UI 偏移量是否是一个单独的问题,但我会尝试在用户尝试结束 MediaRecorder 后将其延长半秒。您可以通过将最长时间更改为 8.5 秒来执行此操作,也可以只使用以下代码行:
android.os.SystemClock.sleep(500);
关于Android - MediaRecorder 的回调开始录制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25649873/