Iphone AVPlayer视频空白,但听到声音
我正在从Iphone AVPlayer视频空白,但听到声音,iphone,ios,objective-c,avplayer,avplayerlayer,Iphone,Ios,Objective C,Avplayer,Avplayerlayer,我正在从MPMoviePlayerController切换到AVPlayer,因为我需要对视频交换进行更细粒度的控制。我正在播放的.mov文件MPMoviePlayerController播放得很好,但切换到AVPlayer后,我听到了视频中的音频,但视频只显示了我添加AVPlayerLayer的视图背景。下面是我如何初始化AVPlayer self.player = [[AVPlayer alloc] initWithURL:video]; AVPlayerLayer* playerLaye
MPMoviePlayerController
切换到AVPlayer
,因为我需要对视频交换进行更细粒度的控制。我正在播放的.mov
文件MPMoviePlayerController
播放得很好,但切换到AVPlayer
后,我听到了视频中的音频,但视频只显示了我添加AVPlayerLayer
的视图背景。下面是我如何初始化AVPlayer
self.player = [[AVPlayer alloc] initWithURL:video];
AVPlayerLayer* playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
playerLayer.frame = self.playerContainer.bounds;
[self.playerContainer.layer addSublayer:playerLayer];
后来我就发了一个
[self.player play];
播放视频时,我听到音频,但看不到视频。我还试着将zPosition设置为no luck
playerLayer.zPosition = 1;
发现这是使用
自动布局
的结果。在viewDidLoad
中,self.playerContainer.bounds
是一个CGRectZero
我必须在
视图中指定playerLayer帧,以匹配playerContainer。由于我们使用AVPlayerLayer(CALayer的子类),我们需要设置帧
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
self.avPlayerLayer.frame = self.movieContainerView.bounds;
}
确保播放视频时使用以下语句:
[self.player play]
从主调度队列调用,如下所示(Swift 3):
我不使用自动布局,但有同样的问题。你怎么能解决这个问题呢?对我来说,这个视频是一个CGRectZero,不可见。它实际上是在播放,只是在一个0.0x0.0屏幕上。@Gary我有完全相同的问题,但有一个MacOS项目-我听到声音,但没有视频-只有黑色窗口-这是我的全部代码:let fileURL=URL(字符串):http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4)让avAsset=AVURLAsset(url:fileURL!,选项:nil)let playerItem=AVPlayerItem(资产:avAsset)videoPlayer=AVPlayer(playerItem:playerItem)let playerView=self.playerView-playerView?.player=videoPlayer-videoPlayer.play()
知道我需要添加什么才能让视频显示出来吗?对不起,这对我没有帮助。
DispatchQueue.main.async {
self.player.play()
}