gpt4 book ai didi

android - 如何更快地在安卓上播放声音?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:08:27 25 4
gpt4 key购买 nike

我正在努力为 Android 平台添加一项功能,以便以尽可能绝对最低的延迟从扬声器播放声音。我在 tinyalsa 外部项目中找到了 tinyplay.c 并将其用作模型。如果可能,我想打开 pcm 设备并播放声音并在 10 毫秒内关闭它。

现在,当我调用 pcm_params_getpcm_open 时,有时只需要几毫秒,但有时最多需要 4 秒!我相信如果最近播放过安卓声音,则需要更长的时间。如果我提前打开好然后使用 pcm_write 音频播放速度非常快,只需几毫秒。我怎样才能保证更快的 pcm_open 时间,以便我可以更快地开始游戏?有什么方法可以强制它以某种方式更快地打开吗?我不介意是否必须提前几百毫秒打开它,但 4 秒太长了。

我意识到,当我打开这个时,我正在独占音频驱动程序,这完全没问题。我只是不想永远垄断它。

更新

我已将 AudioFlinger 修改为不待机,这消除了 pcm_open 的缓慢。现在,在调用 pcm_write 时,我看到扬声器发出声音之前有延迟:

01-23 06:01:29.728: PCM write 16384
01-23 06:01:29.742: PCM write 16384
01-23 06:01:29.832: PCM write 16384
01-23 06:01:29.925: PCM write 16384
01-23 06:01:30.017: PCM write 6280

请注意,第一个 pcm_write 只需要 14 毫秒,但其他的需要大约 90 毫秒。从我的测量来看,似乎第一个 pcm_write 正在返回,而扬声器实际上没有发出我的声音。这是为什么?

最佳答案

解决方案有两个:

  1. 这需要平台级别的权限:将平台中的 kDefaultStandbyTimeInNsecs 修改为较低的值。平台源代码还提到了属性 ro.audio.flinger_standbytime_ms
  2. 使用与平台相同的采样率:48Khz

关于android - 如何更快地在安卓上播放声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28205094/

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