Найти в Дзене

Малоизвестный, но интересный и мне полезный способ автоматической обработки видео

Оглавление

Сразу оговорюсь, что статья пишется в ознакомительных целях. Когда-то было легко приобрести коммерческую версию за небольшой донат, что я и сделал в 2014 году, теперь же в условиях санкций платежи за границу проблематичны, а настройка не так проста, как может показаться. Да, какие-то навыки работы с python ещё должны быть.

Кратко о предпосылках к применению и вообще о чём речь

Насколько помню, писал уже, что старый SmartTV обладает у меня целым рядом недостатков: принципиально не поддерживает https, только http, да и то в ограниченном виде: даже когда можно было получить доступ по этому протоколу, воспроизведение сколько-нибудь длительного видео с сайта телеканалов неизбежно вызывало зависания, а перемотка в этом режиме была практически невозможна. Она и сейчас не удобна на нём и во всех других режимах. Решение в этой части: скачиваю видео на компьютер при помощи yt-dlp, затем скриптом режу на части, не вызывающие проблем при перемотке к нужному фрагменту, при помощи платной версии Comskip. Это ПО предназначено для автоматического вырезания рекламы из видео (ограничения бесплатной версии найдёте сами). Платная версия прекрасно справляется с задачей у меня, я не жалею, что за хорошую программу заплатил не такую уж большую сумму в своё время. Если кто читает, что я здесь пишу, то заметил, наверно, что я придерживаюсь последовательно линии, что за хорошую работу нужно платить. И да, у меня нет "пиратского" софта: всё либо купленное, либо официально бесплатно.

Теперь о том, на каком видео это у меня работает и как

Видео бывает действительно длинным. Например, недавний "Воскресный вечер с Владимиром Соловьёвым" имеет длительность больше трёх часов. Вот эти видео и обрабатываю. Как правило, эта передача делится на пять частей, разделённых рекламой, но на сайт "Смотрим" выкладывают уже без неё. Автоматическая разбивка возможна, поскольку между частями на несколько секунд меняется логотип канала. Вполне достаточно, чтобы достичь цели. Да, для её достижения очень быстро набросал ещё скрипт. В нём как минимум нет должной проверки переданных аргументов

file_name = sys.argv[1]

и вместо аккуратной обработки избыточных данных используются операции над множествами

result=list(set(found))

Но у меня всё работает, благо, если быть достаточно внимательным, допустить ошибку трудно. Хотя, конечно, не для коммерческого использования такие "костылики".

Гораздо большее время заняло детектирование и сохранение логотипа (а он хранится в виде текстового файла, содержащего своеобразную "псевдографику" из символов -|+ и пробелов) и настройка по описанию из справки. Там нужно в ini файле очень точно подобрать параметры. Как бы то ни было, у меня всё сейчас работает более или менее хорошо. Лишние главы порой появляются из-за встроенных фрагментов видео, но это практически не вызывает затруднений.

Сначала скачиваю видео в наилучшем качестве с сайта "Смотрим" (или hls в десяток потоков, или сразу в mp4), потом обрабатываю скачанное видео скриптом, а затем легко перемещаясь по главам в меню vlc, делю при помощи FFmpeg уже на части. Механизм описан у меня в статье Как быстро и бесплатно перекодировать видео в mp4 на компьютере с видеокартой GeForce.

UPD: иногда запись передачи содержит интервью или другие встроенные видео и тогда на моих настройках .ini файла (которые обычно дают достаточно хороший результат), ошибочно обнаруживается слишком большое количество фрагментов. В этом случае помогает в оценках разбиения MediaInfo:

Ну и по скачиванию подробней написал.

Вот и всё примерно. Ещё раз напомню о принципах: Немного о себе, принципах, состоянии здоровья и финансов.