iphone - 使用 AVPlayer 流式传输 mp3 音频

标签 iphone objective-c ios audio-streaming

我听到了一些关于此的相互矛盾的报道。我想要做的是从 URL 流式传输 mp3 文件。我已经进行了数小时的研究,但找不到有关如何执行此操作的任何好的指南,甚至找不到我应该使用哪种音频播放器。

有些 friend 告诉我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

我需要做的就是捕获它并开始播放,并具有暂停和擦洗的功能。首先,AVPlayer 可以播放 mp3 吗?如果是这样,是否有人可以向我指出任何指南或代码?如果没有,是否有任何类型的音频播放器类可以流式传输音频?

我已经尝试创建一个 AVPlayerItem,用 URL 初始化,然后将它添加到 AVPlayer,但是我遇到了大量错误加载...和符号未找到...错误。如果有任何相关信息,我将不胜感激,谢谢!

最佳答案

试试这个

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

    }

关于iphone - 使用 AVPlayer 流式传输 mp3 音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13131177/

相关文章:

ios - CloudKit "Couldn' t 仅在设备上获取签名证书

iphone - UITextField 用 NSUndoManager 支持替换文本

iphone - 发送多个文本和图像到电子邮件正文

ios - 使用 UISearchBar 作为 UITableView 的标题 View 不可避免的保留周期?

objective-c - 从 NSBezierPath 中切出一个矩形

objective-c - 用手指触摸移动时防止 View 对象跳跃

iphone - 检索 EKCalendar 的帐户信息

ios - 在 iOS 中离线打开和存储加密文档

ios - iTunes Connect - 新版本未显示在 TestFlight (Xcode 7.1) 中

ios - GameKit 中的 Swift 完成处理程序