gpt4 book ai didi

Android 的 SoundPool 卡顿、滞后,有时根本不播放

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:47:00 28 4
gpt4 key购买 nike

用例

我有 68 个钢琴样本,每个样本大约。 174 kB,Ogg 数据,Vorbis 音频,立体声,s16,44100 Hz,352 kb/s,4 秒。

我需要同时演奏它们的不同组合(音乐术语:和弦/音程),例如1st + 7th, 14th + 22nd

此外:当前“播放”需要一个选项以在 t 毫秒后停止。

我尝试过的

一个明显的解决方案似乎是使用SoundPool。设置 maxStreams = 20 后,我将所有样本 .load() 加载到它。对于每个播放请求,都会创建一个线程(实际上:Scala 的 future)等待给定的 t millis,然后停止所有声音。

似乎有效……通常。

问题

  • SoundPool,当播放 2 个(或更多)声音时同时,有时不会完全同时启动它们,它们的启动略有不同时代当然可以听到。然而,大多数时候,这没问题。

  • 还有一个问题是停止......有时一对“持续”时间更长,但同样,通常它会在我想要的时间结束。

  • 最后,真正奇怪的是:每个 .play() 都是第一个之后的:

    • 关闭(甚至变暗!)显示或
    • 应用启动...

    ...不会发出声音!

问题

Android 是否为我们提供了一个更可靠(就时间一致性而言)的声音池实现供我们使用?

如果我创建 68 个线程,每个线程一个,可能会更好吗?...我不这么认为。

最佳答案

编辑:可能的解决方案(不是很优雅?)

Thiago Rosa writes , 他克服了 SoundPool

的滞后

(...) by playing a muted sound in loop (...)

After a few tests, I noticed that sometimes the “play” function took 8ms to execute and sometimes it executed instantly.

Conclusion, it seems that when there is nothing playing, SoundPool is resetting and when it is going to play again, it takes time to initialize.

但我并不是真的相信。有效率吗?电池呢?

我的测试表明它绝对值得一试。样本现在播放一致,在几百个测试中只有 3-4 个是一点关闭时间。 另外两个问题(根本不播放和不一致的停止时间)现在也消失了!

但是,电池问题仍然悬而未决...

关于Android 的 SoundPool 卡顿、滞后,有时根本不播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17294215/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com