После большого перерыва, вызванного сдачей диплома в институте я вновь продолжу радовать Вас интересными статьями.
Сегодня мы рассмотрим вопрос кодирования видео с 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
На нём нет ограничения как по размеру видеофайла, так и по продолжительности самого видео.