Alsa 遇上Android的音频延迟问题

Alsa 遇上Android的音频延迟问题

Alsa开始是被Android使用的,后来觉得其复杂,就没有使用了,改用tinyalsa。再后来Android暴露出一个问题,音频相关延迟比较大,iOS可以做到10ms,而Android手机平均还要150ms。Android上实现的OpenSL ES也只是比Java API快一点,并不理想。后来Android添加了FastMixer和AUDIO_OUT_PUT_FLAG_FAST等,来解决这个问题。

在Google给自己的亲儿子优化的比较好,我在Nexus 5上测试使用OpenSL ES可以达到45ms。这个算是比较理想了。Android音频延迟测试方法

说了一堆别的,说回Alsa,可能过3年后,所有的Android设备都达到像iOS一样10ms,但是目前来讲很多盒子还是达不到的。下游厂家好像没有动力去和Google一样添加FastPath的支持,判断支持不支持,需要用到这两个特性:

android.hardware.audio.low_latency 指示 45 毫秒或更短的持续输出延迟时间。
android.hardware.audio.pro 指示 20 毫秒或更短的持续往返延迟时间。

来源:https://developer.android.com/ndk/guides/audio/audio-latency.html
目前很多设备还不支持这两个特性呢。在目前情况下,要解决延迟问题帮助厂家实现FastPath;要么使用Alsa来代替MediaService。播放有Aplay,混音有dmix。关于dmix有几个不错的文档在嵌入式平台中利用alsa dmix实现混音以及alsa调试成功[转]

但是会有一种情况是,有些内核不支持使用dmix这个plugin进行混音,原因是dmix需要内核的声卡驱动支持mmap,但是有些平台的音频驱动并不支持mmap。那么不改内核的情况下只能改用别的混音方式了,别的混音有:PulseAudioJack等等。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁保康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值