【问题标题】:AVAudioPlayer lag when calling play调用播放时 AVAudioPlayer 滞后
【发布时间】:2011-07-06 02:56:23
【问题描述】:

根据 Apple 指南,我在 viewDidLoad 中设置了一个 AVAudioPlayer 对象,将 prepareToPlay 作为 viewDidLoad 中的最后一行调用(我也在 awakeFromNib 中尝试过)。

当我按下播放按钮时,会出现暂停,因为它似乎正在加载文件,然后播放。

在audioPlayerDidFinishPlaying中,我用不同的声音重新加载播放器,当第二次点击播放时,文件立即播放。

什么会导致玩家在第一次玩时滞后?

谢谢。

【问题讨论】:

    标签: iphone objective-c ios4 avaudioplayer


    【解决方案1】:

    你在播放什么样的声音?警报,更长的时间?如果有警报,我确实这样做了,而且滞后会更好......

    • AudioServicesCreateSystemSoundID创建系统声音
    • AudioServicesPlaySystemSound播放系统声音
    • AudioServicesDisposeSystemSoundID处理系统声音

    ...您只需要为您想要播放的每个声音存储SystemSoundID

    【讨论】:

      【解决方案2】:

      延迟是由于 AVAudioPlayer 正在初始化。请参阅this answer

      【讨论】:

        【解决方案3】:

        音频系统运行在多个异步软件进程(音频单元、操作系统驱动程序等)和硬件系统(DMA、DAC、音频放大器电源等)上,直到某些声音真正出现之前,它们从未真正完全完成初始化一直播放扬声器或耳机。

        这是一种方法:创建一个包含半秒静音的声音文件。在应用程序启动时,当您的应用程序和视图控制器仍在加载时,使用 AVAudioPlayer 播放此静音文件。现在,当您的视图完成加载时,AVAudioPlayer 应该可以更快地播放后续的非静音声音,因为一些音频(静音)已经一直传到扬声器。

        【讨论】:

        • 很抱歉投反对票,但这不是解决方案,这是一种解决方法。
        • @vaibhav 对否决投票机制的使用非常糟糕
        • @AlBeebe :让我换个说法。 “这不是一个解决方案,这是一个糟糕的解决方法,如果音频剪辑少于半秒,它将无法工作”
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-29
        • 1970-01-01
        相关资源
        最近更新 更多