我正在开发一个允许用户对着设备说话的 Android 应用程序。然后我想保存它,倒带一部分以再次播放,也许快进到音频的另一部分,暂停,播放等等。就像基本的录音机一样。
是否有任何内置的 API 或方法或代码允许这样做?如果没有,那么我从这里去哪里?
如有任何帮助,我们将不胜感激。
最佳答案
使用 MediaPlayer 您可以在流中寻找不同的位置,但这不同于播放快进(或快退),在 DVR 中也称为“特技播放”。
但是,快进可能可以使用 seekTo 实现像这样:
- 设置一个周期性计时器(即 postDelayed 或 scheduleAtFixedRate ),每 100 毫秒一次。
- 在计时器的 Runnable 中,调用 seekTo 并使用一个代表您想要的播放速率的因子的值。
- 因此,如果您想要 2 倍快进,那么在每 100 毫秒周期之后,您将寻求 curr_pos + 100 毫秒。这意味着 100 毫秒已经过去,但现在您处于 prev_pos + 200 毫秒。
- 执行 4x 意味着在每 100 毫秒的周期之后,您寻求 curr_pos + 300 毫秒。
.
- 我刚刚意识到 seekTo 可能会寻找最近的引用或 I 帧。因此调用 seekTo(curr_pos + 100) 可能无法到达您想要的精确位置。
我可能需要在我正在使用的视频播放器中实现 FF。如果我让它工作,我会在这里更新我的答案。
关于java - Android 中是否有播放、暂停、倒带、快进方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7354431/