【问题标题】:iPad Video with Transparency具有透明度的 iPad 视频
【发布时间】:2011-04-09 07:07:46
【问题描述】:

是否可以在 iPad 上的静态动态背景UIView(即偶尔变化的视图)上播放带有 alpha 层(透明度)的 QuickTime 视频?

谢谢!

【问题讨论】:

  • 我在任何地方都没有看到解决方案。我想在界面的一部分上叠加视频。或至少在自定义彩色背景上。
  • 可以使用 QuickTime Pro 创建透明视频层:docs.info.apple.com/article.html?artnum=42599。我不确定透明度是否会在 iOS 设备上保持不变。
  • 嗨。您找到解决方案了吗?哪里可以在 iOS 上播放透明视频?
  • 使用 bink 视频格式,您可以轻松做到...而且该 bink 库可用于 iOS。

标签: objective-c ipad video ios4 ios


【解决方案1】:

为了澄清错误信息,您不能使用 iOS 中内置的视频逻辑来使用带有 Alpha 通道的视频。您可以创建使用动画编解码器编码的 Quicktime 电影,并使用 AVAnimator 将视频加载到视图或图层中。你不能做的是创建带有 alpha 通道的 H264 视频,iOS 根本不支持。

display movies with an alpha channel under iOS

【讨论】:

  • AVAnimator 最适合这个用例。它需要转码为 APNG 或它们自己的格式,但对于流畅的 30fps 视频 w/alpha 来说已经足够快了。
  • MoDJ 的库需要商业许可证,涉及额外的步骤并且没有那么出色的性能(提取 7z、额外的视频轨道等) 这是一个使用免费开源库的解决方案,完全适用于GPU(即使是大视频也有出色的性能)并且只需要两件事: - 透明图像(PNG 或代码) - 视频不是透明的绿色背景stackoverflow.com/questions/33244347/…
  • Mopt,您当然有权就您最喜欢哪种开源许可证发表意见。但是以技术为由批评我的软件是无稽之谈。您建议的这个其他第三方库是一个不同的实现,但它显然不是更好。一方面,在处理绿屏视频时存在绿色或接近绿色的问题(想想一个穿衬衫的天气预报员)。此外,您建议的库不处理无缝循环,也不处理视频到音频的同步。此外,它一次限制为 4 个解码流。
  • 可以进行逐点比较,显示绿屏与 Alpha 通道比较的实际结果。 modejong.com/blog/post18_green_screen
  • 我还刚刚添加了一个新的示例项目,它显示了一个使用 iOS h264 硬件和 OpenGL 进行 30 FPS RGB+Alpha 渲染的 alpha 通道渲染。 github.com/mdejong/H264AlphaPlayer
【解决方案2】:

您可以播放普通视频并降低呈现视图的 alpha。这可以使用AVPlayerAVPlayerLayer 来完成,方法是将AVPlayerLayer 添加到UIView 并设置UIView 的alpha。比如:

self.player = [[AVPlayer alloc] initWithURL:url];
self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
self.playerLayer.frame = view.bounds;
...etc...
self.playerView.alpha = 0.3;
[self.playerView.layer addSublayer:self.playerLayer];

我还没有在视频本身的 alpha 通道上尝试过这个,但是 AVPlayerLayer 应该也可以。

【讨论】:

  • 不清楚 - 我有一个带 Alpha 通道的视频。我想在我的背景上覆盖那个视频(比如说粉红色)。那么我应该减少背景视图的 alpha 吗?..
  • 如果视频中编码了 alpha 信息,则您不需要减少任何视图(持有 AVPlayerLayer 的 UIView 或下面的任何 UIView)中的 alpha。如果 alpha 信息未在视频本身中编码,则仅减少呈现 AVPlayerLayer 的 UIView 的 alpha。
  • 原始发帖人询问的是一个带有 Alpha 通道的视频,该通道可以逐个像素地控制 Alpha,这对于叠加很有用。为视频中的所有像素设置 alpha 不是等效的解决方案,也不能解决原始问题。
【解决方案3】:

MPMoviePlayerController 有一个 backgroundView 属性。文档状态:

此视图提供支持内容,在其之上显示电影内容。如果要显示自定义背景内容,可以将子视图添加到背景视图。

我没有尝试过,但如果视频内容本身有 alpha,听起来应该会显示此视图。如果您将该视图设置为清除,它可能会正常工作...

【讨论】:

    【解决方案4】:

    我认为您可以使视频透明,在播放视频时将视图的 alpha 从 0.0 调整为 1.0。例如 0.50。播放完视频后,将视图的 alpha 更改为 1.0。

    【讨论】:

      【解决方案5】:

      首先您的视频需要透明度:http://docs.info.apple.com/article.html?artnum=42599

      恕我直言:我认为 videocomponent 具有纯色背景色(黑色),您必须将其设置为 [UIColor clearColor] 您必须尝试,我不确定这是否有效。

      干杯

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-30
        • 2017-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-28
        • 1970-01-01
        相关资源
        最近更新 更多