iOS流媒体mp3

iOS流媒体mp3,ios,objective-c,streaming,Ios,Objective C,Streaming,我一直在寻找一个播放和流媒体音频的好教程,最后我发现它似乎提供了离线音频播放 在YMCAudioPlayer类中,我对加载资源进行了注释,并提供了由直接链接生成的NSURL*,而不是像这样 - (void)initPlayer:(NSString*) audioFile fileExtension:(NSString*)fileExtension { //NSURL *audioFileLocationURL = [[NSBundle mainBundle] URLForResource

我一直在寻找一个播放和流媒体音频的好教程,最后我发现它似乎提供了离线音频播放

在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];
}
我已经确保它是一个有效的链接,但似乎不能在emulator上运行。我错过了什么

编辑

它生成以下错误

 Error Domain=NSOSStatusErrorDomain Code=-43 "The operation couldn’t be completed. (OSStatus error -43.)

可能是个愚蠢的问题,但你成功了吗

[self.audioPlayer play]

然后我会尝试以下方法,以确保您的设置正确:

[self.audioPlayer prepareToPlay];

[self.audioPlayer setCurrentTime:0.0];

[self.audioPlayer setVolume:1.0];

[self.audioPlayer play];
你也可以使用AVAudioPlayer的代理来检查你玩游戏时是否发生了什么


否则它可能是一个格式问题的URL。

我认为您不能在EMULATOR上播放音频,您必须在设备上测试它

这里提到了苹果开发者指南-

我已经找到了答案

“我可以通过先将文件加载到NSData元素中,然后使用该元素初始化AVAudioPlayer来解决此问题,如下所示:”


为什么不在流媒体播放时将mp3下载到磁盘上?希望这对您有所帮助。没有直接流媒体方法代替下载和播放吗?播放是在按钮上调用的,可能您应该在init error中打印错误。这是真的吗?你有资源吗?这是一个可怕的解决方案,你根本不会使用这个变体来流媒体。甚至连渐进式下载播放都没有。切换到
AVPlayer
而不是
AVAudioPlayer
,因为后者不支持HTTP流,但前者支持。
NSData *songFile = [[NSData alloc] initWithContentsOfURL:songCacheURL options:NSDataReadingMappedIfSafe error:&error1 ];
self.audioPlayer = [[AVAudioPlayer alloc] initWithData:songFile error:&error2];