【发布时间】: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