На главную страницу
Захвата  видео в ОС Linux.

Цель: Получение максимально качественного цифрового видео из аналогового (камера видеомагнитафон)
 
Средства:

1. Компьютер (nforce 2 чипсет встроенный звук, AMD Atlon XP 2500+, 256Mb, nvidia geforce 2 mx400,HHD Barracuda 7200.7 - 80 Gb, тюнер Flyvideo 3000 на saa7134, LG1810B)

2. Камера Samsung формат hi8.


Soft средства:
1.Linux от Red Hat - Fedora Core  2 http://fedora.redhat.com/
2.Обновление ядра linux (2.6.7) самое свежее на http://kernel.org/
3.Установленные свежие кодеки ( использую xvid 1.0.2 свежее на http://www.xvid.org/)
4.Установленный Mplayer 1.0 pre5 c http://www.mplayerhq.hu/

И так захват:

РАЗРЕШЕНИЕ при захвате установим по максимуму 768x576. Хотя я где-то встречал утверждение что hi8 более 400 линий не выдаёт и не имеет смысл выставлять больше, НО при визуальном сравнении получается лучшее качество при большем разрешении.

КОДЕК - для получения качества близкого к оригиналу воспользуемся кодеком который сжимает без потерь - huffyuv. Он входит в mplayer  в пакете lavc. Требования к размеру свободного места (1ч~40 ГБ) и скорости HDD намного выше чем в  DivX но процессор загружает меньше.

ЗВУК -  для исключения каких либо проблем со сжатием звука для захвата будем пользовать в pcm формат.

СПРАВИТСЯ ЛИ СИСТЕМА Все выбранные параметры  хорошо повлияют на качество захвата,при этом  нагрузка на процессор не сильно большая ( у меня окло 45 %), но поток будет большой и нужно чтобы система успела записать его на винт. Для этого  желательно что бы винт был побыстрее, был включен режим DMA (можно посмотреть  hdparm) .Файловую систему я выбрал XFS - нареканий нет.
Так же исключить влияние "ненужных" процессов, например на время захвата остановить демон: /etc/init.d/crond stop, отключить скринсаверы....

Собственно сам скрипт :

 mencoder -tv   fps=25:driver=v4l2:device=/dev/video0:alsa:width=768:height=576:input=4:amode=0: \
 
-ovc lavc -lavcopts vcodec=huffyuv -srate 48000 -oac pcm  \
 
tv:// -o /mnt/big/out.avi

C захватом всё мы получили /mnt/big/out.avi.

ОБРАБОТКА

Теперь мы имеем очень большой файл с хорошим качеством.
Если надо редактировать, вырезать, добавлять эффекты можно использовать различные программы (напр http://fixounet.free.fr/avidemux/) .
Я же приведу пример попроще когда  мы хотим: обрезать неровные края, деинтерлейс, пережать видео и аудио.
Для определения обрезаемых краёв воспользуемся :

mplayer -vop cropdetect  /mnt/big/out.avi

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

Скрипт сжатия в 3 прохода  :

in_file=/mnt/big/out.avi
out_file=xvid_out.avi


crop_size=672:560:22:0


start_pos=0
end_pos=20

#Quality
bit_rate=3000

echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo "1 step (3) "
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"

mencoder -ss $start_pos -endpos $end_pos -ovc frameno -srate 44100 \
 -oac mp3lame -lameopts cbr:br=192:mode=3:aq=0 $in_file  -o frameno.avi

echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo "2 step (3) "
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"

mencoder -ss $start_pos -endpos $end_pos -force-avi-aspect 4/3 -vf lavcdeint,crop=$crop_size \
-ovc xvid -xvidencopts pass=1:bitrate=$bit_rate -oac copy $in_file -o /dev/null 

echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo "3 step (3) "
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
mencoder -ss $start_pos -endpos $end_pos  -force-avi-aspect 4/3 -vf lavcdeint,crop=$crop_size \
-ovc xvid -xvidencopts pass=2:bitrate=$bit_rate -oac copy $in_file -o $out_file

Описание:
 

 start_pos,end_pos  параметры указывающие с какой секунды и какой длительности кусок мы хотим конвертировать
    Можно использовать для тестирования или разрезания.

 Параметр bit_rate для  хорошего качества видео получаемого с аналоговой камеры не  меньше 3000 иначе заметно ухудшение.
 Подробнее о параметрах - man mencoder.

Mencoder использую потому-что понравилось как он кодирует кодаком  huffyuv, к тому же всегда под рукой идёт  вместе с mplayer-ом

Другие программы для захвата:
transcode - http://zebra.fh-weingarten.de/~transcode/
ffv1rec -  входит в avidemux http://fixounet.free.fr/avidemux


Предложения, вопросы, исправления, дополнения  на webmailru@mail.ru


На главную страницу