【问题标题】:iPhone progressive download audio player [closed]iPhone渐进式下载音频播放器[关闭]
【发布时间】:2010-03-29 07:49:03
【问题描述】:

我正在尝试使用 http 和固定大小的 mp3 文件为 iPhone 实现渐进式下载音频播放器。

我找到了 AudioStreamer 项目,但它似乎非常复杂,并且最适合无限流。

我需要能够找出音频文件的总长度,并且我还需要能够在文件中查找。我发现了与 AudioStreamer 的黑客偏差,但它似乎对我来说效果不佳。 http://www.saygoodnight.com/?p=14

我想知道是否有更简单的方法可以实现我的目标,或者是否有一些更好的工作示例?我找到了 bass 库,但没有太多关于它的文档。

/Br Johannes

【问题讨论】:

  • 我正在为这个问题添加一个赏金,因为我有同样的问题 - 希望在我下载/播放内容时保存内容。

标签: iphone audio-player progressive-download


【解决方案1】:

不幸的是,在 iPhone 上播放音频流并不简单。这是让我开始的文章: Streaming and playing an MP3 stream

这是一个 OSX 项目,但其中大部分也适用于 iPhone。至于获得它的完整播放时间,您可能必须根据 http 标头的 content-length 属性来计算它,前提是它是一个 CBR 文件。否则,我想您必须在确定之前下载整个文件。

【讨论】:

  • +1 用于链接到 cocoawithlove,我还有一个应用程序,我只能使用此资源运行。
【解决方案2】:

如果您只需要播放 MP3 文件,为什么要编写自己的下载器/播放器? iOS 内置了几个选项,每个选项都支持渐进式下载和 MP3 播放:

  • MPMoviePlayerController
  • AVPlayer
  • Safari <audio>播放器

我个人对MPMoviePlayerControllerAVPlayer 的渐进式下载功能有疑问,所以也许这也是您的问题。我发现这些播放器通过多次请求 mp3 来尝试变得聪明,检查服务器是否支持通过 http 范围偏移进行渐进式下载。但是当服务器不支持范围偏移时,文件会被多次下载,占用带宽(!)。

在我最新的项目中,我嵌入了一个嵌入了 html <audio> 标记的 UIWebView。 Safari 播放器似乎比 AVPlayer 和 MPMoviePlayerController 表现得更好,但它也有自己的警告。一方面,让自动播放发挥作用是一个 PITA。

【讨论】:

    【解决方案3】:

    在 iPhone Cool Projects 中有一个关于流式音频的非常好的章节。 http://apress.com/book/view/9781430223573 它展示了一种比 AudioStreamer 更简单的方法(使用 NSURLConnection 而不是 CFNetwork),更适合渐进式下载,并且没有多线程代码。

    要找出音频文件的大小,您可以使用[response expectedContentLength] in

    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
    

    【讨论】:

      【解决方案4】:

      我知道这是一篇相当老的帖子,但想推荐一个可靠的开源库。它基于上面 @pzearfoss 推荐的 Matt Gallagher 的原始帖子。当前版本现在使用 AudioUnits,而不是 AudioQueue 类,因此它使您可以访问原始 PCM 样本,以便在播放之前进行任何操作(过滤等)。它还为您提供了免费的渐进式下载功能,而且工作量很小。该库似乎正在积极更新,这是一个巨大的优势!

      StreamingKit by @tumtumtum

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-09
        • 1970-01-01
        • 1970-01-01
        • 2012-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-28
        相关资源
        最近更新 更多