需要帮助使用AVAudioPlayer iOS从URL流式传输音频

时间:2015-02-10 10:03:54

标签: ios xcode audio stream avaudioplayer

我正在使用twilio创建一个手机应用程序。我有一个语音邮件的链接,我正在尝试从tableview中的控件播放语音邮件。因为在我决定简化所有内容并尝试从任何URL流式传输音频之前,我从未播放过音频。我尝试传输音频的网址是“http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8”。

我尝试过使用Apples Developer页面中的示例,但我想我只是不理解文档。

这是我目前正在尝试的,我收到了一个错误。

NSURL *url = [NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"];
NSError *error;
self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];

我得到了这个错误...

Error Domain=NSOSStatusErrorDomain Code=2003334207 "The operation couldn’t be completed. (OSStatus error 2003334207.)"

我是朝着正确的方向前进,还是应该以不同的方式做事。我发现了许多不同的线程,但我看到的并没有让我播放音频。推动正确的方向将非常感激。

我也尝试过使用AVPlayer ......

NSURL *url = [NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"];
self.player = [[AVPlayer alloc] initWithURL:url];
[self.player play];

没有任何反应

1 个答案:

答案 0 :(得分:2)

试试这个

@property (nonatomic,strong) AVPlayer *audioStremarPlayer;

NSURL *url = [NSURL URLWithString:@"your url"];

// stremar player
AVPlayer *player = [[AVPlayer alloc]initWithURL:url];
self.audioStremarPlayer= player;
[self.audioStremarPlayer addObserver:self forKeyPath:@"status" options:0 context:nil];

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{

    if (object == self.audioStremarPlayer && [keyPath isEqualToString:@"status"]) {
        if (self.audioStremarPlayer.status == AVPlayerStatusFailed)
        {
      //  //NSLog(@"AVPlayer Failed");
        } 
        else if (self.audioStremarPlayer.status == AVPlayerStatusReadyToPlay) 
        {
            [self.audioStremarPlayer play];
        } 
        else if (self.audioStremarPlayer.status == AVPlayerItemStatusUnknown) 
        {
      //  //NSLog(@"AVPlayer Unknown");

        }
    }
}