Как удалить чëрные кадры из видео?

Sower
На сайте с 30.12.2009
Offline
659
319

 Оцифровываю старую VHS касету. Плëнка размагничена. Практически каждую секунду проскакивает пустой (чëрный) кадр. Можно ли чем-то автоматически удалить эти мусорные кадры из видео трека? Вырезать сотни кадров вручную, вариант так себе (мягко сказано). 

__________________Бесплатная накрутка ПФ: посещаемость, просмотры, переходы с поисковиков по ключевикам, итд.
__________________Все посетители живые, не боты. (http://livesurf.ru/promo/80271)
L
На сайте с 25.12.2013
Offline
440
#1
Sower :

Оцифровываю старую VHS касету. Плëнка размагничена. Практически каждую секунду проскакивает пустой (чëрный) кадр. Можно ли чем-то автоматически удалить эти мусорные кадры из видео трека? Вырезать сотни кадров вручную, вариант так себе (мягко сказано). 

Если только какие ИИ-ки есть на этот случай.
Недорогой, надежный и отзывчивый VPS хостинг ( https://vk.cc/cSd09I ) Проверенная пуш партнерка с ежедневными выплатами ( https://vk.cc/9wLSrL )
alaev
На сайте с 18.11.2010
Offline
862
#2
Lastwarrior #:
Если только какие ИИ-ки есть на этот случай.

Кассета часа на три, токенов не хватит)))

ТС, что-то такое есть у ютуба. Попробуй туда залить и улучшить качество, если норм, то потом скачаешь.

Это не точно, просто совет.

Создание и продвижение сайтов - https://alaev.net , аудиты сайтов, контекстная реклама
S3
На сайте с 29.03.2012
Offline
368
#3
alaev #:
Это не точно, просто совет.
Зачем лезть советовать в том, в чем не разбираешься?
Я знаю как минимум 3 библиотеки, которые позволяют обрабатывать видео, в том числе и вырезать черные кадры:
OpenCV,  MoviePy,  FFmpeg
Кода там строк на 50 не более.
Sower
На сайте с 30.12.2009
Offline
659
#4
Sly32 #:
Зачем лезть советовать в том, в чем не разбираешься?
Я знаю как минимум 3 библиотеки, которые позволяют обрабатывать видео, в том числе и вырезать черные кадры:
OpenCV,  MoviePy,  FFmpeg
Кода там строк на 50 не более.

Поделитесь знаниями? 

K
На сайте с 14.01.2025
Offline
16
#5
Sower #:

Поделитесь знаниями? 

Да, такое можно автоматизировать 👍
Идея простая: идём по кадрам, считаем “насколько он чёрный”, и если кадр почти весь чёрный — просто не записываем его в новый файл.

Ниже — полностью рабочий пример на Python + OpenCV.


Что нужно установить
pip install opencv-python tqdm

tqdm только для красивого прогресс-бара, можно и без него.
Скрипт: вырезаем почти чёрные кадры



import cv2
import numpy as np
from tqdm import tqdm

# === НАСТРОЙКИ ===
INPUT_VIDEO = "input_vhs.mp4"       # исходный файл
OUTPUT_VIDEO = "output_no_black.mp4"  # результат

# Кадр считаем "чёрным", если:
BRIGHTNESS_THRESHOLD = 20       # максимум яркости (0–255), выше — уже не чёрный
NON_BLACK_RATIO_THRESHOLD = 0.02  # доля НЕчёрных пикселей (2%). Если меньше — выкидываем кадр

# === ОТКРЫВАЕМ ВИДЕО ===
cap = cv2.VideoCapture(INPUT_VIDEO)
if not cap.isOpened():
    raise RuntimeError(f"Не могу открыть файл {INPUT_VIDEO}")

fps = cap.get(cv2.CAP_PROP_FPS)
width  = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

fourcc = cv2.VideoWriter_fourcc(*"mp4v")  # можно поменять при необходимости
out = cv2.VideoWriter(OUTPUT_VIDEO, fourcc, fps, (width, height))

removed_frames = 0
kept_frames = 0

print("Обработка видео, это может занять время...")

for _ in tqdm(range(frame_count)):
    ret, frame = cap.read()
    if not ret:
        break

    # Переводим в оттенки серого
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Пиксели, которые НЕ считаются чёрными
    non_black = np.count_nonzero(gray > BRIGHTNESS_THRESHOLD)
    total_pixels = gray.size
    non_black_ratio = non_black / total_pixels

    # Если почти всё чёрное — кадр выбрасываем
    if non_black_ratio < NON_BLACK_RATIO_THRESHOLD:
        removed_frames += 1
        continue

    out.write(frame)
    kept_frames += 1

cap.release()
out.release()

print(f"Готово.")
print(f"Всего кадров:   {frame_count}")
print(f"Удалено кадров: {removed_frames}")
print(f"Оставлено:      {kept_frames}")
print(f"Результат: {OUTPUT_VIDEO}")
Этот простой скрипт не трогает аудио, он работает только с картинкой.
То есть на выходе у вас будет видео без звука.
Sower
На сайте с 30.12.2009
Offline
659
#6
Kuala #:

Да, такое можно автоматизировать 👍
Идея простая: идём по кадрам, считаем “насколько он чёрный”, и если кадр почти весь чёрный — просто не записываем его в новый файл.

Ниже — полностью рабочий пример на Python + OpenCV.


Что нужно установить

tqdm только для красивого прогресс-бара, можно и без него.
Скрипт: вырезаем почти чёрные кадры



Этот простой скрипт не трогает аудио, он работает только с картинкой.
То есть на выходе у вас будет видео без звука.

Спасибо, то что нужно. Со звуком разобраться не проблема. 

Наверное задам пару глупых вопросов. 

1. Какая системная оболочка нужна? 

2. Какая машина (пк, хост, дедик)? 

Сергей Новиков
На сайте с 13.05.2025
Offline
13
#7
alaev #:

ТС, что-то такое есть у ютуба. Попробуй туда залить и улучшить качество, если норм, то потом скачаешь.

Улучшалки ютуба заточены на стабилизацию и цветокоррекцию для современных видео, а не на реставрацию аналоговых записей. Он скорее мыла добавит и посчитает помехи за дефект, который надо улучшить. Специфическую проблему черных кадров он точно не решит)
L
На сайте с 25.12.2013
Offline
440
#8
Sower #:

Спасибо, то что нужно. Со звуком разобраться не проблема. 

Наверное задам пару глупых вопросов. 

1. Какая системная оболочка нужна? 

2. Какая машина (пк, хост, дедик)? 

Поставь локально, нужна большая оперативка, не менее 4 ГБ, шустрый проц и современная видеокарта.
OS_ZP_UA
На сайте с 24.04.2018
Offline
93
#9

Да куча сейчас решений под ComfyUI, при этом не только удалить можно, но и дорисовать на основании соседних.

У всех одна проблема, нужна топовая видюха...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий