过滤视频中的黑帧(生成视频thumbnail时,跳过黑帧)
2019-07-19 本文已影响0人
GeorgeMR
一般我们在生成视频的 thumbnail 时,会直接截取首帧图片,当碰到视频首帧为黑帧的情况,导致 thumbnail 为一张全黑的图片,体验极差。
如何过滤掉视频中的黑帧,取得正常的视频帧。下面的 ffmpeg 语句可以帮助我们做到这件事:
ffmpeg -ss 0 -i input.mp4 -vframes 1 -f image2 -vf "blackframe=0,metadata=select:key=lavfi.blackframe.pblack:value=50:function=less" out.jpg
blackframe 滤镜获取所有视频帧的黑色像素占比信息;metadata 滤镜过滤掉视频帧黑色像素占比超过50%的帧。
下面为两个滤镜的详细介绍:
-
blackframe
判断黑帧,输出内容包括检测到的帧索引、黑色像素占比、文件中的偏移、以秒为单位的时间戳、帧类型、上一个关键帧的索引。
parsed_blackframe.png
接受参数:
- amount:像素为黑在帧中的占比百分数,默认为98
- threshold, thresh: 像素为黑的判断标准,默认为32
0即检测所有帧
-
metadata
处理帧元数据。
接受参数:
-
mode
- select:如果
key
和value
都设置,旋转匹配的帧。只设置key
, 选择metadata中包含这个key的帧 - add: 添加
- modify:修改
- delete:删除
- print:打印
- select:如果
-
key
-
value
-
function
用于比较 metadata 中的 value 值
same_str、starts_with、less、equal、greater、expr
metadata=select:key=lavfi.blackframe.pblack:value=50:function=less 意思是筛选黑色像素占比小于50%的帧
-