【问题标题】:How to change AVPlayer Live Streaming URL?如何更改 AVPlayer 直播 URL?
【发布时间】:2017-09-15 09:34:45
【问题描述】:

您好开发人员和专家,我需要您的好建议和帮助。我正在使用具有四个不同无线电频道(按钮)的应用程序。我正在使用 AVPlayer 进行直播。我想在 ViewDidLoad 中创建一个 AVPlayer 对象,只需使用四个不同的按钮更改流 url,而不必一次又一次地重新创建 AVPlayer 对象。我用谷歌搜索但没有找到任何解决方案。所以您的好建议和帮助将不胜感激。谢谢

- (IBAction)playBtn_clicked:(id)sender {

     NSURL *streamURL = [NSURL URLWithString:urlString];

    // I don't like this line, creating a new object again and again
    _streamPlayer = [[AVPlayer alloc] initWithURL:streamURL]; 

    if (_streamPlayer.rate == 1.0) {
        [_streamPlayer pause];
    } else {
        [_streamPlayer play];
    }
}

【问题讨论】:

  • 你能提供代码吗...那么我们可以帮助你吗?
  • 我的代码很简单。我不想一次又一次地创建 Player 。我想在 viewDidLoad 中创建它,然后单击按钮更改 url。

标签: ios objective-c avplayer audio-streaming live-streaming


【解决方案1】:

最后我通过替换 AVPlayer 中的当前项目而不是更改 Player 中的 Streaming URL 找到了解决方案。

 - (void)viewDidLoad {
   [super viewDidLoad];
   // Do any additional setup after loading the view.

   _streamPlayer = [[AVPlayer alloc] init];
}


- (IBAction)playBtn_clicked:(id)sender {

  NSURL *streamURL = [NSURL URLWithString:_urlString];
  AVPlayerItem *currentItem = [[AVPlayerItem alloc] initWithURL:streamURL];
  [_streamPlayer replaceCurrentItemWithPlayerItem:currentItem];
}

【讨论】:

  • 我很高兴你找到了解决方案,但这正是我在上面的评论中指出的(除了地雷在 Swift 3 中)。因此,如果您认为我的评论对您有所帮助,最好将其标记为正确答案。祝您编码愉快!
【解决方案2】:

AVPlayer 有一种方法可以将“currentItem”更改为新的。

在 ViewDidLoad() 上

let player = AVPlayer(playerItem: nil) // You can use an item if you have one

那么,当你想改变当前项时……或者设置 nil 来移除它……

player.replaceCurrentItem(with: AVPlayerItem(url: streamingURL))

注意:是的,它在 Swift 3 中,我手头没有它的 ObjC 版本。

这样,您可以创建一个单独的 AVPlayer 实例,并处理当前正在播放的 AVPlayerItem。

【讨论】:

  • ObjC: [player replaceCurrentItemWithPlayerItem:[AVPlayerItem playerItemWithURL:streamingURL]];
猜你喜欢
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多