使用AVPlayer查看透明视频

时间:2013-05-08 19:38:22

标签: ios

我正在尝试查看具有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];

2 个答案:

答案 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
    .
    .
    .