【问题标题】:Streaming with an AVAudioplayer使用 AVAudioplayer 进行流式传输
【发布时间】:2011-03-15 13:47:55
【问题描述】:

为了加载声音文件,我的应用程序中有以下代码:

- (id) init:(NSString*)a_filename ext:(NSString*)a_ext 
{
    ...

    NSString *t_soundFilePath = [CFileLoader getPathForResource:filename WithExtension:ext];
    NSURL *t_fileURL = [[[NSURL alloc] initFileURLWithPath: t_soundFilePath] autorelease];

    player = [[AVAudioPlayer alloc] initWithContentsOfURL: t_fileURL error: nil];
    [player prepareToPlay];
    ...

    }

我加载的所有声音都在我的包中,所以我想知道方法“initwithcontentsofurl”是流式传输声音文件还是缓存所有文件。

我的应用中有很多精灵,所以我想尽量减少用于声音的内存空间。

感谢您的帮助

【问题讨论】:

    标签: iphone streaming avaudioplayer


    【解决方案1】:

    我使用AVPlayer(不是 AVAudioPlayer)流式传输背景音频。

    【讨论】:

      【解决方案2】:

      使用 AVAudioPlayer 播放的声音从存储中实时流式传输。缺点是您偶尔会在启动时注意到一个小的延迟。如果您使用 OpenAL,声音会完全加载到内存中。

      ObjectAL 文档中对这类事情进行了很好的讨论 - 一个旨在简化 iPhone 上播放声音和效果的库。

      【讨论】:

      • 太棒了!谢谢。我已经在 OpenAL 中实现了一个声音流媒体。不幸的是,自 IOS 4.3 以来出现了错误,我必须更改 API。
      • ios 4.3 上的 OpenAL 错误在此处详细介绍:devforums.apple.com/message/396043#396043
      【解决方案3】:

      如果你想在你的应用中串流音频,你可以使用下面的播放器而不是使用 AVAudioPlayer

      https://github.com/mattgallagher/AudioStreamer

      对于这个播放器,您不需要将声音文件放在您的捆绑包中,您可以将它们放在服务器上并使用 url 流式传输音频。

      希望对你有帮助。

      【讨论】:

        【解决方案4】:

        " AVAudioPlayer 类不支持流式音频 基于 HTTP URL 的。与 initWithContentsOfURL: 一起使用的 URL 必须是 文件 URL (file://)。即本地路径”。

        https://developer.apple.com/library/ios/qa/qa1634/_index.html

        但是您可以解决 - 例如异步写入本地文件,并使用此文件 URL 初始化 AVAudioPlayer,它会起作用。

        【讨论】:

        • 你可以做 NSData *data = [NSData dataWithContentsOfURL:soundUrl]; AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithData:data error:nil];基本上它将数据流式传输到内存中,而 AVAudioPlayer 将从内存中的数据播放
        • @GiaDang 是的,但是您的线程将挂起,直到通过 dataWithContentsOfURL: 方法完全下载音频文件,而不是在一两秒内播放并在播放时缓冲继续,就像 AVPlayer 一样。因此,这不仅需要很长时间,而且如果您不将此代码放在后台线程上,应用程序将在歌曲下载完成之前完全冻结。总而言之,我认为这不是最好的解决方案。
        猜你喜欢
        • 2014-05-09
        • 2011-12-04
        • 1970-01-01
        • 1970-01-01
        • 2017-05-26
        • 2011-10-16
        • 1970-01-01
        • 2017-10-16
        • 2012-03-22
        相关资源
        最近更新 更多