带有 AVPlayerLayer 的 AVPlayer 不播放视频
AVPlayer with AVPlayerLayer not playing video
我有一个名为 Intro.m4v
的视频文件,它在我的应用程序目标上有一个目标成员资格(视频本身直接来自 iPhone,所以我很确定它是 iPhone-支持)。
我正在尝试按如下方式播放视频(self.videoContainer
是我的视图控制器中的全屏视图,仔细检查,它不是 nil
。另外,播放器和播放器层是我的视图控制器中的强引用实例变量 class):
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
player = [AVPlayer playerWithURL:[NSURL fileURLWithPath:@"Intro.m4v"]];
playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
playerLayer.frame = self.videoContainer.layer.frame;
[self.videoContainer.layer addSublayer:playerLayer];
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[player play];
}
-(void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];
playerLayer.frame = self.videoContainer.layer.frame;
}
但是,没有播放任何内容。我所看到的只是我的视频容器视图的背景颜色(以及它前面的所有视图,以这种方式)。我做错了什么?
试试这个
func playVideo(urlString: String, location : Int) {
let videoURL = URL(string: urlString)
let player = AVPlayer(url: videoURL!)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true) {
playerViewController.player!.play()
}
}
糟糕,我自己发现了问题。我使用的是 [NSURL fileURLWithPath:@"Intro.m4v"]
而我不得不使用 [NSBundle mainBundle] URLForResource:@"Intro" withExtension:@"m4v"]
.
修复 URL 解决了问题。
如果您的视频是捆绑包,您的 URL 应该是这样的:
NSString *path = [[NSBundle mainBundle] pathForResource:@"Intro" ofType:@"m4v"];
NSURL *yourVideoUrl = [NSURL fileURLWithPath:path];
我有一个名为 Intro.m4v
的视频文件,它在我的应用程序目标上有一个目标成员资格(视频本身直接来自 iPhone,所以我很确定它是 iPhone-支持)。
我正在尝试按如下方式播放视频(self.videoContainer
是我的视图控制器中的全屏视图,仔细检查,它不是 nil
。另外,播放器和播放器层是我的视图控制器中的强引用实例变量 class):
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
player = [AVPlayer playerWithURL:[NSURL fileURLWithPath:@"Intro.m4v"]];
playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
playerLayer.frame = self.videoContainer.layer.frame;
[self.videoContainer.layer addSublayer:playerLayer];
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[player play];
}
-(void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];
playerLayer.frame = self.videoContainer.layer.frame;
}
但是,没有播放任何内容。我所看到的只是我的视频容器视图的背景颜色(以及它前面的所有视图,以这种方式)。我做错了什么?
试试这个
func playVideo(urlString: String, location : Int) {
let videoURL = URL(string: urlString)
let player = AVPlayer(url: videoURL!)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true) {
playerViewController.player!.play()
}
}
糟糕,我自己发现了问题。我使用的是 [NSURL fileURLWithPath:@"Intro.m4v"]
而我不得不使用 [NSBundle mainBundle] URLForResource:@"Intro" withExtension:@"m4v"]
.
修复 URL 解决了问题。
如果您的视频是捆绑包,您的 URL 应该是这样的:
NSString *path = [[NSBundle mainBundle] pathForResource:@"Intro" ofType:@"m4v"];
NSURL *yourVideoUrl = [NSURL fileURLWithPath:path];