2013-05-28 70 views
14

我从MPMoviePlayerController切换到AVPlayer,因为我需要更细致地控制视频交换。 .mov文件我玩MPMoviePlayerController播放良好,但切换到AVPlayer后,我听到视频的音频,但视频只显示了我添加了AVPlayerLayer的视图背景。以下是我如何初始化AVPlayerAVPlayer视频空白但听到声音

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设置为不幸。

playerLayer.zPosition = 1; 

回答

7

发现这是使用AutoLayout的结果。在viewDidLoad中,self.playerContainer.boundsCGRectZero

我必须分配viewDidAppear中的playerLayer帧来匹配playerContainer。

+1

我不使用自动布局,但有同样的问题。 http://stackoverflow.com/questions/16872193/avqueueplayer-shows-black-screen-when-called-from-app-delegate你怎么能解决它? – Burak

+0

对我来说,视频是CGRectZero,不可见。它实际上只是在0.0x0.0的屏幕上播放。 –

+0

@Gary我有完全相同的问题,但与MacOS项目 - 我听到的声音,但没有视频只是黑色的窗口 - 这里是我的总代码:'let fileURL = URL(string:“http://commondatastorage.googleapis.com/gtv - 视频桶/样品/ BigBuckBunny.mp4" ) 让avAsset = AVURLAsset(URL:fileURL!选项:无) 让playerItem = AVPlayerItem(资产:avAsset) 录像机= AVPlayer(playerItem:playerItem) 让playerView = self.playerView playerView?.player = videoPlayer videoPlayer.play()'任何想法我需要添加到这个让视频显示? –

1

由于我们使用AVPlayerLayer(的CALayer的子类),我们需要设置框架

- (void)viewDidLayoutSubviews { 
    [super viewDidLayoutSubviews]; 

    self.avPlayerLayer.frame = self.movieContainerView.bounds; 
} 
0

请确保您在播放视频的声明:

[self.player play] 

从主调度调用像这样的队列(Swift 3):

DispatchQueue.main.async { 
    self.player.play() 
} 
+0

抱歉,它并没有帮助我。 –

相关问题