用AVPlayer播放MP3audio

我听到有关这方面的一些相互矛盾的报道。 我想要做的是从一个URLstream媒体文件。 我已经做了几个小时的研究,但是我找不到有关如何做这件事的好的指南,甚至找不到什么样的audio播放器。

有些朋友告诉我,AVPlayer可以播放MP3,但苹果文件说,它不能。 我倒了Matt Gallagher的audiostream式传输器(http://www.cocoawithlove.com/2008/09/streaming-and-playing-live-mp3-stream.html),但是那个代码很好,我已经足够新了,很难通过autoreleases和保留所有这一切。

我试图stream的audio是一个相当大的MP3文件从libsyn服务器,与格式的URL ..

http://traffic.libsyn.com/podcastname/episode.mp3 

所有我需要做的就是抓住它并开始玩,暂停和擦洗的能力。 所以首先,CAN AVPlayerstreamMP3的东西? 如果有的话,是否有人有指导或代码,他们可以指向我? 如果没有,有什么样的audio播放器类可以stream式audio?

我已经尝试创build一个AVPlayerItem,初始化的URL,然后将其添加到一个AVPlayer,但我得到了一吨错误加载…和符号未find…错误。 我会很感激这方面的任何信息,谢谢!

尝试这个

  -(void)playselectedsong{ AVPlayer *player = [[AVPlayer alloc]initWithURL:[NSURL URLWithString:urlString]]; self.songPlayer = player; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemDidReachEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:[songPlayer currentItem]]; [self.songPlayer addObserver:self forKeyPath:@"status" options:0 context:nil]; [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateProgress:) userInfo:nil repeats:YES]; } - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if (object == songPlayer && [keyPath isEqualToString:@"status"]) { if (songPlayer.status == AVPlayerStatusFailed) { NSLog(@"AVPlayer Failed"); } else if (songPlayer.status == AVPlayerStatusReadyToPlay) { NSLog(@"AVPlayerStatusReadyToPlay"); [self.songPlayer play]; } else if (songPlayer.status == AVPlayerItemStatusUnknown) { NSLog(@"AVPlayer Unknown"); } } } - (void)playerItemDidReachEnd:(NSNotification *)notification { // code here to play next sound file } 

你也可以尝试我的开源的Audjustable库,它支持HTTPstream。 它基于Matt的AudioStreamer,但已被整理,优化和更新,以支持多个数据源(非HTTP)和无间隙播放。

https://github.com/tumtumtum/audjustable

除了Sumit Mundra的回答,我帮了我很多,我发现这种技术实际上并没有从远程服务器上stream式传输 MP3文件。 当我实现这个,文件同步下载,阻止我的用户界面,在播放之前。 正确stream式传输我发现的MP3的方法非常好,就是指向一个M3U文件。 这只是一个扩展名为.m3u的文本文件,其中包含一个指向原始MP3的链接。 将Sumit的代码指向该文件,而您有一个立即开始播放的stream。

这是我发现的信息的地方: http : //www.soundabout.net/streammp3.htm

Matt Gallagher的AudioStreamer更新于2月前https://github.com/mattgallagher/AudioStreamer/commits/master

但是对于你想要查看的示例代码StichedStreamPlayer http://developer.apple.com/library/ios/#samplecode/StitchedStreamPlayer/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010092

它使用AVPlayer对象,如果你看方法 – (IBAction)loadMovieButtonPressed:(id)发送器,你应该能够遵循如何设置AVPlayer对象。