java - Android 中的 MediaPlayer 延迟工作
问题描述
我正在尝试在非常精确的时刻播放非常短的 wav 文件(每个大约 0.5 秒)。
我已经加载了一个 wav 文件并尝试在它循环播放时播放它:
private val player = MediaPlayer()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val afd = resources.openRawResourceFd(R.raw.sub_kick_36_045)
val fileDescriptor = afd.fileDescriptor
try {
player.setDataSource(
fileDescriptor, afd.startOffset,
afd.length
)
player.isLooping = true
player.prepare()
} catch (ex: IOException) {
Log.d("Activity", ex.message)
}
play.setOnClickListener {
player.start()
}
stop.setOnClickListener {
player.stop()
}
}
声音正在播放,但是在播放循环时我有很大的延迟。
我发现一个应用程序可以非常准确地播放声音,但它使用更复杂的过程来播放文件并且文件本身非常奇特(不是 wav)
https://github.com/tube42/drumon
也许你们可以建议我如何以最小的延迟立即播放声音(0.5 秒 - 5 秒长)。(使用一些java库什么的)
解决方案
你的音频很短,也许你可以试试“SoundPool”。
推荐阅读
- python - 通过 sleep 模拟 django 视图的延迟
- spring-boot - 在本地环境中禁用 jms 侦听器
- r - 如何使用 OSX 命令行更改 R 中可用于数据存储设置的内存?
- c++ - 二维分拣卡算法
- php - 将目标空白添加到返回 $original_url
- twitter-bootstrap - Bootstrap 4如何根据数据属性值过滤列表
- c++11 - Dev-Cpp 5.11 是否支持 C++ 11?
- javascript - 如何在内容可编辑的 div 中编辑确切的元素?
- c++ - CMake check_function_exists 没有
- python - 使用 pip 在哪里放置用于安装的轮文件?