Главная  |  Регистрация  |  Правила Сделать стартовой  |  Добавить в избранное Поддержка  |  Контакты  |  RSS 2.0  
 
     
  Новости          Карта сайта
  Статьи      iPhone
  RSS 2.0 iPod




Панель управления
логин :  
пароль :  
   
Регистрация
Напомнить пароль?
 
  Навигация по сайту  
  Календарь  
 
«    Декабрь 2007    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
 
  Интерестное в сети  
  Обзор магазинов Киева

Обзор магазинов Киева Сеть спортивных магазинов розничной и оптовой продажи с широким выбором товаров для активного отдыха и занятий спортом «Спортмастер», сегодня является лидером продаж в данном ...

Двойная защита – ламинирование

Ламинирование появилось совсем недавно, но уже приобрело широкую популярность. В ходе этого процесса на различные документы наносится специальный защитный слой. Он влагостойкий, прочный, мало ...

Качественное продвижение web-сайта. Оптимизация сайтов.

Качественное продвижение web-сайта. Оптимизация сайтов. Продвигаться в сети можно различными методиками. Самые Популярные среди них: — Продвижение сайта и достижение маскимально высоких ...

Оригинальные наушники Skull Candy Double Agent

Новые наушники SkullCandy Double Agent способны воспроизводить аудиофайлы прямо с карт памяти SD, то есть не требуют подключения к MP3-плееру. Наушники поддерживают SD-карты любого размера, оснащены ...

Универсальный USB-адаптер для жестких дисков

Компания NewerTech представила интересный адаптер, который называется USB 2.0 Universal Drive Adapter, позволяющий посредством интерфейса USB подключать к персональному компьютеру 2,5-, 3,5 и ...

Высокотехнологичное спальное место

Если вы считаете, что кровать – это место, где можно только спать, то вы глубоко ошибаетесь. Спальная система Hollandia Platinum-Luxe Elite с виду напоминает обычную кровать, но на самом деле под ...

 
 
Главная страница » Статьи » Мир Линукса » Работа с цифровыми видеокамерами в Linux: киношедевр Пингвинопполы


  Работа с цифровыми видеокамерами в Linux: киношедевр Пингвинопполы Статьи » Мир Линукса  
 

Сейчас я задам один вопрос, который, наверное, очень многих поставит в тупик. Вспомни-ка, когда ты в последний раз держал в руках старую добрую VHS кассету, не говоря уже о том, где находится твой пульт от видеомагнитофона? Ладно, не стоит себя утруждать – я и сам-то это не вспомню. Как-то слишком незаметно подкрался технический прогресс, и теперь чтобы посмотреть какой-нибудь фильм дома многие достают DVD с полки, либо загружают файл с жесткого диска. При такой распространенности цифровых технологий и тех благ, которые они нам несут, все стараются также избавиться от «аналоговых» пережитков прошлого и в своей домашней фото- и видеотехнике. Первыми полетели в «утиль» пленочные фотоаппараты – их цифровые коллеги, со всеми своими плюсами и относительной доступностью, окончательно вытеснили соперников с рынка, а коллекции фотографий с каждым прошедшим праздником занимают на хардах пользователей все больше и больше места. С видеокамерами примерно такая же история, правда, стоимость цифровых вариантов все еще остается достаточно высокой, и вряд ли существенно изменится в ближайшее время, но все же количество их счастливых обладателей увеличивается неукоснительно.

Как известно, чтобы полноценно работать с этими девайсами и переписывать находящуюся на них информацию, так или иначе, требуется их подключение к компьютеру и поддержка соответствующих функций со стороны операционной системы и программного обеспечения. Из-за растущей популярности с Linux’а уже давно снят штамп «серверной» ОС, и требования, предъявляемые к нему, как к полноценной мультимедийной платформе, не меньше, чем к той же Windows. В этой статье мы будем разбираться, как и какими аппаратными, а главное, программными средствами осуществляется работа с цифровыми видеокамерами в GNU/Linux.

Что такое DV?

Перед тем как рассматривать программный аспект, интересно будет поговорить о технологических моментах работы цифровых камер и интерфейсах, которые используются при этом. Практически каждый более-менее разбирающийся в современных цифровых технологиях человек наверняка слышал о таких понятиях, как «DV камера», «DV видео» и т.д. За этими двумя, казалось бы, очень простенькими буковками стоят о-о-очень крупные акулы современной High-End индустрии.

История эта началась в далеком 1993 году – уже тогда все крупные производители техники прекрасно понимали перспективу использования цифровых технологий в бытовой видеоаппаратуре. И дабы избежать появления на рынке большого количества несовместимых цифровых форматов и стандартов, в 93-м году был создан единый DVC (Digital Video Cassete) консорциум (впоследствии его название сократилось до «DV»). В консорциум вошли такие производственные гиганты, как Canon, Sharp, Sony, Panasonic. Со временем число участников увеличивалось с большой скоростью, и сейчас достигает порядка шестидесяти. Главной целью консорциума было создание единых стандартов цифровой записи на магнитную ленту для бытовой аппаратуры. Были стандартизированы следующие основные параметры: ширина видеоленты (6.35 мм), скорость вращения валов (18.8 мм/c), формат представления сигнала (YUV), коэффициент сжатия (5:1), разрешение кадра (720x576), кодек (DV25).

Изначально формат DV задумывался для бытового/любительского уровня, но благодаря успешной реализации на его основе были созданы форматы DVCPro и DVCam, используемые в профессиональной телевизионной аппаратуре. В любительских камерах широкую распространенность получил формат miniDV – он полностью аналогичен оригинальному DV, но размер кассет существенно меньше (не в ущерб ширине пленки), что делает камеры такого вида очень компактными и функциональными. Видео в формате DV по качеству обходит MPEG-2, который используется в DVD-носителях. Запись звука осуществляется без сжатия в очень хорошем качестве – 2 дорожки 48 кГц/16 бит стерео. Звук не зависит от видео, создавая очень гибкие возможности для монтажа отснятого материала.

Интерфейс FireWire

Возможности и технические показатели стандарта DV очень впечатляют, но за подобные показатели приходится платить. Платой стал высокий объем DV потока, который минимально составил 25 Мбит/с для видео, плюс примерно 1.5 Мбит/с для аудио и 3.5 Мбит/с – для служебной информации. В итоге получается где-то 3.6 Мб/с, что равняется средней скорости копирования CD-диска. Причем из-за того, что головка видеокамеры вращается с постоянной фиксированной скоростью, поток передается в непрерывном режиме и наличие какой-либо задержки просто недопустимо.

Было бы глупо, если бы в камерах такого типа отсутствовала возможность прямой передачи отснятого материала в компьютер. Конечно, можно подключить камеру через обычные RCA-разъемы к плате видеозахвата и кодировать поток с нее, но тогда возникает лишнее аналогово-цифровое преобразование, что, безусловно, негативно сказывается на качестве конечной картинки, и весь смысл цифрового видео пропадает. Перед разработчиками встала задача выбора подходящего интерфейса (шины), способного справиться с таким большим потоком цифровых данных и обеспечить стабильную скорость передачи. Также он должен был быть как можно более универсальным, и чтобы его цена не взлетала до заоблачных высот. Этим параметрам на тот момент мог удовлетворить только один интерфейс – IEEE 1394, он же FireWire.

Разработка такой именитой компании, как Apple, просто не имела права оказаться плохой, и уже в самой первой своей версии интерфейс поддерживал скорость в 100 Мбит/с. На тот момент о USB 2.0 еще даже и не задумывались, а USB 1.0 отдыхал в сторонке со своими 10-12 Мбит/с. Помимо просто огромной скорости, интерфейс поддерживает работу в синхронных и асинхронных режимах. Первый – важен для данных, которым скорость приоритетнее, чем их сохранность, что идеально подходит для видеопотока, а второй, наоборот, обеспечивает сохранность и целостность денных в ущерб скорости, что важно для четкой передачи команд с компьютера в камеру. Все эти плюсы склонили участников DV-консорциума в сторону этого перспективного интерфейса. И теперь интерфейс FireWire считается стандартом де-факто при работе с цифровым видео.

Спустя некоторое время Международной Электротехнической Комиссией (IEC) был разработан специальный протокол IEC-61883, определяющий правила взаимодействия цифровых устройств при передаче данных (видео, аудио и команд) через шину FiewWire. В последующем пропускная способность IEEE 1394 увеличивалась до 800 Мбит/с, и в перспективе могут быть достигнуты цифры в 1.6 Гбит/с и 3.2 Гбит/с, что еще раз подтверждает, что DV-консорциум не ошибся в своем выборе.

Взаимодействие с Linux

После получения некоторых теоретических знаний по DV-камерам и интерфейсу FireWire мы можем рассмотреть как, на каких уровнях и какими средствами осуществляется взаимодействие оборудования с компьютером и операционной системой. Разобьем все взаимодействие на три уровня: физический уровень, уровень операционной системы и уровень приложений.

На физическом уровне получается следующая картина: DV-камера при помощи интерфейсного кабеля соединяется с FireWire-контроллером, расположенным на материнской плате – тут, я думаю, все понятно.

На уровне ОС мы остановимся поподробнее. Как известно, чтобы операционная система могла взаимодействовать с каким-либо аппаратным устройством (в нашем случае это FireWire-контроллер), нужна соответствующая поддержка устройства в пространстве ядра системы. В современных дистрибутивах Linux поддержка контроллеров FireWire уже имеется, и, как правило, не требуется прилагать каких-то сверхусилий, чтобы ее включить, но я думаю, будет интересно поподробнее рассмотреть, какие части ядра за нее отвечают. Заодно мы поможем тому, у кого это поддержка отсутствует.

Поддержка FireWire-контроллеров и модулей для работы с DV-потоком в ядре включается следующими пунктами (make menuconfig, на примере ядер 2.6.x):

Device Drivers --->

IEEE 1394 (FireWire) support --->

IEEE 1394 (FireWire) support

OHCI-1394 support

Texas Instruments PCILynx support (NEW)

OHCI-1394 Video support

OHCI-DV I/O support (NEW)

Raw IEEE1394 I/O support

Первый пункт, собственно, включает поддержку FireWire в ядро, модуль ieee1394. Второй пункт включает модуль ohci1394 – это поддержка спецификации OHCI-1394 (Open Host Controller Interface). Производители большинства контроллеров придерживаются именно этого стандарта в разработке своих микросхем. Пункт, отмеченный как , включает поддержку специфического чипсета PCILynx компании Texas Instruments – обладателям таких контроллеров придется включить эту опцию. Следующая опция включает модуль video1394, отвечающий за поддержку видеоустройств, подключенных к контроллеру типа OHCI-1394. Этот модуль самым первым появился в ядрах Linux для работы с DV-камерами. К сожалению, video1394 получился не очень удачным из-за своей нестабильности. На смену video1394 пришел модуль dv1394 (следующий пункт), основанный на том же video1394, но за счет улучшенных алгоритмов работы с памятью он более надежен при работе с DV-потоком. И последний пункт подключает модуль raw1394, с помощью которого пользовательские программы получают непосредственный прямой доступ к девайсам, расположенным на шине FireWire, через так называемое виртуальное Raw-устройство. Предпочтительнее использование данного модуля, чем модуля dv1394, и тем более video1394, так как в этом случае программное обеспечение получает больше возможностей в работе с FireWire-устройствами. В этой статье мы будем ориентироваться именно на него, как на более удачный и современный вариант.

Чтобы проверить, какие из этих модулей установлены в твоей системе, введи команду:

# modprobe -l

Она покажет все модули, поддерживаемые твоим ядром. Также ты можешь сам посмотреть их наличие, заглянув в каталог: /lib/modules/[версия ядра]/kernel/drivers/ieee1394. В случае полного отсутствия вышеперечисленных модулей, тебе придется пересобирать ядро. Также стоит убедиться, верно ли определяет ядро твой FireWire-контроллер. Для этого по команде lspci должно выводиться примерно следующее:

02:03.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller (rev 46)

Дальше будем считать, что требуемые модули у тебя установлены, и ядро нормально определяет твой контроллер. Теперь пришло самое время подключить камеру к контроллеру и посмотреть, как на это отреагирует ядро. Сначала проверяем, все ли модули загружены:

# lsmod

Если ничего не загружено, то последовательно вводим команды для загрузки наших модулей.

# modprobe ieee1394

# modprobe ohci1394

# modprobe raw1394

По команде dmesg мы должны увидеть вот такие строки:

ohci1394: fw-host0: OHCI-1394 1.0 (PCI): IRQ=[11] MMIO=[de001000-de0017ff] Max Packet=[512]

ieee1394: Host added: ID:BUS[0-00:1023] GUID[262d480001000000]

ieee1394: raw1394: /dev/raw1394 device initialized

Теперь подключаем камеру, переключаем ее в какой-нибудь из режимов (camera/player), и через несколько секунд смотрим вывод dmesg’а:

ieee1394: Node added: ID:BUS[0-00:1023] GUID[0000f0000c5c1fe8]

ieee1394: Node changed: 0-00:1023 -> 0-01:1023

Переводим камеру в OFF и снова смотрим вывод dmesg’а:

ieee1394: Node suspended: ID:BUS[0-00:1023] GUID[0000f0000c5c1fe8]

Видно, что при включении камеры ядро идентифицирует на шине соответствующий узел (Node), а при отключении – отключает его от общей FireWire-шины, переводя в suspend режим. У себя ты должен получить такой же результат.

Теперь нужно проверить наличие в системе файла-устройства /dev/raw1394, через которое программное обеспечение будет взаимодействовать с нашей камерой. Если у тебя этого устройства не оказалось, то создай его командой:

# mknod -m 666 /dev/raw1394 c 171 0

Разберемся с параметрами:

-m 666 – этот «сотонинский» :) параметр указывает лишь на то, что для файла-устройтсва /dev/raw1394 устанавливаются права доступа «666», то есть все пользователи могут использовать устройство как для записи, так и для чтения;

/dev/raw1394 – название устройства;

c – указывает на то, что устройство символьно ориентированное. Особенность символьных устройств заключается в том, что данные с них (на них) передаются последовательно побайтно, то есть в один момент времени имеется доступ лишь к определенному байту информации. Именно к такому типу относятся носители на магнитной ленте, в частности, наша DV-камера.

171 – это так называемый старший номер устройства (Major Number), с помощью которого обозначается тип устройства. Для FireWire-устройств в Linux-системах этот номер равняется 171.

0 – младший номер устройства (Minor Number), конкретизирует устройства с одинаковыми старшими номерами. В нашем случае конкретизируется используемый модуль для работы с камерой. Для различных модулей используется определенный диапазон значений:

  • 0-15 – raw1394
  • 16-31 – video1394
  • 32-47 – dv1394

Тут «0» указывает на то, что работа с устройством осуществляется с помощью модуля raw1394.

Что ж, мы создали файл-устройство, и на этом наши разборки с ядром закончились, и на уровне операционной системы мы получили следующее:

  • ieee1394 – для поддержки интерфейса FireWire;
  • ohci1394 – поддержка контроллеров OHCI-1394;
  • video1394, dv1394, raw1394 – модули для работы с камерами, подключенными через FireWire-интерфейс;
  • /dev/raw1391 – файл-устройство, через которое пользовательское ПО получает доступ к DV-камере.

Теперь мы переходим к рассмотрению программных средств в пользовательском пространстве для работы с камерой.

Программные средства

Конечно, использование модуля raw1394 дает огромные возможности приложениям, но, как правило, приложения не работают непосредственно напрямую с устройством, так как в этом случае они сильно зависят от версии ядра и модификации модуля, и в случае существенного изменения какого-либо из этих двух компонентов приходится перекомпилировать и сами приложения. Для того чтобы избежать подобного рода сложностей, создаются специальные библиотеки с различными процедурами и подпрограммами. Именно с помощью этих библиотек приложения и работают с устройствами, и в случае обновления ядра или модуля, пользователю нужно будет обновить всего лишь библиотеку, что гораздо удобнее, чем обновление всего используемого ПО. В случае с модулем raw1394 такой библиотекой выступает libraw1394 (http://www.linux1394.org/) – с ее помощью происходит взаимодействие между приложениями и FireWire-устройствами. На том же сайте доступна еще одна библиотека, libiec61883 – это уже специальный API для стандартизированного протокола IEC-61883. Библиотека предназначена для упрощения разработки приложений и увеличения эффективность передачи DV-видеопотока с шины FireWire. Обе эти библиотеки ты должен установить в свой дистрибутив (начать лучше с libraw1394). Это можно сделать прямо из исходников – благо все делается тремя классическими командами, и никаких затруднений вызвать не должно:

# ./configure

# make

# make install

После их установки введи команду:

# testlibraw

Она выводит всю информацию по твоему контроллеру и подключенным к шине узлам. Для того чтобы из приложений можно было управлять механическими блоками камеры, также придется установить специальную библиотеку ibavc1394 (http://sourceforge.net/projects/libavc1394). Ее инсталляция также проста, как и в случае с двумя вышеупомянутыми собратьями.

И вот мы потихоньку подбираемся к практически заключительной части, а именно, к установке DV-кодека для декодирования DV-видеопотока с цифровой камеры. Для этого нужно установить заинсталить[Л1]... что? :) Правильно, еще одну библиотеку – libdv (http://libdv.sourceforge.net/)!

На этом мы заканчиваем с собраниями сочинений отдельных программистов и переходим непосредственно к утилитам, которые в своей работе будут использовать все, что мы тут насобирали. Хочу сразу предупредить, что это только основные библиотеки, которые нужны для нормальной работы программ с DV-камерами. Не факт, что для твоей системы не потребуется еще что-нибудь, например, звуковая библиотека FLAC, – все зависит от конкретного дистрибутива и пакетов, установленных в нем. Поэтому при сборке программ внимательно смотри на сообщения, выдаваемые их конфигурационными скриптами, и если у тебя не будет чего-то хватать, они тебя обязательно об этом известят, и ты сможешь доустановить недостающие пакеты.

Самой популярной и функциональной программой для работы с нелинейным DV-видео из всех существующих на данный момент в Linux является Kino (http://www.kinodv.org/). У программы имеются все необходимые возможности, которые могут потребоваться в работе с цифровым видео: функция захвата видеопотока с камеры в файл, осуществление монтажа отснятого материала прямо в программе, экспорт из DV-формата в другие популярные видеоформаты (MPEG2-DVD, MPEG4-DivX, H.264, VCD и другие) – в общем, все, что нужно хорошему видеоредактору. Если захочется добавить в свое домашнее видео какие-нибудь несложные видеоэффекты, титры, сделать монтаж и т.д., то для таких целей также есть несколько программ: например, Сinelerra (http://www.heroinewarrior.com) или LiVES (http://lives.sourceforge.net/). Ну а если захочется чего-то большего, то можно посмотреть в сторону профессиональной, но, к сожалению, коммерческой программы Shake (http://www.apple.com/shake) – с помощью нее делались спецэффекты к таким популярным голливудским хитам, как «Матрица», «Гладиатор» и «Ледниковый Период».

Заключение

Вот мы и познакомились с работой DV-камер в Linux-системах. Читатель может заметить, что данная поддержка в Linux присутствует достаточно давно и постоянно совершенствуется. Подтверждением этому является наличие в ядрах аж трех различных поколений модулей для работы с DV-камерами. Как наиболее современный вариант мы подробно рассмотрели модуль raw1394. Также мы рассказали про основные библиотеки, которые задействуются при работе программ с raw1394. В качестве основной программы мы рекомендуем использовать kino, так как в ней есть все самые необходимые возможности по работе с DV-видеопотоком. Для пользователей, которые хотят чего-то большего, в Linux также найдутся достойные приложения – кто знает, может кому-то захочется сделать мультик не хуже, чем творения Pixar. На этой позитивной ноте мы и закончим. Удачи :)!

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

Другие новости по теме:

{related-news}

 
   

 
  Новсти на е-mail  
 

Ведите ваш е-mail:

 

 
  Опрос  
 
Вас интересуют новости по теме:

Linux/unix
Телефоны
Hi-Tech
Все выше перечисленное
 
  Лучшие статьи  
   
  Архив материала  
  Июнь 2008 (1)
Май 2008 (3)
Январь 2008 (14)
Декабрь 2007 (73)
Ноябрь 2007 (126)
Октябрь 2007 (88)
Апрель 2007 (142)
Март 2007 (159)
Февраль 2007 (179)

 
  Статистика  
  Rambler's Top100 количество читателей онлайн и всего  
  Комментарии  
  Временно отключено  
 
 
Главная страница | Предложить статью | Новое на сайте | Поддержка
© 2007-2008 XrX Team .