Forums -> Работа с видео и аудио -> Редактирование видео
| Full Version

fedorchh
Иногда при захвате аналогового видео получаются кадры частично заполненные 'мусором'. Часто они довольно заметны при просмотре. По моему, оптимальным решением по соотношению простота/качество является замена такого кадра на один из соседних с ним. Так вот можно ли _БЫСТРО_ произвести такую замену в программе типа VirtualDub или NanDub? Мне пока в голову пришел только такой вариант: отрезать все что до этого кадра, все что после него, и отдельно кадр на который заменяется 'битый'. Потом склеить эти три части назад в один файл.
Set
Быстрее будет 'битый' кадр выкинуть.
Если 'мусора' много, то стоит попробовать какие-нибудь фильтры.
Serega_Aachen
можно всё. но проще вырезать)
fedorchh
Хотелось не только простой, но одновременно и _КАЧЕСТВЕННЫЙ_ способ. Если VirtualDub умеет резать клеить и удалять, то почемубы ему не уметь и вставлять (я думал, что просто не знаю как это сделать). Avisynth же умеет кадры дублировать.
Если просто удалить с десяток кадров, то уже будет заметная рассинхронизация со звуком, а резать кадры вместе со звуком можно далеко не всегда :(
VxWorks
Резать - это вообще проблема... Дуб режет по ключевым кадрам... Т.е. можно, конечно, все, что между ключевыми кадрами, выгнать в серию BMP, затем, заменить ненужный кадр на соседний, затем из BMP монтировать ролик, а потом ставить его между ключевыми кадрами... Геморрой еще тот.
На мой взгляд, такие вещи лучше делать в Вегасе.
fedorchh
VxWorks ты не совсем понял исходные условия, у меня некомпрессированное видео (точнее huffyuv) там все кадры ключевые :). И я спрашивал существует ли способ в ВиртуалДубе сдублировать кадр поверх соседнего битого быстрее чем:
QUOTE
отрезать все что до этого кадра, все что после него, и отдельно кадр на который заменяется 'битый'. Потом склеить эти три части назад в один файл


VxWorks
QUOTE
ты не совсем понял исходные условия, у меня некомпрессированное видео (точнее huffyuv) там все кадры ключевые

Если так, тогда конечно... Сорри :)

А другого способа, чем тот, который ты описал, я не знаю. :(
Set
QUOTE
Дуб режет по ключевым кадрам...

Так написано в Дубовском хелпе :) , ... однако режим Direct stream copy на самом деле более гибок,
вот описание: http://www.virtualdub.org/docs_processing
(раздел "I tried to cut out some frames in direct stream copy mode, and VirtualDub put them back in!?" )

VxWorks
Set
Интересная инфа... не знал :)
Для тех, кто не читает по-аглицки - если надо удалять фреймы, ни в коем случае не трогайте ключевые кадры, иначе Дуб восстановит их (и, соответственно) все фреймы между ними.
Jedd
Я еще обратил внимание, что если резать не по ключевым кадрам - то звук гулять начинает.
И кстати резать лучше Nandub'ом чем VirtualDub'ом.
Set
Для тех, кто не знает, развею некоторые "мифы" Direct stream copy: :)

в Дубовском хелпе пишется, что в данном режиме, обработка должна начинаться с ключевого кадра, и
в копируемом интервале должны присутствовать все кадры.
QUOTE
Disadvantages:

· Processing must begin on a keyframe.
· All frames in the range must be copied (no decimation).

В реальности же, этот режим более мощный и позволяет удалять любые кадры,
в том числе и из середины, НО ... если в получившемся видео присутствуют кадры,
для декодирования которых необходимы какие-либо удалённые кадры, то эти удалённые кадры
будут Дубом восстановлены автоматически.
(т.е. если порезать так, что от блока останется, скажем, один дельта кадр, то
ключевой кадр со всеми дельта кадрами перед этим одним, будут восстановлены,
для того чтоб его можно было декодировать.)