Моя видеокамера Samsung имеет выход firewire. Специально для неё я купил для компьютера (самую дешёвую) карту
firewire. Кстати, есть такие грабли: старая версия dvgrab
, входящая в состав Debian lenny, отказывается
работать на моём довольно-таки современном ядре 2.6.21.7
Поэтому мне пришлось скачать dvgrab
с
sourceforge и самостоятельно
его скомпилировать.
Перевод видео с видеокамеры на компьютер осуществляется командой
dvgrab --format dv2 film-
Пока работает dvgrab, компьютер очень заметно подвисает и это при том, что данные с видеокамеры я сбрасываю на
диск /dev/hdb, который больше никакими другими программами не используется. Что делать старенький у меня компьютер.
Результат: в рабочем каталоге создано много (около 12) файлов film-*.avi
размером примерно по гигабайту каждый.
Следующий этап обрезание и кодирование файлов.
Наверное, есть такие аккуратные люди, которые не снимают никакого мусора на видеокамеру. Я не из таких, и по этому
обрезание для меня неизбежно. Было время, когда я пытался делать это с помощью GUI-программ, но только программам
этим требовалось много ресурсов и были они нестабильны. Возможно, на новом компьютере последние версии этих красивых
программ и будут работать стабильно не знаю.
Реальный пример из жизни: допустим, мне надо вырезать из файла film.avi
три отрывка, где я снимал всякую ерунду:
0 мин 16 сек 0 мин 28 сек,
2 мин 58 сек 3 мин 21 сек,
3 мин 35 сек 3 мин 41 сек.
Я добиваюсь этого, вызывая mencoder
четыре раза:
После этого можно удалить
mencoder -ovc copy -oac copy -endpos 0:0:16 -o ~/1.avi film.avi ; \
mencoder -ovc copy -oac copy -ss 0:0:28 -endpos 0:2:58 -o ~/2.avi film.avi ; \
mencoder -ovc copy -oac copy -ss 0:3:21 -endpos 0:3:35 -o ~/3.avi film.avi ; \
mencoder -ovc copy -oac copy -ss 0:3:42 -o ~/4.avi film.avi
film.avi
.
Заключительная обработка: объединяем наши файлы *.avi
(полученные на предыдущем этапе) в один фильм. Одновременно ужимаем видео и звук:
Итог: результат творчества записан в
time ( \
mencoder -oac lavc -vf pp=lb,pullup,softskip,crop=710:566:10:4,hqdn3d=2:1:2 -ovc lavc \
-lavcopts vcodec=mpeg4:vbitrate=1700:v4mv:qns=1:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=1 \
-o /dev/null *.avi && \
mencoder -oac lavc -vf pp=lb,pullup,softskip,crop=710:566:10:4,hqdn3d=2:1:2 -ovc lavc \
-lavcopts vcodec=mpeg4:vbitrate=1700:v4mv:qns=1:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=2 \
-o ~/new.avi *.avi )
~/new.avi
Замечания:
В списке параметров mencoder
после -vf
перечисляются применяемые фильтры.
Я понимаю назначение только двух из них:
Видеофильтр pp=lb
борется против горизонтальных полос, возникающих при съёмке быстро движущихся объектов.
(Я его использую также и при просмотре ТВ.)
Видеофильтр crop=710:566:10:4
обрезает тёмные поля; его численные параметры следует выбирать индивидуально для каждой видеокамеры.
Результат сжатия примерно в 15 раз меньше оригинала.
Звук кодируется бесплатным (в отличие от mp3
) кодировщиком mp2
, который вроде как почти не отстаёт от несвободного mp3
.
Команда time
меряет полное время кодирования.
Кодирование 14-минутного фильма на моём домашнем компьютере (Sempron 2600+, 3200 bogomips) выполняется порядка 178 мин usertime (206 мин realtime).