我正在尝试查看具有Alpha通道的视频(背景是透明的)。唯一的问题是,我似乎没有得到如何使播放器的背景透明。我知道我必须使用AVplayer,但我无法访问它的.view属性。如何将其添加到子视图并添加图层?
NSString *path = [NSString stringWithFormat:@"%@%@", [[NSBundle mainBundle] resourcePath], @"/New Project 5.m4v"];
NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];
moviePlayer = [[AVPlayer alloc] initWithURL:filePath];
AVPlayerLayer* playerLayer = [AVPlayerLayer playerLayerWithPlayer:moviePlayer];
self.playerLayer.frame = self.view.bounds;
moviePlayer.view.alpha = 0.3;
[moviePlayer.layer addSublayer:playerLayer];
[moviePlayer play];
答案 0 :(得分:2)
iOS SDK无法正常支持Alpha通道视频播放。这适用于AVFramework以及MediaPlayer框架。包含Alpha通道的视频材料在使用Apple API时无法正常工作。
正如您在代码中实际显示的那样,AVPlayer
不会使用UIView
作为播放视频的表面,而是使用CALayer的子类AVLayer
。
您需要重新考虑您的应用程序设计或选择其他播放SDK。
答案 1 :(得分:0)
如果您使用的是AVPlayerLayer
,则可以将其opacity
设置为0。我为另一个问题HERE添加了一个代码段,但是为了快速访问:
guard let path = Bundle.main.path(forResource: "SomeVideo", ofType: ".Someformat") else {
return nil
}
let player = AVPlayer(url: URL(fileURLWithPath: path))
let playerLayer = AVPlayerLayer(player: player)
playerLayer.opacity = 0
.
.
.