Форум

Форум (http://friends-forum.com/forum/index.php)
-   Видео Лаборатория (http://friends-forum.com/forum/forumdisplay.php?f=33)
-   -   Автоматическая вырезка статичных фрагментов в видеофайле (http://friends-forum.com/forum/showthread.php?t=128982)

LibertiX 17.06.2013 02:09

Автоматическая вырезка статичных фрагментов в видеофайле
 
Доброго времени суток! У меня возник такой вопрос:
Умеет ли VirtualDub обрезать зависшие фрагменты в видео в автоматическом режиме, или может есть какой нибудь плагин для этого?

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

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

P.S. Как вариант, может это умеет другая программа, если знаете, подскажите, буду очень признателен. :)

Дополнено:
Альтернатива кол-ву кадров может быть настройка временного интервала, тоже подойдёт. Допустип картинка обездвижена более чем пол секунды, значит этот фрагмент обрезается.

AlexStorm 17.06.2013 05:33

Цитата:

Сообщение от LibertiX (Сообщение 1061267676)
Умеет ли VirtualDub обрезать зависшие фрагменты в видео в автоматическом режиме

Такого плагина нет.
Можно вырезать вручную, выделяем фрагмент и нажимаем Delite, потом сохраняем в Direct Stream Copy.

LibertiX 17.06.2013 08:15

Цитата:

Сообщение от AlexStorm (Сообщение 1061267680)
Такого плагина нет.
Можно вырезать вручную, выделяем фрагмент и нажимаем Delite, потом сохраняем в Direct Stream Copy.

По 20-60 вырезок с каждого видео делать это уйму времени нужно, дурная работа. Вручную неподходит. Может есть альтернативный метод или программа, незнаете?

Уверен что нечто подобное есть, может не в этой программе...В любом случае спасибо что откликнулись! )

AlexStorm 17.06.2013 08:57

Цитата:

Сообщение от LibertiX (Сообщение 1061267684)
Вручную неподходит.

Придумать алгоритм "объясняющий" проге чем съёмка статично висящей картины на стене художественной выставки отличается от "замороженного" кадра (имхо) невозможно. Только "рУчками"...
А чтобы исключить "заморозку" при захвате - нужно исключить процесс одновременного кодирования "на летУ" входящего потока и захватывать видео в RGB, с последующим перекодированием.
Прогу иную, умеющую "отличить" и вырезать автоматом бракованные кадры я лично не знаю.

LibertiX 17.06.2013 11:33

Всё немного не так :)))

Цитата:

Сообщение от AlexStorm (Сообщение 1061267686)
Придумать алгоритм "объясняющий" проге чем съёмка статично висящей картины на стене художественной выставки отличается от "замороженного" кадра (имхо) невозможно. Только "рУчками"...

Отличить программно вполне возможно, пока что накапал немного, может вам интересно будет:

http://pctuner.ru/page-al-more2frame.html
Этот работает с дабом, но собрать файл неполучилось, возможно дело в кодеке.

http://aeclub.net/forums/index.php?showtopic=7072&hl=
Комментарии 12 и 13
Этот вариант буду пробовать, не совсем то, но лучше чем ничего.

Цитата:

Сообщение от AlexStorm (Сообщение 1061267686)
А чтобы исключить "заморозку" при захвате - нужно исключить процесс одновременного кодирования "на летУ" входящего потока и захватывать видео в RGB, с последующим перекодированием.

Это если бы я захватывал через Snagit к примеру, тогда да. А я захватываю лайвстрим целиком, подключаясь к потоку, это почти тоже что скачивать. Поэтому зависшие фрагменты вызваны пингом, соединением, или плохим каналом у стримера.

Цитата:

Сообщение от AlexStorm (Сообщение 1061267686)
Прогу иную, умеющую "отличить" и вырезать автоматом бракованные кадры я лично не знаю.

Так то да, бракованные кадры ни одна программа не сможет выявить, но мне то это и не нужно. Мне нужно выявить дубли кадров, и удалить их, то есть вырезать. Это может программа которая будет сравнивать попиксельно или побайтово, каждый кадр со следующим, и если он идентичен, то этот кадр удаляется.

AlexStorm 17.06.2013 18:34

Цитата:

More2Frame v1.0.1
Используя More2Frame v1.0.1 - получишь прогрессивный рассинхрон.
Это же не удаление нескольких кадров, а удаление целых, пусть и "замороженных", фрагментов. Не хочу вдоваться в подробности, но если "заморозка" бросается в глаза, то это как минимум 1-2 секунды, что = 25kps * 2 sec = 50 кадров. Если у тебя таких фрагментов 30-60 - посчитай сколько вырежется видео при нетронутой звуковой дороге...
Ибо
Цитата:

Алгоритм работы jobs-скрипта, создаваемого программой, прост:
1. Извлекается звуковая дорожка.
2. По-кадрово анализируется видео и разбивается его на фрагменты. Фрагменты сшиваются (без звука).
3. К сшитому из фрагментов видео добавляется исходная звуковая дорожка.
Цитата:

Сообщение от LibertiX (Сообщение 1061267692)
Комментарии 12 и 13

По второй ссылке вообще маразм, т.к. вынутые из видео кадры могут иметь одинаковый размер, да и если кто сталкивался с подобным (напр. ретушированием кадров) - знает как это "геморойно"... Мне больше понравился там пост №11, хотя в Premiere после всех манипуляций с тайм-лайном идёт процесс полного кодирования, как и в Дабе...

Вывод: Даб + руки + полное кодирование = отличный результат.

LibertiX 17.06.2013 22:02

Цитата:

Сообщение от AlexStorm (Сообщение 1061267706)
Это же не удаление нескольких кадров, а удаление целых, пусть и "замороженных", фрагментов. Не хочу вдоваться в подробности, но если "заморозка" бросается в глаза, то это как минимум 1-2 секунды, что = 25kps * 2 sec = 50 кадров. Если у тебя таких фрагментов 30-60 - посчитай сколько вырежется видео при нетронутой звуковой дороге

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

Цитата:

Сообщение от AlexStorm (Сообщение 1061267706)
По второй ссылке вообще маразм, т.к. вынутые из видео кадры могут иметь одинаковый размер, да и если кто сталкивался с подобным (напр. ретушированием кадров) - знает как это "геморойно"... Мне больше понравился там пост №11, хотя в Premiere после всех манипуляций с тайм-лайном идёт процесс полного кодирования, как и в Дабе...

По мимо размера тут ещё идёт проверка по хешу и по самому файлу, вот пункты из программы Duplicate File Detective v4.1.54
- Сравнивать размер файлов
- Сравнивать содержимое файлов (Хеширование)
- Подтверждение побайтового совпадения содержимого (очень медленно)

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

Цитата:

Сообщение от AlexStorm (Сообщение 1061267706)
Вывод: Даб + руки + полное кодирование = отличный результат.

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

P.S. Случайно нет мыслей почему More2Frame v1.0.1 обрабатывал минут 15 файл, и в итоге на выходе ничего не появляется, кроме файла в 3 кб и текста с кодом внутри него? Кодек не переваривает?

AlexStorm 18.06.2013 05:30

Цитата:

Сообщение от LibertiX (Сообщение 1061267712)
на это будет уходить далеко не один час, ежедневно

А сколько времени будет уходить на разрезку видео на кадры + анализ на дубликаты прогой Duplicate File Detective + переименование оставшихся кадров + сборка + просмотр результата ... 8O
Цитата:

Сообщение от LibertiX (Сообщение 1061267712)
Случайно нет мыслей почему More2Frame v1.0.1....

C подобной проблемой не приходилось сталкиваться, т.ч. "мыслей" нет... может кто-то ещё отпишется :-)


ЗЫ. Так как разговор идёт о принципе "вообще", не привязаным конкретно к VirtualDub'y - выделил вопрос во отдельную тему.

VaG 18.06.2013 10:26

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

LibertiX 18.06.2013 10:26

Уже кое что попробовал, выскажу свои мысли.

Цитата:

Сообщение от AlexStorm (Сообщение 1061267713)
А сколько времени будет уходить на разрезку видео на кадры + анализ на дубликаты прогой Duplicate File Detective + переименование оставшихся кадров + сборка + просмотр результата ... 8O

Времени действительно ушло немало))) Сразу скажу, в АЕ и Adobe Pemiere Pro опыта работы нет абсолютно, немного лишь знаю Virtual Dub и есть понятие принципов работы некоторых функций. Например тоже попиксельное сравнение, я был уверен что это есть, и я нашёл. Но подводных камней как оказалось тоже немало...Разбивка на секвенцию ролика в 38 минут (около 57000 кадров) в Adobe Premiere заняло 20 минут, но разбивало оно как-то странно, приходилось вписывать разрешение ролика, выбирать формат и много другой ненужной шелухи. Да и разбивка вышла почему-то ориентируясь на 23 кадра в секунду вместо 25, в итоге кадров получилось на 2000 меньше. Почему это не сделал в дабе? Потому что там небыло JPG, только BMP, PNG и TGR. TGR я сразу отбросил, так как неуверен справится либо прога с поиском дублей. PNG никак не хотел работать в режиме "Прямопотокового копирования"(Direct Stream Copy), а другие режимы заставляли отдать на кадры аж 50 Гб. BMP работал в "прямопотоковом" но полученные кадры нехотели вовсе открыватся, попробовал закинуть в After Effect, он выписал ошибку.

Идём дальше, получил кадры с APP, запустил Duplicate File Detective, (не сразу правильно настроил :) ), но когда начал проверку, сильно удивился! Программа нашла ~40000 дубликатов, хеш соответствовал, размер и всё остальное тоже! (Проверка шла минут 5). Сначало непонял юмора, но решил продолжить ради интереса, в итоге осталось ~17000 кадров из 56тыс. С переименованием почти не возникло проблем, Total Commander делал это минут 25 и выбил ошибку где то ближе к концу, я решил попробовать переименовать средствами Windows. AE нормально воспринял данный тип переименовки, да и заняло это всего полторы минуты. Чтож, закинул кадры в AE, долго разбирался как получить цельный файл с теми же характеристиками и разрешением, но сделал. Первый раз на 70% получил ошибку, со второго раза получил видеоролик. (рендер занял 9 минут).

Итог: Ролик получился супер плавным и подвижным, но в местах где были застывшие фрагменты остались поддёргивания, примерно по 3-5 поддёргиваний в течение примерно 1-1,5 секунды. В общем ролик однозначно стал лучше, но этого увы, мало! Длительность поддёргиваний не устраивала, а убрать их, снова выводит на ручную работу и много времени. Однако тут ещё есть с чем поэксперементировать...

P.S. Кстати немного позже я всё же решился сделать секвенцию через Virtual Dub в BMP, но программа несмогла найти ни одного дубликата, возможно не тот формат (время на разбивку в VD ушло в пределах 15 минут)

Итог №2: Порывшись по теме попиксельного сравнения, понял что это слишком ресурсоёмко и долго, но вероятность создания программы с оптимизированным алгоритмом есть, особенно если большую часть работы перенести с процессора на видеокарту. Немного позже если ничего не добьюсь с дефолтными решениями, то посоветуюсь с программистами. Если данный плагин или программку можно создать, и цена будет мне по корману, то тогда скорей всего закажу. К тому же помимо побайтового и попиксельного сравнения, есть идея вычисления висяков в видео путём анализа битрейта, так как теоретически там где один и тот же кадр повторяется, видеопоток будет ровным, соответсвенно часть этого потока, фрагмент, программа и будет вырезать.

Вывод: За 2 дня поисков и разбров могу точно сказать что, программ и плагинов которые бы могли автоматом вырезать повторяющиеся кадры немного. Но нет ни одной программы которая бы это делала в видео с тормозами в непредсказуемых местах, то есть другими словами, если повторяющихся кадров в одном месте 2 а в другом 15 и временные промежутки между ними варьируются то соответственно написать скрипт типа "убирать каждый 2 кадр, каждый 4 кадр, каждый 2 и 4 чередуя" непоможет, а угадать алгоритм невозможно. Есть лишь один вариант, ждать программу на других принципах работы, типа "вычисления побайтово, попиксельно или по битрейту"

Надеюсь кому-то это будет полезно, и этот кто-то не будет убивать столько времени на поиски таких решений :)))

Цитата:

Сообщение от AlexStorm (Сообщение 1061267713)
ЗЫ. Так как разговор идёт о принципе "вообще", не привязаным конкретно к VirtualDub'y - выделил вопрос во отдельную тему.

Да тут ей в общем то самое место, просто когда я задавал этот вопрос ещё непонимал всей сложности этой темы :)

Цитата:

Сообщение от VaG (Сообщение 1061267717)
а почему не решить начальную проблему. причину застывания картинки найдите и устрани ее

Потому что это проблема самого стримера, тут может быть всё что угодно: пинг, плохая веб-камера, скорость его интернета. Знаю я это потому что не все ролики получаются такими, одни смотрятся как достойный DVDRip, а другие как будто сняты на мобильник, ещё когда они только появились 5-15 кадров в секунду. Тут попросту не в моих силах решить эту проблему, она не на моей стороне. Вот так :)


Часовой пояс GMT, время: 12:04.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.