Ключевые слова:linux, mplayer, video, (найти похожие документы)
From: Дмитрий Гончаров <webmailru@mail.ru.>
Date: Mon, 16 Dec 2007 14:31:37 +0000 (UTC)
Subject: Захват видео в ОС Linux.
Оригинал: http://solaris2000.chat.ru/linuxcapt.html
Цель: Получение максимально качественного цифрового видео из
аналогового (камера видеомагнитафон)
Средства:
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
С захватом всё мы получили /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
Предложения, вопросы, исправления, дополнения на [email protected]