使用ffmpeg/ffprobe检测视频中的alpha通道的好方法。

6
在我的 Django 应用中,上传的视频文件会使用 ffmpeg 转码为特定格式。现在我需要一种可靠的方法来检测上传视频是否具有 alpha 通道。通常,我使用 ffprobe 获取视频元数据。你能告诉我正确的方向吗?
2个回答

8
你可以通过两步操作,使用ffprobe实现此目的。
#1
ffprobe -v 0 -select_streams v:0 -show_entries stream=pix_fmt -of compact=p=0:nk=1 "$FILE"

这将打印视频流的像素格式。所有带有alpha组件的像素格式在它们的名称中都有a,但并非所有带有a的格式都具有alpha通道。因此,请运行...
ffprobe -v 0 -show_entries pixel_format=name:flags=alpha -of compact=p=0  | grep "$PIX_FMT|" | grep -oP "(?<=alpha=)\d"

$PIX_FMT是在第一步中打印的读出值。结果将是10


1

这是我的做法。关闭横幅广告,将 -loglevel 设置为仅显示错误信息,并将结果传输到 grep 命令中以搜索 "pix_fmt"

ffprobe -hide_banner -loglevel error -show_entries \
   stream "input.png" | grep "pix_fmt"

返回:

返回pix_fmt=rgba

对于缺少 alpha 透明通道的 JPEG 或其他文件,预期输出为:pix_fmt=yuvj444p


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接