我可以在 iOS 上使用 AV Foundation Framework 流式传输 .mp3 链接吗?
Posted
技术标签:
【中文标题】我可以在 iOS 上使用 AV Foundation Framework 流式传输 .mp3 链接吗?【英文标题】:Can I stream a .mp3-link with the AV Foundation Framework on iOS? 【发布时间】: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,一切正常.. 如果它有效,你的问题到底是什么? 我想让它与流一起工作,作为我问题中的示例;-) 【参考方案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以上是关于我可以在 iOS 上使用 AV Foundation Framework 流式传输 .mp3 链接吗?的主要内容,如果未能解决你的问题,请参考以下文章
Foundatio - .Net Core用于构建分布式应用程序的可插拔基础块