android开发分享Android上的低延迟audio播放

我目前正试图最小化一个简单的应用程序的audio延迟:

我在PC上有一个video,我通过RTP将video的audio传输到移动客户端。 使用非常相似的缓冲algorithm,我可以在iOS上实现90毫秒的延迟,但在Android上可达到±180毫秒。

我猜测这种差异源于Android上众所周知的延迟问题 。

然而,在阅读了一下之后, 我发现了这篇文章 ,里面写道:

我有两个问题,直接关系到那两个陈述:

另外还有一点需要注意的是,在有人提到OpenSL ES之前, 这篇文章明确表示,不应该期望延迟的改进。

“由于OpenSL ES是一个本地C API,调用OpenSL ES的非Dalvik应用程序线程没有Dalvik相关的开销,例如垃圾收集暂停,但除此之外,使用OpenSL ES没有额外的性能优势。特别是使用OpenSL ES不会导致比平台通常提供的更低的audio延迟,更高的调度优先级等。

    对于Android 4.2.2以来的最低延迟,您应该执行以下操作,从最不明显的顺序排列:

    低延迟audio不再是Android的一项新function,但它仍然需要在硬件,驱动程序,内核和框架上进行特定于设备的更改。 这意味着不同设备的延迟可能会有很大的变化,并且考虑到Android手机销售的价格有多less,可能总会有差异。 查找FEATURE_AUDIO_PRO或FEATURE_AUDIO_LOW_LATENCY,以确定符合您应用所需延迟标准的设备。

    使用OpenSL ES时,您应该满足以下要求,以在Jellybean和更高版本的Android上获得低延迟输出:

    在可能的情况下, SoundPool类也将尝试在内部使用快速AudioTrack (除了BufferQueue部分外,与上述相同的标准也适用)。

    从您的链接点1:

    “低延迟audio

    Android 4.2改进了对低延迟audio播放的支持,从使用OpenSL ES,Soundpool和audio发生器API的Android 4.1发行版对audio输出延迟的改进开始。 这些改进取决于硬件支持 – 提供这些低延迟audiofunction的设备可以通过硬件function常数向应用宣传其支持。“

    您完整的引用forms:

    “性能

    由于OpenSL ES是本地C API,调用OpenSL ES的非Dalvik应用程序线程没有Dalvik相关的开销,例如垃圾收集暂停。 但是,除此之外,使用OpenSL ES没有额外的性能优势。 特别是,使用OpenSL ES不会导致比平台通常提供的更低的audio延迟,更高的调度优先级等。 另一方面,随着Android平台和特定设备实现的不断发展,OpenSL ES应用程序可望从未来的系统性能改善中受益。“

    所以,api与驱动程序交stream,然后hw是OpenSl(与Opengl用graphics相同的方式)。 虽然早期版本的Android在驱动程序和/或hw中的devise都很糟糕。 这些问题已经在4.1和4.2版本中得到了解决和纠正,所以如果高清有这个function,那么使用OpenSL就会获得较低的延迟。

    同样,从puredata图书馆网站的这个注释中可以看出,图书馆使用OpenSL本身来实现低延迟:

    对兼容设备的低延迟支持最新版本的Android版Pd(截至2012年12月28日)支持低延迟audio,以支持兼容的Android设备。 更新副本时,请确保从GitHub中获取最新版本的pd-for-android和libpd子模块。

    在撰写本文时,Galaxy Nexus,Nexus 4和Nexus 10为audio输出提供低延迟音轨。 为了达到低延迟的轨道,应用程序必须使用OpenSL,并且必须以正确的采样率和缓冲区大小运行。 这些参数取决于设备(Galaxy Nexus和Nexus 10工作在44100Hz,而Nexus 4工作在48000Hz;每个设备的缓冲区大小不同)。

    就像它的习惯一样,Pd for Android尽可能地复杂了所有这些复杂性,提供了新的低延迟function,同时保持向后兼容早期版本的Android。 在此基础上,Android的Pd的audio组件将使用Android 2.3及更高版本的OpenSL,而在Android 2.2及更早版本的Java中则会回落到原来的AudioTrack / AudioRecord API。

    audio等待时间和缓冲区大小的另一个数据库使用:

    源代码:

    您对Android的10毫秒问题(即Android上的低延迟audio)更感兴趣。 我们在Superpowered创build了Androidaudiopath延迟解释器。 请看这里:

    测量sampleRate和bufferSize的应用程序: https : //code.google.com/p/high-performance-audio/source/checkout和;

    以上就是android开发分享Android上的低延迟audio播放相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/addevelopment/512601.html

      (1)
      上一篇 2020年11月27日
      下一篇 2020年11月27日

      精彩推荐