Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone AVPlayer视频空白,但听到声音_Iphone_Ios_Objective C_Avplayer_Avplayerlayer - Fatal编程技术网

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()
}