过滤视频中的黑帧(生成视频thumbnail时,跳过黑帧)

一般我们在生成视频的 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:如果 keyvalue 都设置,旋转匹配的帧。只设置 key, 选择metadata中包含这个key的帧
      • add: 添加
      • modify:修改
      • delete:删除
      • print:打印
    • key

    • value

    • function

      用于比较 metadata 中的 value 值

      same_str、starts_with、less、equal、greater、expr

    metadata=select:key=lavfi.blackframe.pblack:value=50:function=less 意思是筛选黑色像素占比小于50%的帧

你可能感兴趣的:(过滤视频中的黑帧(生成视频thumbnail时,跳过黑帧))