如何在AVPlayer IOS中使用URL播放youtube视频?

时间:2014-09-09 11:12:52

标签: ios objective-c ios7 youtube avplayer

我想使用YouTube网址在AVPlayer中加载视频,但它没有显示任何内容。无论何时我使用NSBundle从本地存储加载它都运行正常。有任何替代加载视频或我们可以在AVPlayer中做一些事情

这是我的代码:

- (void)viewDidLoad
{
   [super viewDidLoad];
   NSError *setCategoryError = nil;
  [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error: &setCategoryError];
  AVAsset *asset = [AVAsset assetWithURL:[NSURL fileURLWithPath:@"http://www.youtube.com/watch?v=zPP6lXaL7KA&feature=youtube_gdata_player"]];
  avPlayerItem = [[AVPlayerItem alloc]initWithAsset:asset];
  self.songPlayer = [AVPlayer playerWithPlayerItem:avPlayerItem];
  self.avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer: self.songPlayer];
  self.avPlayerLayer.frame = self.view.layer.bounds;
  UIView *newView = [[UIView alloc] initWithFrame:self.view.bounds];
  [newView.layer addSublayer:avPlayerLayer];
  [self.view addSubview:newView];
  [ self.songPlayer play];
}

3 个答案:

答案 0 :(得分:2)

您应该使用iOS Youtube Helper库来播放YouTube视频。

https://developers.google.com/youtube/v3/guides/ios_youtube_helper

我不知道你是否可以使用AVPlayer。我在CocoaControls上看过一些使用MPMoviePlayerController的例子,比如这个:https://www.cocoacontrols.com/controls/hcyoutubeparser或者这个:https://www.cocoacontrols.com/controls/xcdyoutubevideoplayerviewcontroller

但我不认为直接在你的播放器中使用youtube的url符合平台的ToS。因此,如果您打算发布应用,我建议您使用Youtube Helper Library。

答案 1 :(得分:0)

  • 使用XCDYouTubeKit吊舱
  • 从网址中获取YouTube视频ID,例如https://www.youtube.com/watch?v=dLEATulyCdw 您可以使用以下代码:

    extension URL {
    
    func youtubeVideoId() -> String? {
    
        let pattern = #"(?<=(youtu\.be\/)|(v=)).+?(?=\?|\&|$)"#
        let testString = absoluteString
    
        if let matchRange = testString.range(of: pattern, options: .regularExpression) {
            let subStr = testString[matchRange]
            return String(subStr)
        } else {
            return .none
        }
    } }
    
  • 然后调用XCDYouTubeClient.default()。getVideoWithIdentifier(videoId)

  • 完成后,您可以获取url。 “ video?.streamURLs”包含质量不同的网址,请选择所需的网址。
  • 最后只需将此网址传递给AVPlayer ...

答案 2 :(得分:-1)

我不认为你现在可以使用它,因为我只是使用了这个并且遇到了同样的情况。

我阅读了苹果文档 - 它肯定是指(您无法直接创建AVAsset实例来表示HTTP直播中的媒体。)。

相反,这是苹果公司的例子:

NSURL *url = [NSURL URLWithString:@"<#Live stream URL#>];

//您可以在
找到测试流     http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8

self.playerItem = [AVPlayerItem playerItemWithURL:url];

如果不是本地url,请参阅playerItemWithURL:^ _ ^