der*_*ahc 25 iphone objective-c audio-streaming ios
我听到一些有关此事的相互矛盾的报道.我想要做的是从URL流式传输mp3文件.我做了几个小时的研究,但是我找不到任何关于如何做到这一点的好指南,甚至找不到我应该使用什么样的音频播放器.
有些朋友告诉我,AVPlayer可以流式播放mp3,但Apple文档说它不能.我已经倾倒了Matt Gallagher的音频流(http://www.cocoawithlove.com/2008/09/streaming-and-playing-live-mp3-stream.html),但该代码是很久以前制作的,并且我对此很新,很难通过自动释放和保留以及所有这些.
我正在尝试流式传输的音频是一个来自libsyn服务器的相当大的mp3文件,其格式为URL.
http://traffic.libsyn.com/podcastname/episode.mp3
Run Code Online (Sandbox Code Playgroud)
我需要做的就是抓住它并开始玩,具有暂停和擦洗的能力.首先,CAN AVPlayer流MP3是什么?如果是这样,是否有人可以指向我的任何指南或代码?如果没有,是否有任何类型的音频播放器类可以传输音频?
我已经尝试创建一个AVPlayerItem,用URL初始化,然后将其添加到AVPlayer,但我得到了大量的错误加载...和符号未找到...错误.我很感激有关这方面的任何信息,谢谢!
Sum*_*dra 66
试试这个
-(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
}
Run Code Online (Sandbox Code Playgroud)
tum*_*tum 15
您也可以尝试我的支持HTTP流的开源Audjustable库.它基于Matt的AudioStreamer,但已经过整理,优化和更新,以支持多种数据源(非HTTP)和无间隙播放.
https://github.com/tumtumtum/audjustable.
| 归档时间: |
|
| 查看次数: |
43462 次 |
| 最近记录: |