1

Просто попадаете в FFmpeg и хотите использовать фильтр для проведения длительного тестирования качества / стабильности видео. До сих пор я использовал фильтр смены сцены, установленный на очень низкую разницу (0,000005), чтобы обнаружить один кадр известных небольших артефактов из видеопоследовательности, не содержащей других известных движений. Я вставил небольшой артефакт размером 2 на 8 пикселей в каждый из нескольких кадров в нескольких разных местах, чтобы обеспечить контроль, действительно ли обнаружение работало. Может успешно обнаруживать несколько вставленных кадров в несжатом видео в течение часа зацикленного контента через измеряемую систему, но должен фильтровать пакеты по захваченным файлам. Слегка сжатый контент тоже в порядке, как и ProRes - но любая длинная последовательность GOP затопляет небольшие артефакты, которые мы хотим гарантировать, что они отсутствуют (кроме тех, которые мы вставляем для «контроля» ...)

У меня вопрос: есть ли простой способ автоматизировать эту идею для работы с непрерывным видео, а не для пакетной фильтрации захваченных файлов? В настоящее время я записываю .png каждого обнаруженного кадра с ошибкой, чтобы убедиться, что то, что я обнаружил, - это то, что я вставил - не больше и не меньше ...

Заранее спасибо за любые указатели

ОБНОВЛЕНИЕ: Мы разработали тест на основе потока с использованием порта INPUT Decklink (HDMI HDMI ...) для получения необработанного видео в фильтр FFMPEG, который обнаруживает изменения сцены. Порог детектора установлен на достаточно низком уровне (0,000005), что позволяет его фильтру «Сумма абсолютных разностей» улавливать небольшие артефакты изображения длительностью всего в один кадр и всего несколько пикселей. Наш цикл ProRes, работающий на HyperDeck, воспроизводит последовательность изображений с неподвижным синим полем с одной-пятью белыми или черными точками на кадр, и эта инъекция известных кадров с аномалией происходит только один раз за цикл продолжительностью один час в качестве элемента управления для проверки фильтра работает как надо. Этот поток проходит через наш тестируемый продукт, а затем анализируется с помощью комбинации фильтров Decklink и FFMPEG. Мы, конечно, наблюдаем за отсутствующими кадрами эталонной аномалии, которые, как мы знали, были введены, и / или любыми другими обнаруженными кадрами, указывающими на ошибку обработки в нашей тестируемой системе. Мы можем изучить сохраненные фреймы .png, чтобы увидеть природу любой аномалии.

Все работает должным образом и стабильно для длительных тестовых прогонов, но, кажется, есть проблема, если мы остановим анализ и попытаемся перезапустить. Возможно, что-то в Decklink не инициализируется должным образом. В настоящее время единственным выходом является отключение рабочей станции, содержащей Decklink, ожидание полной разрядки блоков питания, а затем снова включите и перезапустите приложение фильтрации FFMPEG.

Кто-нибудь знает, как инициализируется это начальное значение? Это установлено в Decklink или в FFMPEG??

Вот что показывает командное окно в ffmpeg, когда мы пытаемся запустить процесс заново без шага выключения:

C:\Users\cvandusen> ffmpeg -f dshow -video_size 1280x720 -rtbufsize 702000k -framerate 60 -i video = "Видеозахват Decklink" -vf "select = gt(scene\, 0.000005)" -vsync vfr test2% 03d.png

ffmpeg version N-89803-g856b7cae9f Copyright (c) 2000-2018 разработчики FFmpeg, созданные с конфигурацией gcc 7.2.0 (GCC): --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib - enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable -libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable -libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc - -enable-libmysofa --enable-libspeex --enable-amf --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --enable-dxva2 --enable-avisynth --enable-libmfx libavutil 56. 7.100 / 56. 7.100 libavcodec 58. 9,100 / 58. 9.100 libavformat 58. 3.100 / 58. 3.100 libavdevice 58. 0.100 / 58. 0.100 libavfilter 7. 11.101 / 7. 11.101 libswscale 5. 0,101 / 5. 0,101 образец 3. 0,101 / 3. 0,101 libpostproc 55. 0.100 / 55. 0.100 Вход # 0, dshow, из 'video = Decklink Video Capture': Длительность: н / д, старт: 71582788.364437, битрейт: н / д Stream # 0: 0: видео: rawvideo (HDYC / 0x43594448), uyvy422 (телевидение) , 1280x720, 60 кадров в секунду, 60 тбр, 10000 тыс. Тбн, 10000 тыс. Тбк Отображение потока: поток # 0: 0 -> # 0: 0 (rawvideo (собственный) -> png (собственный)) Нажмите [q], чтобы остановить, [?] для справки Вывод # 0, изображение2, в '20180215pm% 03d.png': метаданные: кодировщик: Lavf58.3.100 Поток # 0: 0: видео: png, rgb24, 1280x720, q = 2-31, 200 кбит / с, 60 fps, 60 tbn, 60 tbc Метаданные: кодер: Lavc58.9.100 png frame = 0 fps = 0.0 q = 0.0 Lsize = время N / A = 00: 00: 00.00 битрейт = скорость N / A = 0x видео: 0kB аудио: 0kB субтитры: 0 КБ, другие потоки: 0 КБ, глобальные заголовки: 0 КБ. Переполнение заголовка: неизвестно. Выходной файл пуст, ничего не было закодировано (проверьте параметры -ss / -t / -frames, если они используются)

0