使用 AVAudioPlayer 从 URL 播放音频
Posted
技术标签:
【中文标题】使用 AVAudioPlayer 从 URL 播放音频【英文标题】:Play Audio from URL using AVAudioPlayer 【发布时间】:2016-03-08 07:18:44 【问题描述】:我正在从下面给出的 URL 播放音频
"http://sumeetmusiclocal.wsisites.net/Songs/KashyalaLavato (Lavani).mp3"
通过使用下面给出的代码
NSString *urlString = @"http://sumeetmusiclocal.wsisites.net/Songs/Kashyala Lavato (Lavani).mp3";
NSURL *audioFileLocationURL = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioFileLocationURL error:&error];
[audioPlayer setNumberOfLoops:-1];
if (error)
NSLog(@"%@", [error localizedDescription]);
[[self volumeControl] setEnabled:NO];
[[self playPauseButton] setEnabled:NO];
[[self alertLabel] setText:@"Unable to load file"];
[[self alertLabel] setHidden:NO];
else
[[self alertLabel] setText:[NSString stringWithFormat:@"%@ has loaded", @"HeadspinLong.caf"]];
[[self alertLabel] setHidden:NO];
//Make sure the system follows our playback status
[[AVAudiosession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
//Load the audio into memory
[audioPlayer prepareToPlay];
但我收到错误提示
Printing description of error:
Error Domain=NSOSStatusErrorDomain Code=2003334207 "(null)"
2016-03-08 12:43:45.835 SumeetApp[1839:78581] The operation couldn’t be completed. (OSStatus error 2003334207.)
谁能帮我解决这个错误或建议我用其他方法从 url 播放音频。
谢谢
【问题讨论】:
【参考方案1】:试试这个
AVURLAsset *asset = [AVURLAsset assetWithURL:[NSURL URLWithString:@"http://clips.vorwaerts-gmbh.de/VfE_html5.mp4"]];
AVPlayerItem *playerItem1 = [AVPlayerItem playerItemWithAsset:asset];
AVPlayer *player1 = [AVPlayer playerWithPlayerItem:playerItem1];
AVPlayerLayer *playerLayer1 = [AVPlayerLayer playerLayerWithPlayer:player1];
playerLayer1.videoGravity = AVLayerVideoGravityResizeAspectFill;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^
playerLayer1.frame = self.view.frame;
);
[self.view.layer insertSublayer:playerLayer1 atIndex:1];
[player1 play];
希望这对你有用。
【讨论】:
【参考方案2】:AVPlayer *player = [[AVPlayer alloc]initWithURL:[NSURL URLWithString:@"http://sumeetmusiclocal.wsisites.net/Songs/Kashyala Lavato (Lavani).mp3"]];
[player play];
试试这个对我有用的代码。
【讨论】:
【参考方案3】:试试这个
NSURL *url = [NSURL URLWithString:@"YOUR_MP3URL"];
self.playerItem = [AVPlayerItem playerItemWithURL:url];
self.player = [AVPlayer playerWithPlayerItem:playerItem];
self.player = [AVPlayer playerWithURL:@"YOUR_MP3URL"];
为了玩
[self.player play];
希望这会有所帮助。
【讨论】:
【参考方案4】:错误:
您试图访问一个不存在的文件。
所以,initWithContentsOfURL:audioFileLocationURL
将返回 nil
。
播放音频:
NSURL *url = [NSURL URLWithString:@"<URL>];
self.playerItem = [AVPlayerItem playerItemWithURL:url];
self.player = [AVPlayer playerWithPlayerItem:playerItem];
self.player = [AVPlayer playerWithURL:<URL>];
[player play];
【讨论】:
以上是关于使用 AVAudioPlayer 从 URL 播放音频的主要内容,如果未能解决你的问题,请参考以下文章
无法在 swift 4 中使用 avaudioplayer 播放 http 音频