【问题标题】:why transparent drawbox does not work on some video sources?为什么透明drawbox不适用于某些视频源?
【发布时间】:2019-05-28 17:21:21
【问题描述】:

它适用于 smptebars、smptehdbars、testsrc 和 testsrc2,但不适用于其他来源。

ffplay -loglevel trace -f lavfi -i testsrc=r=1:d=1:size=800x600 -vf "drawbox=x=0:y=0:w='iw/2':h='ih/2':t=max:c=white@0.5"

当我尝试这个时,我可以看到透明框。但是如果我使用颜色,并且 rgbtestsrc 源它不起作用。

ffplay -loglevel trace -f lavfi -i rgbtestsrc=r=1:d=1:size=800x600 -vf "drawbox=x=0:y=0:w='iw/2':h='ih/2':t=max:c=white@0.5"
ffplay -loglevel trace -f lavfi -i color=c=red:r=1:d=1:size=800x600 -vf "drawbox=x=0:y=0:w='iw/2':h='ih/2':t=max:c=white@0.5"

查看跟踪输出后,似乎透明度仅适用于 rgb24 和 yuv 格式(yuv444p、yuv420p 等),这令人惊讶,因为我们通常假设 rgba 源可以使用 alpha 通道。

下面的命令把pix_fmt改成rgb24,就可以了:

ffplay -loglevel trace -f lavfi -i rgbtestsrc=r=1:d=1:size=800x600 -vf "format=pix_fmts=rgb24,drawbox=x=0:y=0:w='iw/2':h='ih/2':t=max:c=white@0.5"

下面的命令把pix_fmt改成rgba,那就不行了:

ffplay -loglevel trace -f lavfi -i rgbtestsrc=r=1:d=1:size=800x600 -vf "format=pix_fmts=rgba,drawbox=x=0:y=0:w='iw/2':h='ih/2':t=max:c=white@0.5"

这是为什么呢?我该如何解决这个问题?

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

    这里无法重现。您正在使用旧版本的 ffmpeg。 drawbox 中存在与透明度有关的错误,但已在 2017 年 12 月修复。

    【讨论】:

    • 我在 3.4.6 我猜这个错误仍然影响这个版本。那我试试 4.x。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 2015-06-22
    • 2020-10-29
    相关资源
    最近更新 更多