加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何从iPhone上的在线网址播放音频

发布时间:2020-12-15 01:51:12 所属栏目:百科 来源:网络整理
导读:参见英文答案 How to play a music file using URL link in iPhone?????????????????????????????????????5个 我知道很多人之前已经问过这个问题,但是我不知道为什么这在x-code和objective c中我的应用程序不起作用! 基本上,我想通过网址在应用程序中播放音
参见英文答案 > How to play a music file using URL link in iPhone?????????????????????????????????????5个
我知道很多人之前已经问过这个问题,但是我不知道为什么这在x-code和objective c中我的应用程序不起作用!

基本上,我想通过网址在应用程序中播放音频.只需使用Apple网站上的测试音频,我的代码就是:

NSString *playString = @"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8";

//Converts songURL into a playable NSURL
NSURL *playURL = [NSURL URLWithString:playString];

AVAudioPlayer *backgroundMusicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:playURL error:&error];

if (backgroundMusicPlayer == nil) {
    NSLog(@"%@",[error description]);
}
else {
    [backgroundMusicPlayer prepareToPlay];
    [backgroundMusicPlayer play];
}

它出现以下错误:

错误域= NSOSStatusErrorDomain代码= -43“无法完成操作.(OSStatus错误-43.)

当我google它时,我找不到任何东西.
有任何想法吗?我应该尝试其他音频流吗?或者有没有人有一个有效的例子?是因为我使用iPhone模拟器而不是真正的iPhone吗?

编辑:

请注意 – 当我说URL时,我的意思是来自一个真实的网站,比如“http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8”
我不想先下载这首歌,我希望能够在下载时播放它!谢谢

解决方法

使用AVPlayer从url播放mp3文件

-(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];

    [self.songPlayer play];

}
- (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");


        } else if (songPlayer.status == AVPlayerItemStatusUnknown) {
            NSLog(@"AVPlayer Unknown");

        }
    }
}

- (void)playerItemDidReachEnd:(NSNotification *)notification {

 //  code here to play next sound file

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读