【问题标题】:Intermittent click when stopping AudioTrack playback停止 AudioTrack 播放时的间歇性点击
【发布时间】:2013-03-27 04:54:43
【问题描述】:

我在流媒体模式下使用 AudioTrack。在我停止播放一小段 wav 文件后,大约有 5-10 次会听到咔嗒声。这让我发疯,因为我无法始终如一地重现它。在调用 AudioTrack.release() 之前,我尝试了对 AudioTrack.flush()、AudioTrack.pause() 和 AudioTrack.stop() 的各种调用组合。我也试过调用 AudioTrack.setStereoVolume() 并传入 AudioTrack.getMinVolume() 的结果。没有任何效果。

一些观察:

  • 似乎只在我播放一小段 wav 文件时才会发生。当我播放超过 3 秒的音频时,我无法重现它。
  • 有时,当我写入音频数据的结尾时,AudioTrack.write() 会返回 -22。我在 Javadoc 中没有看到 -22 的规范。此外,这种情况并不总是与点击一致。
  • 即使我重播 wav 文件的同一部分,点击也无法始终如一地重现。
  • 咔哒声可能来自右侧或左侧扬声器,但不能同时来自两者。

我在运行 Android 4.0.3 的 Acer Iconia A500 上看到了这一点。如有任何建议,我将不胜感激。

【问题讨论】:

    标签: android audio audiotrack


    【解决方案1】:

    流行可能是因为歌曲以非常高的样本结束,然后突然变为 0。这会导致“流行”噪音。尝试在 0.01 秒内淡出歌曲。

    从高采样到 0 音量的流行声音是这样的:https://soundcloud.com/hertzdevil/dirac

    【讨论】:

    • 好电话!当我使用最后四个缓冲区将音量降低到 0.75、0.5、0.25 和 0.01 时,爆裂声大部分都消失了。我仍然偶尔会在 Acer Iconia 上获得流行音乐,但我很确定这不是我的代码。当我一遍又一遍地播放/暂停曲目时,它也会在 YouTube 和 Play Music 中发生。
    • @Boris Burtin 很高兴为您提供帮助!
    • 我说得太早了。逐渐褪色有所帮助,但并没有完全缓解问题。我认为流行音乐也是由音频硬件进入和退出待机模式引起的。我刚刚在我的应用程序中播放了两次声音。第一次没有流行音乐,第二次有。当我查看日志时,我注意到这一行,但仅在第二次播放后: 05-14 15:58:48.780 D/AudioHardware(90): AudioHardware pcm 播放将进入待机状态。关于如何在我的应用程序处于前台时防止硬件进入待机状态的任何建议?
    • @Boris Burtin 现在你有一条错误消息(好吧,在这种情况下是诊断日志,但仍然是一条消息),尝试谷歌搜索它:google.com.au/… 第一个命中是一个看起来像它的 SO例如,可能会解决您的问题。
    • 我想我可以尝试保留一个 AudioTrack 对象池,直到我的应用程序进入后台才释放它们。如果有人有其他建议,我很乐意听到。
    猜你喜欢
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    相关资源
    最近更新 更多