如何使用 AVAudioPlayer 执行 .m4a 歌曲文件的流式传输?
Posted
技术标签:
【中文标题】如何使用 AVAudioPlayer 执行 .m4a 歌曲文件的流式传输?【英文标题】:How perform streaming of .m4a song file with AVAudioPlayer? 【发布时间】:2013-06-09 03:03:01 【问题描述】:我正在尝试从 iTunes 商店播放这首歌,同时我正在下载它
为什么下面的代码不能播放?
NSLog(@"start");
NSURL *songUrl = [NSURL URLWithString:@"http://a1804.phobos.apple.com/us/r1000/064/Music/v4/9b/b3/c7/9bb3c7dc-a06f-f18c-3e41-2ce1e36f73b4/mzaf_7432104896053262141.aac.m4a"];
NSError* errorVar = nil;
AVAudioPlayer* song = [[AVAudioPlayer alloc] initWithContentsOfURL:songUrl error:&errorVar];
[song prepareToPlay];
[song play];
【问题讨论】:
【参考方案1】:我认为你必须使用 AVPlayer 而不是 AVAudioPlayer。
Apple 文档建议使用AVAudioPlayer
播放文件或内存中的音频数据。 AVPlayer
同样适用于本地和远程媒体文件。
self.player = [AVPlayer playerWithURL:<#Live stream URL#>];
[player addObserver:self forKeyPath:@"status" options:0 context:&PlayerStatusContext];
更多信息请参考Apple Docs。
【讨论】:
【参考方案2】:你可以的
// soundUrl can be a remote url, don't need to be a file url
NSData *data = [NSData dataWithContentsOfURL:soundUrl];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithData:data error:nil];
【讨论】:
以上是关于如何使用 AVAudioPlayer 执行 .m4a 歌曲文件的流式传输?的主要内容,如果未能解决你的问题,请参考以下文章
AVAudioPlayer initWithContentsOfURL 为 AAC/M4A 文件返回 nil