視頻黑屏檢測

小視頻已深刻千家萬戶,拋開商業推廣和多樣的玩法,視頻質量無疑是金字塔的根基。基於業務需求,對小視頻質量提供了一系列的檢測保障。

黑屏檢測

1,ffmepg

相關參數說明:python

  • 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的方式,將日誌輸出到文件裏,再解析文件獲取黑屏片斷。
你們有什麼好的辦法歡迎指導!shell

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...ide

參考文檔:
https://blog.csdn.net/ternenc...
https://blog.csdn.net/ternenc...ui

相關文章
相關標籤/搜索