iOS 流媒体 mp3
Posted
技术标签:
【中文标题】iOS 流媒体 mp3【英文标题】:iOS Streaming mp3 【发布时间】:2014-05-20 08:42:50 【问题描述】:我一直在寻找播放和流式传输音频的好教程,最后我找到了this,它似乎提供了离线音频播放。
在 YMCAudioPlayer 类中,我评论了加载资源并提供了由直接链接生成的 NSURL*,而不是像这样。
- (void)initPlayer:(NSString*) audioFile fileExtension:(NSString*)fileExtension
//NSURL *audioFileLocationURL = [[NSBundle mainBundle] URLForResource:audioFile withExtension:fileExtension];
NSURL *audioFileLocationURL = [NSURL URLWithString:@"http://188.95.64.47/AghaninaDownload/Content/per_singer/JFire/Audios/J-FirE_and_Omar_khalid_wlaKelmeh-sample.mp3"];
NSError *error;
self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioFileLocationURL error:&error];
我已经确保它是一个有效的链接,但似乎不能在模拟器上播放。我错过了什么?
编辑
它会产生以下错误
Error Domain=NSOSStatusErrorDomain Code=-43 "The operation couldn’t be completed. (OSStatus error -43.)
【问题讨论】:
为什么不在流媒体播放时下载磁盘上的 mp3 希望这对你有帮助 developer.apple.com/library/mac/documentation/Cocoa/Conceptual/… 不是有直接流的方式而不是下载播放吗? 【参考方案1】:可能是一个愚蠢的问题,但你让它发挥了吗?
[self.audioPlayer 播放];
然后我会试试这个,以确保您的设置正确:
[self.audioPlayer prepareToPlay];
[self.audioPlayer setCurrentTime:0.0];
[self.audioPlayer setVolume:1.0];
[self.audioPlayer play];
您也可以使用 AVAudioPlayer 的委托来检查播放时是否发生了什么。
否则可能是格式问题的 URL。
【讨论】:
在按钮上调用播放 也许你应该在你的初始化错误中打印错误。【参考方案2】:我认为您无法在 EMULATOR 上播放音频,您必须在设备上进行测试。
这里提到了苹果开发者指南 -
https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/iOS_Simulator_Guide/TestingontheiOSSimulator/TestingontheiOSSimulator.html#//apple_ref/doc/uid/TP40012848-CH4-SW1
【讨论】:
这是真的吗?你有资源吗?【参考方案3】:我在the accepted answer here找到了答案
“我能够通过首先将文件加载到 NSData 元素中然后使用它来初始化 AVAudioPlayer 来解决此问题,如下所示:”
NSData *songFile = [[NSData alloc] initWithContentsOfURL:songCacheURL options:NSDataReadingMappedIfSafe error:&error1 ];
self.audioPlayer = [[AVAudioPlayer alloc] initWithData:songFile error:&error2];
【讨论】:
这是一个可怕的解决方案,您根本不会使用此变体进行流式传输。甚至没有渐进式下载播放。切换到AVPlayer
而不是 AVAudioPlayer
,因为后者不支持 HTTP 流,但前者支持。以上是关于iOS 流媒体 mp3的主要内容,如果未能解决你的问题,请参考以下文章
Ionic 媒体插件无法在 iOS 上播放本地存储的 mp3 文件
未处理的 IO 异常?使用媒体播放器播放 mp3 文件 - Android
使用 ExtAudioFileWrite ios 将流式 mp3 数据包的缓冲区写入 wav 文件