【问题标题】:How To make Video Background transparent In ExoPlayer Android如何在 ExoPlayer Android 中使视频背景透明
【发布时间】:2022-01-31 19:48:46
【问题描述】:

我想在 exoplayer 中删除视频的背景颜色或使其透明,即如果视频背景颜色为红色,则使其透明,并且 exoplayer 后面的视图必须可见。

注意:我不想在 Exoplayer 背景中进行更改,只删除在 ExoPlayer 中播放的视频背景

我在谷歌上进行了很多搜索,但不幸的是没有得到正确的答案,请让我知道它是否可能以及它可能使用任何其他方式请指导我。

提前致谢

【问题讨论】:

  • 为什么不使用 ffmpeg。然后你删除背景,保存然后加载它

标签: java android exoplayer


【解决方案1】:

Exoplayer 并不是真正设计用于在显示时修改这样的视频文件。

鉴于背景可能会因帧而异,我怀疑您可能会发现很难找到能够在任何常规 Android 设备上足够快地做到这一点的任何解决方案,因为可能会有相当多的视频涉及处理。

如果您的背景是静态的,例如 Zoom 或类似电话会议中演讲者背后的房间,那么它可能会更容易一些,您可以查看 OpenCV 背景替换技术:

大多数示例都使用 Python,因此您必须探索 Android OpenCV 中的支持,这通常是一个子集,设置起来可能有点棘手(请查看 SO 上的问答)。在撰写本文时,Android OpenCV 在文档中仍然使用 Eclipse 而不是 Studio,这是需要注意的。

如果您可以在将视频流式传输到 Android 设备之前移除服务器端的背景,那么事情会变得更容易,您应该能够使用 Python 和上面链接的 OpenCV 技术找到最新的示例。

如果您的用例是“绿屏”背景示例,那么 ffmpeg 还可以为您提供过滤器以根据需要更改背景,包括使其透明。文档在这里:https://ffmpeg.org/ffmpeg-filters.html#toc-chromakey

它包括一个将图像中的绿屏更改为透明的示例(此示例中为 png 图像):

ffmpeg -i input.png -vf chromakey=green out.png

【讨论】:

  • 如果播放具有透明度的WEBM视频怎么办?它会以透明背景显示它,所以后面的内容会可见吗?
  • @androiddeveloper - 我自己没有尝试过,但有一个说明它可以工作,尽管有一些预处理:stackoverflow.com/a/67459184/334402
  • 我认为这不是一个好的解决方案。正如您所写,它需要预处理,因此它需要应用程序(ffmpeg)中的一个库来更改许可证。难道没有可以处理WEBM的解决方案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-16
  • 2021-01-07
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多