HarmonyOS鸿蒙Next中音频播放的延迟
HarmonyOS鸿蒙Next中音频播放的延迟
今日用 AudioRenderer 实现音频播放,测试从 audioRenderer.write(wavdata, 0, wavdata.length)
写入音频数据(PCM)到扬声器发出声音,大约延迟150ms。如下改变 bufferSizeInBytes
也没有用。
AudioRendererInfo audioRendererInfo = new AudioRendererInfo.Builder()
.audioStreamInfo(audioStreamInfo)
.audioStreamOutputFlag(AudioRendererInfo.AudioStreamOutputFlag.AUDIO_STREAM_OUTPUT_FLAG_DIRECT_PCM)
.bufferSizeInBytes(100)
.isOffload(false)
.build();
用 AudioRenderer.getMinBufferSize(44100, AudioStreamInfo.EncodingFormat.ENCODING_PCM_16BIT, AudioStreamInfo.ChannelMask.CHANNEL_OUT_STEREO)
获得音频缓存,7088。按照以前开发windows的经验,这个缓存应该就是导致音频延迟的原因,设置较小的缓存就可以降低延迟-带来的问题是如果音频数据提供不及时,会导致音频中断、音频线程堵塞。因此windows系统中可以设置多个音频缓存,消解音频数据提供不及时可能产生的堵塞。
7088/2声道/2字节/44100 = 40毫秒,如果系统设置三个缓存,填满就需要120毫秒,与我测试的结果就比较接近。这么大的延迟是不能玩乐器、演奏音乐的。非专业大众玩乐器延迟也得四、五十毫秒以下。
鸿蒙团队,你们能不能在这个问题上提高重视程度啊!真正的、可以实时计算的数字乐器就要面世了,音乐领域就要产生如同数码相机一般的巨大变化。苹果在音乐玩法方面的积累也是基于传统波表技术,在数字乐器时代大家都在一个起跑线上。这可是个新的机会啊!
更多关于HarmonyOS鸿蒙Next中音频播放的延迟的实战教程也可以访问 https://www.itying.com/category-93-b0.html
多見不怪,鴻蒙的bug不止步于此。
更多关于HarmonyOS鸿蒙Next中音频播放的延迟的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
楼主您好,这个问题已经反馈给研发。
欢迎开发小伙伴们进来帮帮楼主
在HarmonyOS鸿蒙Next中,音频播放的延迟主要受到以下几个因素的影响:
-
系统调度:鸿蒙Next采用了微内核架构,系统调度机制对音频播放的实时性有直接影响。系统会根据任务优先级和资源分配情况,确保音频播放任务能够及时得到处理。
-
音频框架:鸿蒙Next的音频框架设计优化了音频数据的处理流程,减少了中间环节的延迟。音频数据从应用层到硬件层的传输路径被缩短,从而降低了整体延迟。
-
硬件性能:设备的硬件性能,如CPU、GPU和音频编解码器的处理能力,也会影响音频播放的延迟。高性能硬件能够更快地处理音频数据,减少延迟。
-
网络环境:对于流媒体音频播放,网络环境的稳定性和带宽也会影响延迟。鸿蒙Next在网络传输层进行了优化,以减少网络抖动和延迟。
-
应用优化:应用层的代码实现和优化也会影响音频播放的延迟。鸿蒙Next提供了丰富的API和工具,帮助开发者优化音频播放的实现,减少不必要的延迟。
总体而言,鸿蒙Next在系统架构、音频框架和硬件支持等方面进行了全面优化,以降低音频播放的延迟,提供更流畅的音频体验。
在HarmonyOS鸿蒙Next中,音频播放的延迟主要受硬件性能、系统调度和音频处理流程影响。系统通过优化音频驱动和调度策略,尽可能降低延迟,通常在10ms到50ms之间,具体取决于设备性能和音频应用的设计。开发者可通过使用低延迟音频API和优化音频处理逻辑,进一步减少延迟,提升用户体验。