关于python:视频黑屏检测

27次阅读

共计 1679 个字符,预计需要花费 5 分钟才能阅读完成。

小视频已深刻千家万户,抛开商业推广和多样的玩法,视频品质无疑是金字塔的根基。基于业务需要,对小视频品质提供了一系列的检测保障。

黑屏检测

1,ffmepg

相干参数阐明:

  • blackdetect filter :
    查看视频中纯彩色画面的时间段。在查看视频中的过渡片段、广告或者非法数据等黑屏画面时很无效。输入数据蕴含黑屏片段的起始点,以及黑屏时长,单位为秒。
  • black_min_duration, d:
    设置黑场工夫阈值,只有黑场的间断工夫大于门限值才认为是黑场视频。阈值大于等于 0,默认 2.0。
  • picture_black_ratio_th, pic_th:
    设置黑场的判断阈值,nb_black_pixels/nb_pixels(黑场像素 / 总像素),该值为百分比,大于等于此阈值认为此帧图片是黑场. 默认值 0.98.
  • pixel_black_th, pix_th:
    设置黑场像素的判断阈值,默认值 0.10。依据此阈值计算相对阈值,低于相对阈值的像素认为是黑场像素点。
    相对阈值计算公式如下:
    absolute_threshold = luminance_minimum_value + pixel_black_th * luminance_range_size
    luminance_range_size and luminance_minimum_value 依赖输出视频的格局, 对于 YUV full-range 其范畴是 [0-255],对于 YUV non full-range 其范畴是 [16-235];
  • 例子:
    blackdetect=d=2:pix_th=0.00
    该命令设置彩色像素判断的阈值为 0,查看黑屏时长不小于 2s 的片段。

因为间接应用 python 执行获取不到 ffmpeg 打印进去的流日志,所以这里采纳了 ffreport 的形式,将日志输入到文件里,再解析文件获取黑屏片段。
大家有什么好的方法欢送领导!

import os
import subprocess
from time import time, sleep
def black_detect(video):
    report_file_name = './log/blackvideo-{}.log'.format(int(time()))
    cmd = 'FFREPORT=file={}:level=32 ffmpeg -report -v quiet -i {video} -vf blackdetect=d=0.5:pix_th=0.40:pic_th={pic_th}  -f null -'.format(report_file_name, video=video, pic_th=0.85)
    try:
        popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
        popen.wait()
        # stdout, stderr = popen.stderr
        sleep(0.5)
    except Exception as e:
        print(e)
    if os.path.exists(report_file_name):
        with open(report_file_name, 'r') as rf:
            content = rf.readlines()
        black_duration = {}
        part = 1
    for con in content:
        if 'black_start' in con:
            print(con)
            black_info = con.split(' ')[-1:-4:-1]
            part_black_info = dict(map(lambda x: x.replace('n', '').split(':'), black_info))
            black_duration[part] = part_black_info
            part += 1
        print(black_duration)
    else:
        print('检测失败...')

2,视频抽帧,进行图像检测

https://cloud.tencent.com/dev…

参考文档:
https://blog.csdn.net/ternenc…
https://blog.csdn.net/ternenc…

正文完
 0