Обработка видео, записанного на miniDV камеру под Linux

Всем привет!
После большого перерыва, вызванного сдачей диплома в институте я вновь продолжу радовать Вас интересными статьями.

Сегодня мы рассмотрим вопрос кодирования видео с miniDV видеокамеры.

Задача: Сбросить видео на ПК и пережать его для последующего хранения.

Нам потрбуеться:
1) Ядро с поддержкой FireWire 1394 или v4l (смотря кто как будет скидывать видео)
2) Программа dvgrab (собственно с её помощью мы будем грабить видео с miniDV кассеты из консоли)
3) Программа mencoder (Входит в поставку с видео плеером mplayer)
4) Программа avimerge для склеивания нескольких avi файлов в один (входит в состав transcode)

Грабим видео:

Для начала нам потребуется подключить видеокамеру к ПК.
В случае с FireWire 1394 никаких драйверов нам не нужно, просто подключаем и работаем.
В случае подключения камеры по средствам USB нам нужно определиться с её поддержкой ядром Linux.
Как мы уже знаем, сделать это можно с помощью команды lsusb и затем скомпилировать подходящий модуль ядра.
Я решил упростить себе жизнь и просто купил внешнюю карту FireWire 1394.

Для начала установим пакет dvgrab

Затем нам нужно перемотать miniDV кассету на начало и подключить камеру к ПК.

Теперь перейдём к процессу сграбливания видео:

Утилита dvgrab имеет множество полезных параметров, давайте рассмотрим некоторые из них:

-a, -autosplit - Этот параметр отвечает за нарезку видеофайлов, т.е dvgrab будет резать видео автоматические на куски, между нажатиями на кнопку запись/стоп. Это очень удобно если Вы хотите рассортировать сюжеты.

-f, -format - Позволяет в ручную задать формат видео потока, если параметр не задан, то dvgrab автоматически попытается определить формат данных. Если у Вас hdv камера то нужно обязательно указать этот параметр.

-F, -frames - Количество кадров

-s, -size - Устанавливает лимит на видео файл. По умолчанию установлен размер 1024 мегабайта, что удобно если Вы монтируете DVD диск.

-V, -v4l2 Если Вы планируете скинуть видео через драйвер v4l2

О остальных параметрах Вы можете почитать man dvgrab

В моём случае я воспользовался вот такой конструкцией:
dvgrab --format raw -size 20000 cam.dv

Поскольку размер одной кассеты около 13 Гб, то всё видео будет сохранено одним файлом, это для удобства кодирования.

Кодируем видео:

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

Первый проход:
mencoder cam001.dv -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1800:vhq:vpass=1:vqmin=1:vqmax=31 -oac mp3lame -lameopts vbr=2:q=7 -o mpeg4.avi -vf field,scale=768:576 -aspect 4:3

Второй проход:
mencoder cam001.dv -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1800:vhq:vpass=2:vqmin=1:vqmax=31 -oac mp3lame -lameopts vbr=2:q=7 -o mpeg4.avi -vf field,scale=768:576 -aspect 4:3

При таких параметрах 1 час видео занимает около 800 Мб
При необходимости Вы можете изменить битрейд видео и звука для достижения желаемого качества.

Склеиваем видео:

Для склеивания видео в один большой файл мы воспользуемся утилитой avimerge.
Делается это очень просто:
avimerge -o com.avi -i 1.avi 2.avi 3.avi

Где com.avi - это итоговый видео файл, а 1.avi 2.avi 3.avi - это видео файлы, предназначенные для склеивания.

После обработки полученное видео Вы можете нарезать на диск или разместить в интернете.
Из видео хостингов я рекомендую воспользоваться www.veoh.com
На нём нет ограничения как по размеру видеофайла, так и по продолжительности самого видео.