我想使用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];
}
答案 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)
从网址中获取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)
答案 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
:^ _ ^