【问题标题】:ffmpeg prores with alpha to webm vp9 renders greyffmpeg prores with alpha to webm vp9 呈现灰色
【发布时间】:2018-07-01 21:35:07
【问题描述】:

我一直在尝试将使用 ProRes 4444HQ 编码的视频转换为 webm vp9。我创建了一个示例视频,其中包含 50% 的透明正方形。它应该是这样的:

但它看起来像这样:

这是我转换视频的方式:

ffmpeg -i square.mov -c:v libvpx-vp9 -b:v 0 -crf 31 square.webm

我尝试过更改色彩空间并选择不同的配置文件,但我似乎无法摆脱灰色阴影。是不是跟yuva转rgba有关系?

【问题讨论】:

  • 你是如何检查输入和输出的?可以分享一下源码吗?
  • 我正在将 webm 加载到 chrome 中并通过检查页面来更改背景。我可以在 quicklook 中预览 prores 版本。这是我的测试来源:dropbox.com/s/fgsk53rh7wqqkbt/original.mov?dl=0
  • 似乎是你的一个播放器的问题 - 可能是 quicklook:使用 ffplay,两个命令产生相同的输出 - ffplay original.mov -vf scale=alphablend=checkerboard,format=yuv420pffplay -vcodec libvpx-vp9 -i square.webm -vf scale=alphablend=checkerboard,format=yuv420p
  • 一种可能性是浏览器需要预乘像素 - 通过运行 ffmpeg -i square.mov -vf premultiply=inplace=1 -c:v libvpx-vp9 -b:v 0 -crf 31 square-premult.webm 进行测试
  • 这似乎仍然输出相同的结果。我刚刚将 Motion 中的一帧导出为 PNG,结果如下:dropbox.com/s/4nkuuxaumybc327/default-canvas-settings.png?dl=0 似乎导出正常,这可能与 ProRes 格式有关吗?

标签: ffmpeg webm vp9


【解决方案1】:

看起来 ProReS 具有预乘像素,并且 Motion 的 MOV 在 MOV 中设置了一个标志,指示但 WebM 没有/不能,因此浏览器不补偿。

跑步

ffmpeg -i square.mov -vf unpremultiply=inplace=1 -c:v libvpx-vp9 -b:v 0 -crf 31 square-premult.webm

应该生成一个 WebM,其中包含由浏览器正确处理的直像素。

【讨论】:

    猜你喜欢
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 2021-01-24
    • 2020-11-23
    • 2022-11-07
    • 2017-08-26
    • 2021-01-03
    相关资源
    最近更新 更多