【问题标题】:Can I stream a .mp3-link with the AV Foundation Framework on iOS?我可以在 iOS 上使用 AV Foundation Framework 流式传输 .mp3 链接吗?
【发布时间】:2012-07-24 12:17:20
【问题描述】:

我正在为拥有自己收音机的人制作应用程序。 它只是一个流 URL(例如http://stream.domain.com/highquality.mp3) 我已经用 AV Foundation Framework 编写了代码,让它与一个简单的 .mp3 文件一起工作。

这是我的代码:

-(IBAction)play {
if(clicked == 0) {
    clicked = 1;
    NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/test.mp3", [[NSBundle mainBundle] resourcePath]]];

    NSError *error;
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
    audioPlayer.numberOfLoops = 0;

    [audioPlayer play];
    [start setTitle:@"Stop" forState:UIControlStateNormal];
}
else {
    [audioPlayer stop];
    clicked = 0;
    [start setTitle:@"Start" forState:UIControlStateNormal];
}
}

我应该编辑什么?

编辑:上面的代码确实有效。我需要让它使用一个按钮来播放和停止它。我不想在我的设备上安装一个空洞媒体播放器。简单又漂亮。。

编辑 2:有些人没有找到我需要的东西:我需要进行编辑以使其与 .mp3 流一起使用(例如上面的流)。

【问题讨论】:

  • 它是否有效?我使用 Media Player Framework 在我的最后一个应用程序中实现了一个 mp3 流,它也非常好用。
  • 是的,它正在工作..我在我的应用程序中添加了一个文件:test.mp3,一切正常..
  • 如果它有效,你的问题到底是什么?
  • 我想让它与流一起工作,作为我问题中的示例;-)

标签: iphone ios audio


【解决方案1】:

你只需将一个 NSURL 传递给你的播放器对象,让它从那里播放流

-(IBAction)play {
if(clicked == 0) {
    clicked = 1;

    NSURL *url = [NSURL URLWithString:@"http://www.linktoyourstream.com"];

    NSError *error;
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
    audioPlayer.numberOfLoops = 0;

    [audioPlayer play];
    [start setTitle:@"Stop" forState:UIControlStateNormal];
}

【讨论】:

  • 嗯,我试过了,但不适用于我的流.. 对流有要求吗?这是高质量的..(更新:低质量也不起作用..)
  • 你是如何测试它的?尝试将 mp3 文件上传到网络服务器并调用该文件的 URL 以确保它不是流
  • 我用模拟器测试过。今天晚上我可以用一个设备来测试它……我该怎么做?
  • 您需要一个开发者帐户才能在您的设备上测试应用程序。
  • AVAudioPlayer 不应该用于流数据,initWithContentsOfURL 参数只接受本地存储​​文件的 url,而不是远程文件。另一种解决方案是让您下载文件,然后将文件的 url 传递给 AVAudioPlayer
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
相关资源
最近更新 更多