【问题标题】:Streaming Audio Files in iOS在 iOS 中流式传输音频文件
【发布时间】:2012-08-07 22:19:15
【问题描述】:

我需要在我的应用程序中发送和接收音频文件。为了提高性能并保持开放连接,我希望流式传输这些数据。

我根据问题的答案查看了 HTTP Live StreamingAudioStreamer 之类的内容。但是,这些似乎是 continuous 流式传输,单向(读取)。而我正在发送一个有限的音频文件(> 10 秒),然后收到一个回复​​。

我熟悉 NSURLConnection 并查看过这个answer。但同样,这使用了一个连续,单向流。

我将不胜感激有关架构的任何建议,以帮助我开始。

【问题讨论】:

  • 这是通过 Internet 还是仅通过本地 WiFi 连接?
  • 通过互联网。目标是将录音流式传输到远程服务器并返回一个音频文件。

标签: ios audio-streaming


【解决方案1】:

一般来说,AVAudioPlayer 使用音乐播放。但是,此框架不支持流式传输。所以使用AVPlayer流可以实现。通常开发者AVPlayer目的只知道可以播放视频,还可以播放音乐。

我看下面推荐苹果的示例代码。这是使用AVPlayer

StitchedStreamPlayer

我上传到 myServer 测试过,.mp3 也很完美

3G、wifi 在两种环境中都经过测试。虽然是示例代码,但令人惊讶的是它完美地工作。 mp3 文件上传您的服务器。立即尝试测试。会很好用。

如果你想在后台播放,下面的代码不要忘记:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    AVAudioSession* audio = [[AVAudioSession alloc] init];
    [audio setCategory: AVAudioSessionCategoryPlayback error: nil];
    [audio setActive: YES error: nil];

    return YES;
}

【讨论】:

  • 我来看一下示例代码。但我看到这将处理播放,但你也说上传。你用什么上传的?
  • 我说,“上传”是指将 .mp3 文件上传到 myServer。关于“blahblah.com/my_file.mp3”。示例代码是一个骨架。是使用 AVPlayer 实现流式音频或视频播放的基本代码。有关详细信息,请参阅以下内容:developer.apple.com/library/mac/#documentation/AudioVideo/…
  • 但是如何。您没有使用AVPlayer 进行上传……您使用了NSURLConnection 吗?
  • 不,直接使用FTP上传。
  • 好的。我担心这可能不符合我的要求。但我会调查这些。也许他们会……
【解决方案2】:

是的,到目前为止,我使用和搜索过的 AudioStreamer 都非常好。

但使用 AudioStreamer,尝试在后台流式传输时需要进行某些更改,当您创建 2 个实例时,还有更多.....

https://github.com/mattgallagher/AudioStreamer/

您也可以在我的个人资料中找到 2-3 个与此相关的问题...

【讨论】:

    【解决方案3】:

    我认为您要做的是从非流式传输的服务器上传和下载文件。对于下载,您可以使用NSURLConnection/NSURLRequest。对于上传,您可以使用 HTTP POST 方法。还有一个旧的第三方库,称为 ASIHTTPRequest。互联网上有很多关于这些主题的示例。

    【讨论】:

    • 这需要轮询服务器以了解资源何时准备就绪。我想将可用的数据发送到服务器,并保持连接直到它返回所有数据(在这种情况下数据是音频文件)。所以我确实在寻找套接字/流媒体。
    【解决方案4】:

    对于从服务器播放,我的 Audjustable 项目 (https://github.com/tumtumtum/audjustable) 修复了原始 AudioStreamer 项目中的大部分问题,包括无缝播放和解耦音频数据源,以允许进行错误恢复、加密等操作。完全开源...

    如果您想将音频数据上传到服务器,您可以通过多种方式进行,但 NSURLConnection 似乎是最简单的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-21
      • 2016-09-29
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 2017-05-09
      相关资源
      最近更新 更多