使用 AVPlayer 从 url 流式传输广播 - > iPhone 播放器控件不起作用

Posted

技术标签:

【中文标题】使用 AVPlayer 从 url 流式传输广播 - > iPhone 播放器控件不起作用【英文标题】:Stream radio from url with AVPlayer -> iPhone player controls not working 【发布时间】:2015-02-04 13:56:15 【问题描述】:

我使用 AVPlayer 从 url 流式传输现场声音。

它运行良好,除非我的应用程序在后台并且我想在向上滑动菜单中播放或暂停 iPhone 播放器(我不知道它的确切名称)。音量控制有效,但播放/暂停控制无效。

我已经通过 SO 和互联网查看了几个小时,但无法弄清楚。

有什么帮助吗?

这是代码(如果您需要更多代码,请不要犹豫):

// Set Audiosession
NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&sessionError];
[[AVAudioSession sharedInstance] setActive:YES error:nil];

// Init player
self.playerItem = [AVPlayerItem playerItemWithURL:url];
self.audioPlayer = [AVPlayer playerWithPlayerItem:self.playerItem];
[self.audioPlayer play];

【问题讨论】:

【参考方案1】:

您需要自己在应用中实现远程控制。这不是由AVPlayer 处理的。

您需要阅读的是Remote Control Events。

你需要让某个类成为第一个响应者,比如你的根视图控制器。通过调用[self becomeFirstResponder] 确保它正在接收所有事件。 然后只需实现远程控制事件的事件处理程序:

- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent 

    if (receivedEvent.type == UIEventTypeRemoteControl) 
      switch (receivedEvent.subtype) 
         case UIEventSubtypeRemoteControlTogglePlayPause:
            [self playOrStop: nil];
            break;

        case UIEventSubtypeRemoteControlPreviousTrack:
            [self previousTrack: nil];
            break;

        case UIEventSubtypeRemoteControlNextTrack:
            [self nextTrack: nil];
            break;

        default:
            break;
    

【讨论】:

以上是关于使用 AVPlayer 从 url 流式传输广播 - > iPhone 播放器控件不起作用的主要内容,如果未能解决你的问题,请参考以下文章

AvPlayer 正在下载 mp3 而不是流式传输

通过 AvPlayerItem 和 AvPlayer 流式传输时监控下载的字节数 - iOS

从 Internet 流式传输单个音频文件

超级快速的 AVPlayer 初始化或如何在后台启动它?

使用 AVURLAsset + AVPlayerItem + AVPLayer 流式传输 .mp3

如何使用 avplayer 从文档目录播放视频文件