Автоматизация контроля качества для поиска поврежденных видеофайлов

У меня есть сотня визуально (!) поврежденных видеоклипов в формате H.264, «спрятанных» в большом наборе файлов. Поскольку они были повторно перекодированы, теперь все они технически в порядке и будут воспроизводиться нормально, но на каждом втором кадре будут мигать зеленым цветом.

Я заметил, что если я запускаю файл через QCTools, то могу идентифицировать их по значению «временных выбросов», поскольку каждый второй кадр резко отличается от предыдущего (из-за этих зеленых вспышек).

Я хотел бы указать QCTools на каждый файл в этом большом наборе, но только:

  • обрабатывать небольшую его часть - нет времени просматривать каждый файл за всю его длительность
  • получить только одно значение - временные выбросы

Я просмотрел справку версии CLI QCTools и не смог найти способ сделать это. Есть ли у кого-нибудь другие идеи по идентификации этих файлов? Есть ли еще способ сделать это с помощью QCTools?

Если файл поврежден, поврежден ли он во всем видеопотоке или внутри есть хорошие части?
Если память не изменяет, QCTools в основном просто обертывает команды ffmpeg, поэтому вы можете выяснить, какая команда ffmpeg вычисляет значение временных выбросов, и автоматизировать это.
@MichaelLiebman Отличная идея, я поищу фильтр ffmpeg, который выполняет свою работу, и опубликую его здесь, если что-нибудь найду. Спасибо!
Зеленая вспышка звучит так, будто это может быть ошибка декодирования графического процессора. Проверьте файлы на другом компьютере, чтобы убедиться, что они действительно повреждены.

Ответы (1)

Поскольку QCTools оборачивает ffmpeg/ffprobe и использует фильтр signalstats, вот как добиться того, чего я хотел:

ffprobe -f lavfi movie="Bad.mp4","signalstats=tout" -read_intervals %00:01 -show_frames

-show_frames выводит сводку кадров в STDOUT. Он содержит значение, которое мне нужно:

ТЕГ:lavfi.signalstats.TOUT=0

-read_intervals позволяет мне обрабатывать только небольшую часть файла, чтобы получить статистику сигналов только из небольшой части файла.

Мы также можем проверить, как это делает QCTools, просмотрев исходный код здесь: https://github.com/bavc/qctools/blob/master/Source/GUI/BigDisplay.cpp#L844-L845 .