Показаны сообщения с ярлыком Видео. Показать все сообщения
Показаны сообщения с ярлыком Видео. Показать все сообщения

понедельник, 17 января 2011 г.

Неурядицы в Ubuntu 10.10

В прошедшую субботу весь день занимался приживлением Linux к неокрепшим умам вин-пользователей :). Я чувствовал, что эта акция благотворительной помощи будет непростой и таки возникли некоторые мелкие проблемы, которые меня напрягли и и озадачили. Но обо всем по порядку. Так уж повелось, что раз в году я переустанавливаю винду на компьютере моей кумы, точнее ее дочери. В этот раз, увидев, во что за год превращается виндус под воздействием вирусов и прочего мусора, который накапливается в этой дурацкой системе, я решил пойти другим путем. Я решил поставить две системы параллельно. В качестве второй системы я выбрал Ubuntu.

Первым делом я перегрузился и с CD запустил шикарнейший дистрибутив Parted Magic 5.9. В нем есть все инструменты необходимые для работы с железом, и в частности для подготовки винчестера для дальнейшей установки системы. Эта система грузится в оперативную память и освобождает оптический привод, так что вы даже можете записывать данные на CD/DVD. Для начала я примонтировал все разделы винта и скопировал всю необходимую информацию на переносной винт. Затем, отмотировал разделы, и запустил Gparted. Сначала удалил все разделы, а потом создал новые. Первый под винду, второй, самый большой под диск для совместного хранения данных, а третий, под Linux. Первые два отформатировал в ntfs а третий оставил чистым.

Винда стала на первый раздел, и какое-то время я занимался трахомудией в виде засовывания CD с с драйверами для разных устройств и установкой необходимых программ, в том числе и антивируса Avast, искал где winrar скачать бесплатно, ставил MS Office и как альтернативу OpenOffice.org, и так далее. Тут обнаружилась странная фигня, в то время как Аваст довольно легко скачал обновления, браузеры не соединялись с сайтами выдавая ошибку соединения. Я позвонил поставщику интернета и он предложил сбросить настройки и продиктовал команду для командной строки (к сожалению я ее не запомнил). После перезагрузки ничего не изменилось. В техподдержке посоветовали... переставить Windows.

Я, естественно, этого не стал делать. Но заметил, что система ворочается очень медленно. Ну во всяком случае мне так показалось. Для чистоты эксперимента решил поставить Ubuntu 10.10 на свободное место. О процессе установки рассказывать не буду, отмечу только, что по завершении система выдала предупреждение, что некоторые пакеты не были установлены из-за выявленной ошибки. Меня конечно это напрягло, но я перезапустил систему. Убунта загрузилась, сразу поймала Интернет, и забегала в два раза быстрее винды. Но выявились и некоторые баги:

1. В Ubuntu 10.10 очень каличная иконка отображения смены раскладки клавиатуры. Это довольно громоздкая икона с изображением типа клавы а рядом с ней отображаются буквы языка. Так вот, дурацкая клава в трее присутствует, а вот иконок языков нет! Как исправить этот баг я не нашел. Видимо это возникло именно из-за того, что некоторые пакеты не были корректно установлены.

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

3. Не стали драйвера на видеокарту ATI X1300. Хотя, это пока не критично.

БОЛЬШАЯ ПРОСЬБА, если вы можете что-то посоветовать по поводу выявленных проблем, пишите в комметы. К следующим выходным я хочу понять суть проблем и найти способы их решения.

А теперь расскажу о некоторых своих замыслах по этому поводу. Раздумывая, как с этим бороться, решил потестировать возможные варианты решения проблемы дома, на тестовой Убунте 10.10 в VirtualBox. Да и на работе у меня та же версия системы.

Для борьбы с клавой я рассматриваю два варианта. Первый, это установить XNeur, запретив ему автоматическое переключение раскладки при вводе. Проверил - работает. При переключении отображаются флаги.

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

Ubuntu 10.10 [Работает] - Oracle VM VirtualBox_00299.jpeg

В репках LXDE есть. Поставить его не проблема.

Ubuntu 10.10 [Работает] - Oracle VM VirtualBox_00300.jpeg

Я поставил. Выглядит это так.

Выделение_00301.jpeg
Для более удобной настройки клавы в LXDE я установил fsKBSetting v.0.3.
В меню появится пункт Настроить клавиатуру (или как-то так), там выбираем раскладки которые нужны, например английский, русский, украинский.

Выделение_00304.jpeg

Затем кликаем по панели задач и добавляем отображение раскладки клавиатуры.

А вот что касается звука, то для начала собираюсь установить ALSA.

Выделение_00302.jpeg
А затем gnome-alsamixer. С этим набором попробую настроить звук. Насколько я понял, там по умолчанию сейчас звук поднимается с помощью Pulse Audio и именно с ним могут быть проблемы.

Если что не так, советуйте в комментах. Особо волнует звук, и заодно может посоветуете как с видеокартой ATI подружиться, может есть какоето кашерное простое решение о котоом я не знаю. Просто с тикими картами сталкиваюсь впервые (к счастью).

Заранее благодарен.

четверг, 11 марта 2010 г.

OpenShot и Ubuntu

Недавно мне потребовалось смонтировать домашнее видео, и для этого я использовал пока малоизвестный, но довольно интересный и при этом простой в работе видеоредактор OpenShot.

В целом программа мне понравилась. И видимо не только мне. Недавно прошло сообщение, что начиная с Ubuntu 10.04 (Lucid Lynx) OpenShot будет доступен для установки из основного репозитория. А буквально на днях стало известно, что OpenShot перевалил единицу, и теперь достиг версии 1.1. Из заявленных извенений мне запомнилось появление кнопки "Отменить действие". Когда я работл с редактором мне очень не хватало этой функции.

Этот видеоредактор вполне можно использовать и как для создания небольших роликов для размещения в Интернете, так и для полноценного видеомонтажа больших фильмов. Я надеюсь, что до выхода Ubuntu 10.04 разработчики OpenShot сделают программу максимально стабильной и удобной.


А если у вас есть срочное деловое письмо, или важные документы которые нужно передать партнеру, то экспресс-доставка передаст их очень быстро. И главное, эта служба полностью гарантирует сохранность вашей корреспонденции, чего не скажешь о традиционной почте.

А вот любителям железных коней советую посетить сайт, посвященный истории автомобильных марок. Причем рассказано не только об именитых брендах, но и малоизвестных автомобилях.

Ну а любители стильно одеваться, наверное уже знают, что марка одежды Promod сегодня становится все более популярной. И это не только тонкий стиль, но и высокое качество товара.

вторник, 24 ноября 2009 г.

Как побороть синеву видео в Ubuntu

Была у меня когда-то проблема с возникновением “синего видео” в OpenSUSE 11. Об этом я писал ранее в своем ЖЖ. Но оказывается и в других дистрибутивах эта проблема возникает и решается. Ниже привожу решение от lunatik42 с Хабрахабра.

Собрался я тут посмотреть кино в обновленной убунте, а получил довольно психоделичную картинку (к конкретному концертнику такие цвета конечно подходили еще как, но я почувствовал, что что-то тут не так).
Screenshot-Pink_Floyd--Live_at_Pompeii_-_VLC_media_player.png - Picamatic - upload your images

А дело было так

После обновления до 9.10 особо часто в нее заходить не приходилось — в основном сидел под семеркой, но тут почему-то винда не захотела читать сигейтовский внешний жесткий диск (это отдельная история, так и не понял, в чем проблема), а поскольку скопировать данные надо было позарез, то решил проверить диск в убунте.
Сначала я подумал, что дело в vlc, но в родном Тотеме с цветами творилась та же мутотень. После этого полез в nvidia-settings, дабы помучить цвета, но особо ничего не помогло, окромя задирания ползунка Hue. В принципе данный костыль работал, но это наводило на мысли, что в правильных приложениях цвета уплывут в другую сторону.
От переустановки драйверов или их полного отката спас единственный пост на форумах убунту.

Как лечить

Оказывается, после обновления почему-то сбились настройки цветности в Тотеме, которые магическим образом портили картинку во всех плеерах. Достаточно просто зайти в настройки изображения (Edit -> Preferences -> Display) и сбросить все по умолчанию (или же сдвинуть ползунок Hue по центру). Это исправит картинку как и в Тотеме, так и в остальных плеерах.

PS

Не знаю, относится ли это только к драйверам нвидии, или у всех при обновлении слетает цветность, но данный факт меня сильно удивил.
А хард, кстати, прочитался нормально =)


Не секрет, что привлекательность любого товара во многом зависит от его упаковки. Особенно когда речь идет о продуктах питания и товарах первой необходимости . Если вы не знаете, какие виды упаковочных материалов лучше всего подойдут к вашей продукции и где их можно купить, то на сайте www.packresource.ru вы получите исчерпывающую информацию.

Также вам будет полезно узнать, что продажа металлопроката в Москве проводится на сайте www.mart-stroy.ru от ведущих производителей. Цены доступны и большой ассортимент.

пятница, 24 апреля 2009 г.

Ищу книгу по видеомонтажу

У жены на работе установили новое оборудование. А занимается она видеомонтажом. Теперь она вынуждена срочно осваивать маковскую программу видеомонтажа Final Cut Pro 6. В связи с этим возникла крайняя необходимость найти и скачать книгу по этой программе. Пока нашел только предложения бумажных вариантов в интернет-магазинах. Но, как гласит крылатая фраза из нетленного фильма "Бриллиантовая рука" - будем искать.... :)

вторник, 29 июля 2008 г.

Linux: от DV до DVD

Источник: http://rad.xtalk.msk.su/dv-dvd/index.html
Автор: RaD

Введение

Эта статья представляет собой сжатое описание процесса обработки видеоматериала на операционной системе ALTLinux.

Вся информация, изложенная в статье, является моим мнением и не может рассматриваться как истина, не подлежащая сомнению.

В качестве исходного материала рассматривается DV плёнка, в качестве результирующего - DVD диск.

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


Подготовка DV материала

Съёмка

Если оператор уважает труд человека, который будет производить монтаж отснятого, или не желает слышать нелестные отзывы в свой адрес, то он будет производить съёмку правильно. Тому, как снимать правильно, было посвящено немало статей в специализированных журналах, например, в журнале "Режиссёр".

Я делаю так: снимаю неподвижные эпизоды по 10 секунд. Слово "неподвижные" означает, что в момент съёмки никаких действий с камерой не производится. Производить съёмку желательно со штатива. Дергать камерой не надо, играть с "зумом" тоже. Всё равно ничего хорошего из этого потом не получится. Но если вы работаете на MTV, то не прислушивайтесь к моим советам.

Настройка Kino

Перед работой с программой Kino, её необходимо правильно настроить.

Общая настройка

Через меню "Edit" > "Preferences" переходим к настройкам:

* Вкладка "Defaults" - Настраиваем параметры цветности, звука и формата изображения:

* Вкладка "Capture" - Настраиваем параметры захвата отснятого материала, каталог для полученного материала и его формат:
* Вкладка "IEEE 1394" - Настраиваем параметры взаимодействия с IEEE 1394, указываем устройства, через которые будет производиться импорт и экспорт видеоматериала:
* Вкладка "Display" - Настраиваем отображение материала программой. Я выбрал низкое качество декодирования для ускорения работы своей системы. На качество получаемого материала это никак не влияет:
* Вкладка "Audio" - Настраиваем параметры работы со звуком, указываем, что желаем его слышать и через какое устройство:
* Вкладка "Jog/Shuttle" - Настраиваем параметры дополнительного оборудования (можно заказать у авторов программы):
* Вкладка "Other" - Настраиваем остальные параметры, сохранение проекта с относительными именами файлов, двойное кодирование изображения:

Поддержка субтитров

Я сделал перевод статьи Dan Dennedy, в которой он рассказывает о скрытых возможностях Kino. Рекомендую сначала ознакомиться с ней, а затем в файле ~/.gnome2/kino найти строчку:

metaNames=*title,author,copyright,id,abstract

и изменить её следующим образом:

metaNames=*title,author,copyright,id,abstract,subtitle

Теперь требуется заново запустить Kino.


Сброс материала на компьютер

Теперь пришло время сбросить отснятый материал на компьютер. Для этого необходимо иметь не очень старый компьютер, оборудованный интерфейсом IEEE 1394 и имеющий вместительный жёсткий диск. Час DV материала занимает не больше 15 GB. Я использую для работы с видео достаточно древний компьютер: Intel Celeron 900 / 256 MB RAM / 140 GB HDD / PCI IEEE 1394 Interface / ALTLinux 2.4 Master

Для сброса материала используется программа Kino. Мне нравится работать с GUI, консоль оставим для других задач. Но если что-то вам мешает использовать графический интерфейс на данном этапе, то обратитесь к программе dvgrab.

Подключаем DV камеру к компьютеру. Я специально пропускаю момент настройки интерфейса IEEE 1394, это неоднократно и подробно описано в Google. К тому же на ALTLinux эта плата определяется автоматически. А вот список модулей следует привести:

# lsmod | grep 1394
video1394 12180 0 (unused)
ohci1394 23912 0 [video1394]
raw1394 17652 0
ieee1394 42852 0 [video1394 ohci1394 raw1394]

Захват материала производят следующим образом. На вкладке "Capture" программы Kino указывается каталог и имя файла для размещения захваченного материала. Видеокамера включается в режиме "player" и запускается воспроизведение. В окне просмотра должно появиться изображение с камеры. Затем следует нажать на кнопку "Capture" и дождаться захвата материала. После захвата необходимо нажать на кнопку "Stop" и выключить видеокамеру.


Структура проекта

По мере рассмотрения материала, мы достигнем структуры, показанной и прокомментированной ниже:

export - каталог с DV материалом, готовым к экспорту на ленту
movie01.avi
movie02.avi
menu - каталог с материалом для DVD меню
background.png - фоновое изображение
button-hl.png - маска для кнопок в режиме highlight
button-sl.png - маска для кнопок в режиме select
dvdauthor.xml - управляющий файл для сборки DVD структуры
gimp-menu.xcf - проект Gimp с изображениями
menu.xml - управляющий файл для создания DVD меню
prepare.sh - скрипт сборки DVD структуры
silence.mp2 - файл с тишиной
mpeg - каталог с материалом для записи на DVD диск
ready.mpeg - исходный материал
dvd.mpeg - материал с импортированными субтитрами
project.smil - файл проекта Kino
subtitle.sub - комментарии в виде субтитров
subtitle.xml - управляющий файл для размещения комментариев в MPEG
timecode.sub - информация о дате/времени в виде субтитров
timecode.xml - управляющий файл для размещения комментариев в MPEG

Монтаж материала

Приступаем к монтажу. Безжалостно режем всё ненужное, это около 50% материала, бывает больше. Как только процесс вычищения закончен и вы уверены, что больше никаких изменений в материал вноситься не будет, выполняем экспортирование материала в формате DV на тот же диск.

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


Подготовка к экспорту в DVD MPEG

Создаём новый проект Kino. Импортируем в него материал, экспортированный на предыдущем шаге, и сохраняем проект под именем project.smil.


Комментарии к сценам

Теперь приступаем к набиванию комментариев к сценам. Одной сцене может быть присвоен только один комментарий. Если требуется несколько комментариев, просто разбейте одну сцену на нужное количество сцен и прокомментируйте каждую по отдельности. Если комментарий не будет вмещаться в одну строку, то при его внедрении в MPEG поток комментария будет разделён на две или более строк. Комментарий имеет формат:

{номер начального кадра}{номер конечного кадра} текст комментария

Нормальная длительность комментария составляет 4 секунды, т.е. 100 кадров. На рисунке, приведённом ниже, показан пример готового проекта:

Не забываем периодически сохранять файл проекта, ведь именно в него производится сохранение информации о комментариях.


Получение субтитров с комментариями

Сохраняем файл проекта и экспортируем из него комментарии с помощью команды:

smil2sub.sh <> subtitle.sub

Исходный код скрипта smil2sub.sh приведён ниже:

#!/bin/bash


while read line
do
echo $line | grep "subtitle=\"*\"" >/dev/null 2>&1 && \
echo $line | \
sed 's/.* w3m -dump -T text/html
done

Получение субтитров с временным кодом

Первый поток субтитров будет содержать информацию о дате/времени съёмки. Для получения этой информации из материала необходимо установить программу dv2sub. Закройте Kino.

Перейдите в каталог с проектом и запустите Kino командой:

kino project.smil &

В результате этого во вкладке "Export" > "DV Pipe" появятся новые элементы выпадающего списка. Укажите любое имя файла в поле "File:", всё равно файл субтитров будет создан в каталоге запуска Kino, т.е. в каталоге проекта, и будет иметь имя dv2sub.sub.

Переименовываем файл dv2sub.sub в timecode.sub.


Экспорт MPEG

Переходим на вкладку "Export" > "DV Pipe", указываем имя файла, компрессор (Tool: FFMPEG Dual Pass DVD-Video) и профайл (Standard VOB), как показано на рисунке. Затем нажимаем на кнопку "Export" и долго медитируем. Процесс кодирования MPEG файла (с расширением .vob) занимает достаточно много времени, по крайней мере, на моём компьютере.


Импортирование субтитров в MPEG

Импортирование субтитров производится с помощью утилиты spumux. Можно импортировать до 32-х независимых потоков с субтитрами. Я ограничиваюсь пока двумя.

В каталоге ~/.spumux/ должен быть файл arial.ttf.

Для импортирования комментариев используется управляющий файл subtitle.xml:




fontsize="28.0" font="arial.ttf"
horizontal-alignment="left" vertical-alignment="bottom"
left-margin="60" right-margin="60" top-margin="20" bottom-margin="30"
subtitle-fps="25" movie-fps="25" movie-width="720" movie-height="574"
/>


Для импортирования информации о дате/времени используется управляющий файл timecode.xml:




fontsize="28.0" font="arial.ttf"
horizontal-alignment="left" vertical-alignment="bottom"
left-margin="60" right-margin="60" top-margin="20" bottom-margin="30"
subtitle-fps="25" movie-fps="25" movie-width="720" movie-height="574"
/>


Для упрощения импорта субтитров я использую следующий скрипт:

#!/bin/bash


cat mpeg/ready.vob | spumux -s 1 -P timecode.xml | spumux -s 2 -P subtitle.xml > mpeg/dvd.mpeg

, который вызывается из главного каталога проекта.


Создание меню

На данный момент, создание меню для DVD - это нудная ручная работа. Но такой подход позволяет сделать то, чего невозможно добиться, используя программы - генераторы меню.

Меню представляет собой MPEG видео, в которое внедрён поток кнопок в виде субтитров. Кнопками являются особо определённые области на экране, при выделении или нажатии на которые происходит активизация одного из слоёв субтитров. Это обеспечивает подсветку соответствующей кнопки. При нажатии на кнопку может произойти выполнение команды, переход к другому меню или переход к видео. Все вопросы по созданию меню и использованию команд поможет снять команда:

man dvdauthor

Создание фонового изображения

Открываем GIMP и создаём новое изображение 720x576 (75x80 DPI) RGB. Вставляем в слой картинку для меню, пишем надписи, создаём кнопочки и так далее. Периодически сохраняем проект в формате XCF.

Слева и справа надо сделать направляющие, отступающие от краёв на 60 пикселей. Это граница для текстового оформления. Текст названия эпизодов набирается 24 шрифтом.

Обратите внимание на то, что картинки, текст и прочие элементы разделены по слоям. Это позволяет свободно перемещать объекты относительно друг друга:


Создание изображений с кнопками

Когда работа с картинками завершена, надо добавить два слоя: Highlight (этот слой работает, когда кнопка меню выбирается пользователем) и Select (этот слой работает, когда кнопка меню была нажата пользователем).

Выбираем слой Highlight. Выбираем для него цвет переднего фона, например, #3516F1. Выбираем кисть, шаблон кисти - неразмытый кружок в 5 пикселей. Выбираем инструмент "Выделятор" и выделяем все кнопки, пользуясь клавишей Shift. Рисуем кромку с помощью "Правка" > "Обвести выделенное", в появившемся окне указываем, что надо "Использовать один из инструментов", а в качестве инструмента выбираем "Кисть". Получается слой с рамками для всех кнопок. То же самое выполняем для слоя Select, только цвет указываем #F1BB16. Сохраняем эти два слоя в отдельные картинки. Отдельно открываем эти файлики и преобразуем в 4-х цветное индексированное изображение. Сохраняем в формате PNG.


Создание MPEG файла с меню

Создаём управляющий файл, который описывает параметры кнопок (имя и координаты), а также указывает на файлы, содержащие маски кнопок для разных режимов.




highlight="menu/button-hl.png"
select="menu/button-sl.png"
>

Приведённые ниже команды собирают DVD меню из подготовленных нами компонентов, в соответствии с описанным выше файлом menu.xml:

# Преобразовываем картинку в видео

convert menus/background.png ppm:- | \
ppmtoy4m -n50 -F25:1 -A59:54 -I p -r | \
mpeg2enc -n p -f8 -b5000 -a2 -o background.m2v

# Объединяем видео и аудио для меню
mplex -f 8 -o menu-temp.mpeg background.m2v menu/silence.mp2

# Прописываем поток субтитров (кнопок) для меню
spumux menu/menu.xml <> menu.mpeg

Авторизация DVD

Для авторизации диска необходимо подготовить файл dvdauthor.xml следующего содержания:












В данном примере у нас отсутствует главное меню. Мы используем сразу подменю, которое содержит пять управляющих зон-кнопок. Следует отметить, что наименования кнопок в данном файле совпадают с наименованиями кнопок, использованными при создании DVD меню (см. файл menu.xml).

Подразделы нашего диска определены параметром chapters тэга vob. Навигация производится именно по указанным подразделам (см. определение кнопок).

Авторизация диска выполняется с помощью команды:

dvdauthor -x dvdauthor.xml

Краткие советы

Поправьте скрипты экспорта Kino, чтобы звук преобразовывался в AC3 формат в любом случае. Это позволит избежать проблем с фирменными DVD-плеерами. Китайские плееры играют всё что угодно и не могут рассматриваться как оборудование для тестирования созданного диска.

Субтитры намертво внедряются в MPEG файл. Если у вас в DVD проект входят несколько MPEG файлов, то о субтитрах вам точно не надо беспокоиться.

При указании следующего chapter в dvdauthor.xml округляйте значение секунд вперёд.


Комментарии

Заинтересованные в изменении содержимого данной статьи могут высылать свои мнения на radz at yandex dot ru

О формате DVD-Video

О формате DVD-Video - *NIX в заметках - Путь к пониманию

2008-01-09 от ashep

Об этой статье

В этой статье рассматриваются базовые понятия и принципы, используемые при создании дисков DVD Video. Весь материал взят из разнообразных источников, расположенных в Сети. Там, где это возможно, я сохранил ссылки на источники информации. Если я вдруг кого-то забыл, не обижайтесь, пожалуйста, и дайте мне знать об этом.



Формат DVD

Физически, DVD формат похож на CD с тем отличием, что для работы с DVD дисками используется лазерный луч с меньшей длиной волны. За счет этого достигается большая плотность записи. Также, существуют DVD диски с дополнительным слоем для хранения данных, что увеличивает объем хранимых данных на одной стороне вдвое. Однослойный DVD диск предоставляет возможность записи до 4,7 Гбайт на одну сторону, а двухслойный - до 8,5 Гбайт.

Существует несколько разновидностей DVD носителей. Изначально DVD Forum определил три типа: DVD-R, DVD-RW и DVD-RAM. DVD-RAM является физически перезаписываемым форматом, однако он не совместим со стандартным форматом DVD Video.

Логическая организация DVD Video

В отличие от CD, который состоит из треков, список которых хранится в TOC (Table Of Contents), DVD имеет файловую систему UDF.

DVD Video логически разбит на следующие части:

  • First-Play Section. Проигрывается первой сразу после того, как диск вставляется в устройство
  • VMGI (Video Manager Information). Информация видео-менеджера
  • VMGM (Video Manager Menus). Меню видео-менеджера
  • VTS (Video Title-Sets). Комплекты видео-приложений

Каждый комплект видео приложений (VTS) логически разбит на

  • VTSI (Video Title Set Information). Информация видео-приложения, содержащая в себе управляющие данные.
  • VOB (Video Objects). Меню
  • VOB (Video Objects). Данные
  • Резервная копия VTSI

Каждый VOB (базовая файловая единица диска) включает видео, аудио, субтитры и навигационные данные. Когда проигрывается VOB, плеер не только последовательно проигрывает видео, но также следует навигационным командам для отображения меню, принятия команд от пользователя и т. д. Каждый VOB включает в себя отдельные ячейки (cells), связанные вместе при помощи Программных Цепочек (Program Chains - PGC), которые обеспечивают требуемую интерактивность, используя простой язык программирования, разработанный для DVD-Видео. PGC используются для регулирования проигрывания видео, аудио и субтитров в VOB'ах, отображения меню, и ввода и исполнения команд пользователя. Существует три типа PGC: последовательного проигрывания (sequential play), произвольного проигрывания (random play) и смешанного (shuffle play) проигрывания. Отдельные ячейки могут использоваться более чем одной PGC, которая может определять различные последовательности проигрыша видеоматериала, например для обеспечения бесшовного ветвления (seamless branching). PGC подчиняются набору команд для элементарного программирования, включающему математические и логические операторы, условные переходы, обратный отсчет времени и т. д. Имеется 16 обычных регистров для более сложного программирования, и 16 системных регистров.

Файловая организация DVD-Video

VOB'ы и другие данные располагаются в каталоге VIDEO_TS. Таблица внизу показывает пример диска с одним комплектом видео приложений.

Имя файла Описание
VIDEO_TS.IFO Файл VMGI (Информация Видео Менеджера)
VIDEO_TS.VOB Файл VMGM (Меню Видео Менеджера)
VIDEO_TS.BUP Резервный файл VMGI
VTS_01_0.IFO Файл VTSI
VTS_01_0.VOB Набор видео объектов для меню VTS
VTS_01_0.BUP Резервный файл VTSI
VTS_01_1.VOB Первый видео объект из первого комплекта видео объектов
VTS_01_2.VOB Второй видео объект из первого комплекта видео объектов

Аудио, видео и субтитры могут содержатся не более чем в 9 VOB файлах, относящихся к данному видео приложению, каждый из которых по размеру не превышает 1 Гб. Таким образом, на DVD-5 будет не более 5 VOB файлов, относящихся к видео приложению, для DVD-9 могут потребоваться все 9. Файлы VTS*.* могут повторяться для каждого комплекта видео приложений (VTS) и будут соответственно называться VTS_02*.*, VTS_03*.* и т. д. На каждый VTS будет приходиться один .IFO и .BUP файлы, плюс один или больше .VOB файлов.

Требования к потоку

Одним из обязательных требований стандарта DVD Video к видеопотоку - он должен быть кодирован в MPEG-1 или MPEG-2. Таким образом, для кодирования подготавливаемого к записи видео необходим MPEG-1 или MPEG-2 кодек. MPEG-2 использовать более предпочтительно, поскольку он является более продвинутым и современным, однако, если вам необходимо получить на выходе видео-поток с битрейтом ниже 1 Мбит/сек (около 10 часов видео на стандартный однослойный DVD носитель), то в этом случае лучше воспользоваться кодеком MPEG-1.

Вопроизводимый в странах бывшего СНГ цифровой видео-поток должен соответствовать одним из требований, перечисленных ниже, ввиду того, что стандартные DVD проигрыватели могут просто отказаться от проигрывания видео-объекта, если формат видео-потока в нем не будет соответствовать указанным требованиям.

Видео кодек Аудио кодек Кадров в секунду Ширина кадра Высота кадра Соотношение сторон
MPEG-1
  • Linear Pulse Code Modulation (LPCM): 48 kHz или 96 kHz; 16- or 24-bit;
    до 6 каналов
  • MPEG Layer 2 (MP2): 48 kHz, до 5.1 каналов
  • Dolby Digital (DD, также известен как AC-3): 48 kHz, 32–448 kbit/s, до 5.1
    каналов
  • Digital Theater Systems (DTS): 754 kbit/s или 1510 kbit/s
25 352 288 4:3
MPEG-2 352 288 4:3
352 576 4:3
704 576 4:3
720 576 4:3
720 576 16:9

В процессе MPEG кодирования устраняются избыточные видео-данные в серии рядом расположенных кадров. Два соседних кадра обычно содержат много одинаковых элементов изображения. Информация в них отличается на малую часть от всей информации содержащейся в кадре. Производится сжатие видео, при котором используются не все данные каждого видео-кадра, а динамика изменений кадров, так как в большинстве последовательных кадров одного видео-сюжета фон почти не изменяется, а хорошо заметные изменения происходят на переднем плане. Например, происходит плавное перемещение небольшого объекта на фоне неизменного заднего плана. В этом случае полная информация о изображении сохраняется только для опорных изображений. Для остальных кадров оцифровывается только разностная информация: о положении объекта, направлении и величине его смещения, о новых элементах фона, открывающихся за объектом по мере его движения. Причем эта разностная информация вычисляется не только по сравнению с предыдущими изображениями, но и с последующими (поскольку именно в них по мере движения объекта открывается ранее скрытая часть фона). Опорные кадры в MPEG видео-потоке должны быть вставлены каждые 15 или 18 кадров, ввиду того, что именно опорные или, как их еще называют, I-кадры используются просмотрщиками видео при перемотке видео вперед или назад.

Для соответствия формату DVD Video, битрейт мультиплексированного потока не должен быть выше 9,8 Мбит/сек и не менее 300 Кбит/сек. Этот параметр обязательно нужно учитывать при получении конечного MPEG потока.

Основные понятия и определения

DVD видео. Для воспроизведения DVD с видео необходим DVD-привод и декодер MPEG-2 (то есть либо бытовой DVD-проигрыватель с аппаратным декодером, либо компьютерный DVD-привод и программный проигрыватель с установленым декодером). Фильмы на DVD сжаты с использованием алгоритма MPEG-2 для видео и различных (часто многоканальных) форматов для звука. Битрейт сжатого видео варьируется от 2000 до 9800 Кбит/с, часто бывает переменным (VBR − англ. variable bitrate). Стандартный размер видео кадра стандарта PAL равен 720×576 точек, стандарта NTSC - 720×480 точек. Аудиоданные в DVD-фильме могут быть в формате PCM, DTS, MPEG или Dolby Digital (AC-3). В странах, использующих стандарт NTSC, все фильмы на DVD должны содержать звуковую дорожку в формате PCM или AC-3, а все NTSC-плееры должны эти форматы поддерживать. Таким образом, любой стандартный диск может быть воспроизведён на любом стандартном оборудовании. В странах, использующих стандарт PAL (большая часть Европы, Россия в том числе), поначалу хотели ввести в качестве стандарта звука для DVD форматы PCM и MPEG-2, но под влиянием общественного давления и идя вразрез с пожеланиями Philips, DVD-Forum включил Dolby AC-3 в список опциональных форматов звука на дисках и обязательных форматов в плеерах.

PAL (Phase-Alternating Line). Система аналогового цветного телевидения, разработана инженером немецкой компании «Telefunken» Вальтером Брухом и представленная как стандарт телевизионного вещания в 1967 году.

NTSC (National Television Standards Committee). Национальный комитет по телевизионным стандартам. Cистема аналогового цветного телевидения, разработанная в США. 18 декабря 1953 года впервые в мире было начато цветное телевизионное вещание с применением именно этой системы. NTSC принята в качестве стандартной системы цветного телевидения также в Канаде, Японии и ряде стран американского континента.

MPEG (Moving Picture Experts Group). Экспертная группа по вопросам движущегося изображения. Группа специалистов в подчинении ISO, собирающаяся для выработки стандартов сжатия цифрового видео и аудио.

MPEG-1. Группа стандартов на цифровое сжатие аудио и видео, принятую MPEG. MPEG-1 видео используется, например, в формате Video CD. Качество видео на видео-CD (VCD) приблизительно близко к качеству VHS видеокассет

MPEG-2. Группа стандартов цифрового кодирования видео и аудио сигналов, одобренных ISO — Международной Организацией по стандартизации/IEC Moving Picture Experts Group (MPEG). Стандарт MPEG-2 в основном используется для кодирования видео и аудио при вещании, включая спутниковое вещание и кабельное телевидение. MPEG-2 с некоторыми модификациями также активно используется как стандарт для сжатия DVD.

Количество (частота) кадров в секунду. Число неподвижных изображений, сменяющих друг друга при показе 1 секунды видеоматериала и создающих эффект движения объектов на экране. Чем больше частота кадров в секунду, тем более плавным и естественным будет казаться движение. Минимальный показатель, при котором движение будет восприниматься однородным — примерно 10 кадров в секунду (это значение индивидуально для каждого человека). В традиционном пленочном кинематографе используется частота 24 кадра в секунду. Системы телевидения PAL и SÉCAM используют 25 кадров в секунду (англ. 25 fps или 25 Герц), а система NTSC использует 29,97 кадров в секунду. Компьютерные оцифрованные видеоматериалы хорошего качества, как правило, используют частоту 30 кадров в секунду. Верхняя пороговая частота мелькания, воспринимаемая человеческим мозгом, в среднем составляет 39—42 Герца и индивидуальна для каждого человека. Некоторые современные профессиональные камеры могут снимать с частотой до 120 кадров в секунду. А специальные камеры для сверхбыстрой съемки снимают с частотой до 1000 кадров в секунду и выше, что необходимо, например, для детального изучения траектории полета пули или структуры взрыва.

Чересстрочная развертка. Развертка видеоматериала может быть прогрессивной (построчной) или чересстрочной. При прогрессивной развертке все горизонтальные линии (строки) изображения отображаются одновременно. А вот при чересстрочной развертке показываются попеременно четные и нечетные строки (называемые также полями кадра). Чересстрочную развёртку часто называют на английский манер интерлейс (англ. interlace) или интерлейсинг. Чересстрочная развёртка была изобретена для показа изображения на кинескопах и используется сейчас для передачи видео по «узким» каналам, не позволяющим передавать изображение во всём качестве. Системы PAL, SÉCAM и NTSC — это всё системы с чересстрочной развёрткой. Новые цифровые стандарты телевидения, например, HDTV предусматривают прогрессивную развёртку. Хотя появились технологии, позволяющие имитировать прогрессивную развёртку при показе материала с интерлейсом. Чересстрочную развёртку обычно обозначают символом «i» после указания вертикального разрешения, например 720×576i×50 для видео в формате PAL. Для подавления неприятных эффектов, возникающих при просмотре чересстрочного видео на построчном экране, применяются специальные математические методы, именуемые деинтерлейсингом.

Прогрессивная развертка. В отличие от чересстрочной развертки, где за каждый кадр формируется только половина изображения (либо четные, либо нечетные строки), при прогрессивной развертке формируется изображение целиком, т.е. все строки. В настоящее время чересстрочная развертка используется только в дешевых ЭЛТ-телевизорах.

Деинтерлейсинг Процесс создания одного кадра из двух полукадров чересстрочного формата для дальнейшего вывода на экран с прогрессивной развёрткой, такой как компьютерный монитор. Применяется в компьютерных системах обработки видео, плоскопанельных телевизорах и т. д.

Разрешение. По аналогии с разрешением компьютерных мониторов, любой видеосигнал также имеет разрешение (англ. resolution), горизонтальное и вертикальное, измеряемое в пикселях. Обычное аналоговое телевизионное разрешение составляет 720×576 пикселей для стандартов PAL и SÉCAM, при частоте кадров 50 Герц (одно поле, 2×25); и 648×486 пикселей для NTSC, при частоте 60 Герц (одно поле, 2×29,97). В выражении 648×480 первым числом обозначается количество точек в горизонтальной линии (горизонтальное разрешение), а вторым числом количество самих линий (вертикальное разрешение). Новый стандарт высокоотчётливого (англ. high-definition) цифрового телевидения HDTV предполагает разрешения до 1920×1080 при частоте мелькания 60 Герц с прогрессивной развёрткой. То есть 1920 пикселей на линию, 1080 линий.

Количество цветов и цветовое разрешение видеосигнала. Описывается цветовыми моделями. Для стандарта PAL применяется цветовая модель YUV, для SÉCAM модель YDbDr, для NTSC модель YIQ, в компьютерной технике применяется в основном RGB (и αRGB), реже HSV, а в печатной технике CMYK. Количество цветов, которое может отобразить монитор или проектор зависит от качества монитора или проектора. Человеческий глаз может воспринять, по разным подсчётам, от 5 до 10 миллионов оттенков цветов. Количество цветов в видеоматериале определяется числом бит, отведённым для кодирования цвета каждого пикселя (англ. bits per pixel, bpp). 1 бит позволяет закодировать 2 цвета (обычно чёрный и белый), 2 бита — 4 цвета, 3 бита — 8 цветов, …, 8 бит — 256 цветов, 16 бит — 65 536 цветов, 24 бита — 16 777 216 цветов. В компьютерной технике имеется стандарт и 32 бита на пиксель (αRGB), но этот дополнительный α-байт (8 бит) используется для кодирования коэффициента прозрачности пикселя (α), а не для передачи цвета (RGB). При обработке пикселя видеоадаптером, RGB-значение будет изменено в зависимости от значения α-байта и цвета подлежащего пикселя (который станет «виден» через «прозрачный» пиксель), а затем α-байт будет отброшен, и на монитор пойдёт только цветовой сигнал RGB.

Битрейт. Ширина (иначе говорят скорость) видеопотока или битрейт (англ. bit rate) — это количество обрабатываемых бит видеоинформации за секунду времени (обозначается «бит/с» — бит в секунду, или чаще «Мбит/с» — мегабит в секунду; в английском обозначении «bit/s» и «Mbit/s» соответственно). Чем выше ширина видеопотока, тем в общем лучше качество видео. Например, для формата VideoCD ширина видеопотока составляет всего примерно 1 Мбит/с, а для DVD составляет около 5 Мбит/с. Конечно, субъективно разницу в качестве нельзя оценить как пятикратную, но объективно это так. А формат цифрового телевидения HDTV использует ширину видеопотока около 10 Мбит/с. При помощи скорости видеопотока также очень удобно оценивать качество видео при его передаче через Интернет. Различают два вида управления шириной потока в видеокодеке — постоянный битрейт (англ. constant bit rate, CBR) и переменный битрейт (англ. variable bit rate, VBR). Концепция VBR, ныне очень популярная, призвана максимально сохранить качество видео, уменьшая при этом суммарный объём передаваемого видеопотока. При этом на быстрых сценах движения, ширина видеопотока возрастает, а на медленных сценах, где картинка меняется медленно, ширина потока падает. Это очень удобно для буферизованных видеотрансляций и передачи сохранённого видеоматериала по компьютерным сетям. Но для безбуферных систем реального времени и для прямого эфира (например, для телеконференций) это не подходит — в этих случаях необходимо использовать постоянную скорость видеопотока.

Соотношение сторон экрана. Соотношение ширины и высоты кадра (англ. aspect ratio) — важнейший параметр в любом видеоматериале. Ещё с 1910 года кинофильмы имели соотношение сторон экрана 4:3 (4 единицы в ширину к 3 единицам в высоту; иногда ещё записывается как 1,33:1 или просто 1,33). Считалось что зрителю удобнее смотреть фильм на экране такой формы. Когда появилось телевидение, то оно переняло это соотношение и почти все аналоговые телесистемы (и, следовательно, телевизоры) имели соотношение сторон экрана 4:3. Компьютерные мониторы также унаследовали телевизионный стандарт сторон. Хотя ещё в 1950-х годах это представление о 4:3 в корне изменилось. Дело в том, что поле зрения человека имеет соотношение отнюдь не 4:3. Ведь у человека 2 глаза, расположенных на одной горизонтальной линии — следовательно, поле зрения человека приближается к соотношению 2:1. Чтобы приблизить форму кадра к естественному полю зрения человека (и, следовательно, усилить восприятие фильма), был введён стандарт 16:9 (1,78), почти соответствующий так называемому «Золотому сечению». Цифровое телевидение в основном тоже ориентируется на соотношение 16:9. К концу XX века, после ряда дополнительных исследований в этой области, стали появляться даже и более радикальные соотношения сторон кадра: 1,85, 2,20 и вплоть до 2,35 (почти 21:9). Всё это, безусловно, призвано глубже погрузить зрителя в атмосферу просматриваемого видеоматериала.

PCM. Импульсно-кодовая модуляция (ИКМ или PCM — Pulse Code Modulation) используется для оцифровки аналоговых сигналов перед их передачей. Практически все виды аналоговых данных (видео, голос, музыка, данные телеметрии, виртуальные миры) допускают применение ИКМ-модуляции. Чтобы получить на входе канала связи (передающий конец) ИКМ-модулированный сигнал из аналогового, амплитуда аналогового сигнала измеряется через равные промежутки времени. Количество оцифрованных значений в секунду (или скорость оцифровки) кратна максимальной частоте (Гц) в спектре аналогового сигнала. Мгновенное измеренное значение аналогового сигнала округляется до ближайшего уровня из нескольких заранее определенных значений. Этот процесс называется квантованием, а количество уровней всегда берется кратным степени двойки, например, 8, 16, 32 или 64. Номер уровня может быть соответственно представлен 3, 4, 5 или 6 битами. Таким образом, на выходе модулятора получается набор битов (0 или 1). На приёмном конце канала связи демодулятор преобразует последовательность битов в импульсы с тем же уровнем квантования, который использовал модулятор. Далее эти импульсы используются для восстановления аналогового сигнала.

Ссылки и источники из которых была взята информация и что стоит почитать

пятница, 20 июня 2008 г.

Стоп! Снято!

Июнь 7, 2008

В наличии цифровая камера (mini dv), задача захватить с нее видео. Подключаем ее по fireware к компьютеру. Устанавливаем необходимое ПО.
yaourt -S kino libavc1394 libiec61883 libraw1394 libdc1394
gpasswd -a wildarcher video #Добавляем пользователя в группу video

Правим файлик /etc/rc.conf и запрещаям вредные модули (они мешают захвату видео с камеры)
nano /etc/rc.conf
MOD_BLACKLIST=(… firewire_core firewire_ohci …)
Перезагружаем компьютер и подгружаем нужные модули

modprobe dv1394
modprobe ohci1394
modprobe raw1394
modprobe ieee1394

Запускаем kino --> Правка --> Настройка --> IEEE1394 и в Устройства AV/C (E) выбераем камеру. Теперь можно приступать к захвату.

пятница, 30 мая 2008 г.

Uduntu. Кодеки и драйвера - настройка мультимедии.

Все смотрят кино, слушают музыку... некоторые ещё и в игры играют :) Для получения всех этих благ нам надо сделать несколько простых вещей:

Установка драйвера для видеокарты nVidia:
1 aptitude install nvidia-glx
2 nvidia-xconfig
3 reboot

Затем поставим кодеки:
Аудио и видео:
1 sudo apt-get install gstreamer0.10-pitfdll gstreamer0.10-ffmpeg gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-ugly gstreamer0.10-plugins-ugly-multiverse gxine
libxine-main1 libxine-extracodecs ogle ogle-gui


Windows кодеки:

1 wget -c http://www.debian-multimedia.org/pool/main/w/w32codecs/w32codecs_20071007-0.1_i386.deb
2 sudo dpkg -i w32codecs_20071007-0.1_i386.deb


DVD кодеки:

1 sudo apt-get install libdvdread3
2 sudo /usr/share/doc/libdvdread3/examples/install-css.sh


Игры:
Для игр нам понадобится cedega - её можно скачать здесь:
http://thepiratebay.org/search/cedega/0/99/300
Установка и настройка в readme.

четверг, 29 мая 2008 г.

Bog BOS: dw: Программы для работы с видео в Linux

Последнее изменение файла: 2008.01.03
Скопировано с www.bog.pp.ru: 2008.05.29

Порядок установки программ и предварительная установка необходимых пакетов из дистрибутива (в т.ч. *-devel) очень важны, т.к. при сборке скрипты ./configure проверяют наличие необходимых для реализации части функций библиотек и, если библиотека отсутствует, то собранная программа не будет иметь соответствующих функций. Например, если перед установкой mplayer не установить пакет работы с пультом ДУ Lirc, то mplayer будет собран без возможности управления с пульта ДУ. Внимательно следите за сообщениями, выдаваемыми ./configure!

Предварительные действия:

  1. установка Fedora Core 6 или Fedora Core 3 или Red Hat Linux 8.0 (со всеми указанными библиотеками!)
  2. настройка дополнительных репозитариев yum для FC6 (livna, freshrpms) и FC3 (at, dag), чтобы можно было устанавливать уже готовые пакеты
  3. установить правильный драйвер видеокарты NVIDIA (в т.ч. настроить вывод на проектор или телевизор)
  4. добавить /usr/local/lib в /etc/ld.so.config и сделать ldconfig (запуск ldconfig рекомендуется повторять после установки каждой разделяемой библиотеки, т.к. некоторые разработчики забывают вставить соответствующую строчку в процедуру установки)
  5. установить драйвера платы видеозахвата и ТВ тюнера (v4l, v4l2)
  6. установить программы для работы с пультом ДУ (lirc)
  7. установить программы работы со сканером (sane, xsane)
  8. добавить загрузку v4l (/usr/X11R6/lib/modules/drivers/linux/v4l_drv) в секцию модулей /etc/X11/XF86Config
  9. установка библиотек работы со звуком и аудиокодеков

Теперь устанавливаем по порядку (естественно, надо стараться брать самые свежие версии, но возможны конфликты между пакетами и используемыми библиотеками):

  1. lzo
  2. xmms/audacious
  3. bbtool
  4. mkvtoolnix
  5. libdvdread, libdvdcss и libdvdnav
  6. ogle
  7. dvdbackup
  8. mpgtx
  9. divx4linux
  10. XviD
  11. dvdauthor
  12. libfame
  13. libm4isomedia (MPEG-4)
  14. gpac (MPEG-4)
  15. x264 (кодировщик H.264 или MPEG-4 AVC)
  16. mpeg2dec
  17. ffmpeg
  18. libquicktime
  19. libdv
  20. zvbi
  21. aalib
  22. avifile
  23. tvtime
  24. xanim
  25. mjpegtools
  26. transcode
  27. xawtv
  28. xine
  29. mplayer
  30. mpeg4ip

Для просмотра DVD-Video я использую ogle, для просмотра ТВ - tvtime, для всех прочих источников - mplayer, для видеозахвата - streamer из xawtv (в формате YUV4MPEG2) или mencoder, для обработки и сжатия - mjpegtools или mencoder из mplayer и lame (MPEG-1 с нестандартными параметрами, звук - MP3; в дальнейшем записывается в формате псевдо VCD/DVD).

lzo

Библиотека lzo предоставляет целый набор алгоритмов сжатия без потерь. Среди них попадаются такие, что сжимают YUV на 25% со скоростью 35 МБ/сек и декомпрессируют со скоростью 250 МБ/сек (скорость memcpy() при переполнении кеша всего вдвое больше!). Наверняка, с помощью простейшего алгоритма предсказания (db-a) можно довести коэффициент сжатия до 50% без особой потери скорости сжатия (скорость декомпрессии упадет сильно). Прямой конкурент zlib, если требуется большая скорость.

В FC6 установил пакеты lzo и lzo-devel версии 2.02-2.fc6 и lzop версии 1.02-0.4.rc1.fc6 из репозитария extras.

В FC3 установил пакеты lzo и lzo-devel версии 1.08 из репозитария dag.

Установка lzo 1.08 в RH8.0:

  • получить и развернуть исходные тексты
  • ./configure --enable-shared
  • make
  • make check
  • make test
  • make install
    • /usr/local/include/lzo*.h
    • /usr/local/lib/liblzo*

xmms/audacious

Red Hat не включает программы для работы с MP3 даже в Fedora Core.

Для FC6 устанавливаем xmms 1:1.2.10-29.fc6, xmms-cdread, xmms-flac, xmms-libs, xmms-lirc, xmms-skins, xmms-speex из extras (потянули glib 1:1.2.10-26.fc6, gtk+ 1:1.2.10-55.fc6 и mikmod 3.1.6-39.fc6), xmms-mp3 1:1.2.10-16.fc6 и xmms-wma 0:1.0.5-3.fc6 из freshrpms. Заодно поставил xmms-normalize 0.7.7-2.lvn6 (потянул libid3tag и normalize) и xmms-faad2 из репозитария livna.

Для FC6 устанавливаем audacious 1.2.2-2.fc6, audacious-devel 1.2.2-2.fc6, audacious-libs 1.2.2-2.fc6, audacious-plugins 1.2.5-2.fc6 из extras; audacious-plugins-nonfree-mp3 1.2.5-1.lvn6 и audacious-plugins-nonfree-wma 1.2.5-1.lvn6 из livna (потянули libbinio, libmpcdec, libsidplay, taglib из extras), а заодно audacious-plugins-nonfree-aac 1.2.5-1.lvn6.

Для FC3 берём пакеты xmms 1.2.10 и xmms-mp3 (и xmms-skins) из репозитария dag.

bbtool

Пакет bbtool 1.7 позволяет получить подробную и очень подробную информацию о файлах форматов MPEG, включая файлы .vob (мне он помог понять, почему не показывается второй VideoCD, сделанный mjpegtools).

Установка (FC6, FC5, RH8):

Использование утилит:

  • bbdmux имя-файла [stream-id out-file] (демультиплексирует программные и транспортные потоки MPEG1 и MPEG2 или показывет их структуру)
  • bbinfo имя-файла verbose-level
  • bbainfo имя файла verbose-level
  • bbvinfo имя-файла verbose-level

mkvtoolnix

Пакет mkvtoolnix позволять разобрать видеофайл в формате matroska (матрёшка) на составные части и собрать и обратно.

Установка пакета mkvtoolnix-1.8.1 в FC6.

Полезные примеры. Извлечение "лишней" звуковой дорожки:

mkvextract tracks исходный-файл номер-лишней-дорожки:результат
mkvmerge -o результат --atracks номер-полезной-дорожки исходный-файл

Разбиение фильма на куски, граница по следующему ключевому кадру, имя результата используется как шаблон для генерации имён кусков:

mkvmerge -o результат --split размер-куска исходный-файл

libdvdread, libdvdcss и libdvdnav

Библиотека libdvdcss выделена, чтобы "вывести из под удара" разработчиков программ для работы с DVD. Занимается дешифровкой DVD.

В FC6 установил пакеты libdvdcss и libdvdcss-devel версии 1.2.9-4.lvn6 из репозитария livna.

В FC3 установил пакеты libdvdcss и libdvdcss-devel версии 1.2.9 из репозитария dag.

Библиотека libdvdread занимается разборкой структуры DVD диска.

В FC6 установил пакеты libdvdread и libdvdread-devel версии 0.9.7-2.fc6 из репозитария extras.

В FC3 установил пакеты libdvdread и libdvdread-devel версии 0.9.7 из репозитария dag.

Библиотека libdvdnav (выделена из проекта xine) позволяет обращаться с меню на DVD.

В FC6 установил пакеты libdvdnav и libdvdnav-devel версии 0.1.10-3.fc6 из репозитария freshrpms.

В FC3 установил пакеты libdvdnav и libdvdnav-devel версии 0.1.10 из репозитария dag.

Установка libdvdnav 0.1.3 в RH8.0:

  • убедиться, что установлены пакеты libdvdread-devel и libdvdcss-devel
  • получить и развернуть исходные тексты
  • ./configure
  • make
  • make install

ogle

Если все, что вам нужно - это просмотр DVD (VCD, SVCD), а обрабатывать видео вы и не собирались, то можете удалять все ранее описанные пакеты и не устанавливайте никаких новых, кроме ogle!

ogle - маленький и простоустанавливаемый проигрыватель DVD. При этом в отличие от своих более "навороченных" собратьев (mplayer, xine, xmovie) он делает это хорошо: умеет обрабатывать меню диска (в том числе с помощью мышки), ускоренное и замедленное воспроизведение, автомагический выбор русской звуковой дорожки (и переключение на другую дорожку с первого раза и без щелчка!). Только с его помощью я увидел некоторые дополнения к фильмам. В комплекте идет программа ifo_dump Выбор угла зрения (angle selection) возможен только из меню DVD (хотя кнопка уже припасена).

В FC6 установил пакеты ogle, ogle-devel и ogle_gui версии 0.9.2-7.fc6 из репозитария freshrpms.

В FC3 установил пакеты ogle, ogle-devel и ogle_gui версии 0.9.2 из репозитария dag. Проблемы с ALSA, поэтому поменял alsa на oss в /usr/share/ogle/oglerc.

Установка ogle 0.9.0 в RH8.0 из RPM

  • rpm -iv ogle-0.9.0-ogle1.i586.rpm ogle-devel-0.9.0-ogle1.i586.rpm ogle_gui-0.9.0-ogle1.i386.rpm xvattr-1.3-ogle1.i386.rpm

dvdbackup

Пакет dvdbackup позволяет узнать структуру DVD-Video и скопировать весь или часть фильма (что-то он туда добавляет лишнего).

Установка dvdbackup 0.1.1 в FC6:

  • получить и развернуть исходные тексты
  • вставить в dvdbackup.c перед первым включением dvdread/... строку
    #include <stdint.h>
  • UDFFindFile не экспортируется из libdvdread 0.9.5 и выше

В FC3 установил пакет dvdbackup-0.1.1 из репозитария dag.

Установка dvdbackup 0.1.1 в RH8.0:

Использование утилиты:

  • посмотреть структуру диска:
       dvdbackup -i /dev/dvd -I
  • скопировать группу заголовков (title set):
       dvdbackup -i /dev/dvd -T 2 -o куда
  • скопировать заголовок (title):
       dvdbackup -i /dev/dvd -t 2 -o куда
  • скопировать части заголовка (chapter):
       dvdbackup -i /dev/dvd -t 2 -s 20 -e 25 -o куда

mpgtx

Пакет mpgtx позволяет демультиплексировать потоки MPEG1 (системные) и MPEG2 (программные и транспортные), разбивать их, а также элементарные аудио и видео потоки на части (по границам GOP) или сливать потоки в один, получение информации, редактирование меток (id3 tag) MPEG1 audio layer 3.

В FC6 установил пакет mpgtx версии 1.3.1-2.lvn6 из репозитария livna.

В FC3 установил пакет mpgtx версии 1.3.1 из репозитария livna.

Установка mpgtx 1.3 в RH8.0:

  • получить и развернуть исходные тексты
  • ./configure
  • уменьшить оптимизацию с -O3 до -O2 (проблемы с gcc 3.2)
  • make

Использование утилит (в действительности, это ссылки на одну программу mpgtx):

  • mpgjoin (объединение потоков)
  • mpgsplit (разбиение потока)
  • mpginfo (получение информации о потоке)
  • mpgdemux (демультиплексирование потока)
  • tagmp3 (редактирование меток id3)

divx4linux

Поставляется в виде разделяемых библиотек для кодирования и декодирования файлов в формате DivX.

Я всегда с сомнением относился к этим ребятам, которые взяли входящие в состав стандарта MPEG4 (ISO/IEC 14496) исходные тексты (которые лежат в свободном доступе!) и, изображая таинственных "кул хацкеров", ограбивших MS, распространяют их исключительно в бинарном виде (коды действительно принадлежат MS, но их может взять любой на сайте ISO). При этом они несколько раз меняли формат данных, так что по мере распространения настоящего формата хранения MPEG4 будет трудно найти проигрыватель видеофильмов в формате DivX3. Кстати, если взять в качестве источника цифровое видео с DVD и закодировать его в формате MPEG1 со звуком в формате MP3 и ключевыми кадрами пореже (1/300 вместо обычных 1/15), то, записав его в виде VideoCD (это добавляет 15% емкости CD), можно получить качество сравнимое с DivX.

В FC3 установил пакеты divx4linux и divx4linux-devel версии 5.0.5 из репозитария at.

Установка 5.0.1 в RH8.0:

  • получить divx4linux501-20020418 с сайта DivX
  • ./install.sh
    • /usr/local/lib/libdivxdecore.so
    • /usr/local/lib/libdivxencore.so
    • /usr/local/include/decore.h
    • /usr/local/include/encore2.h

XviD

XviD представляет собой реализацию библиотек DivX с открытыми исходными текстами (которые некоторые "солидные" изготовители программ и оборудования для обработки видео тихонечко включают в свои системы).

В FC6 установил пакеты xvidcore (сюда вошёл libxvidcore4) и xvidcore-devel (а здесь отсутствует libxvidcore.a) версии 1.1.2-1.lvn6 из репозитария livna.

В FC3 установил пакеты libxvidcore4, xvidcore и xvidcore-devel версии 1.0.3 из репозитария at.

Установка XviD 0.9 в RH8.0:

  • получить и развернуть исходные тексты xvidcore-0.9.0.tar
  • зайти в build/generic
  • скопировать Makefile.linuxx86 в Makefile и отредактировать
  • make
  • make install
  • скопировать src/divx4.h и src/xvid.h в /usr/local/include (после этого mplayer собирается с xvid вместо divx4linux)

dvdauthor

Превращение набора MPEG-2 PS в стандартный DVD-Video в режиме командной строки.

В FC6 установил пакет dvdauthor версии 0.6.13-1.fc6 (0.6.14-1) из репозитария extras.

В FC3 установил пакет dvdauthor версии 0.6.11 из репозитария livna.

Описание применения.

libfame

Библиотека libfame (fame, recmpeg, fast assembler mpeg encoder) представляет собой ускоренный кодировщик видео MPEG-1 и MPEG-4

В FC6 установил пакеты libfame и libfame-devel версии 0.9.1-12.fc6 из репозитария freshrpms.

В FC3 установил пакеты libfame и libfame-devel версии 0.9.1 из репозитария livna.

Установка libfame 0.9.0 в RH8.0:

  • получить и развернуть исходные тексты
  • ./configure --enable-sse
  • make
  • make install
    • /usr/local/man/man3/fame*
    • /usr/local/lib/libfame*
    • /usr/local/include/fame*
    • /usr/local/bin/libfame-config
    • /usr/local/share/aclocal/libfame.m4
  • ldconfig

libm4isomedia

libm4isomedia - часть проекта gpac, предоставляет возможность для работы с файловым форматом MPEG-4 (.mp4, .mov, QT, ISO Media).

Установка libm4isomedia 0.2.2 в FC3:

  • поправить в configure определение version
  • ./configure
  • make
  • поправить Makefile (install: libm4systems_static.a на libm4isomedia_static.a; uninstall:)
  • make install

Для x264 библиотеки libm4isomedia оказалось недостаточно.

gpac

gpac - большой пакет для работы с MPEG-4 непонятного назначения (авторы называют это "framework"). Обеспечивает создание MPEG-4 программ, трансляцию их по сети и просмотр. Ставил его из-за библиотек и утилит для работы с файловым форматом MPEG-4 (.mp4, .mov, QT, ISO Media) для x264. В комплекте идут модифицированные версии библиотек работы с видео и звуком (ffmpeg и т.п.), но их я не устанавливал. Базовая платформа разработчиков - MS Windows. Для более полной сборки требуются js, amr-nb, mad, faad, xvid, ffmpeg (для которого требуется x264, для которого требуется gpac).

Установка gpac-CVS20070218 (gpac-CVS20071217) в FC6:

  • cvs -z3 -d:pserver:anonymous@gpac.cvs.sourceforge.net:/cvsroot/gpac co -P gpac
  • chmod u+x configure
  • ./configure --disable-ipv6 [--use-faad=local (для faad2-2.5, что-то поломали в интерфейсе)]
    • для --enable-amr-nb, --enable-amr-nb-fixed, --enable-amr-wb и --enable-amr необходимо тащить исходники с 3gpp
    • для --use-ffmpeg=local необходимо тащить дополнительный каталог
  • make help
  • make
  • make install (Root cannot install local mozilla plugins!)
    • /usr/local/bin
      • MP4Box (утилита для работы с файловым форматом MPEG-4)
      • MP4Client (проигрыватель командной строки с использованием SDL; при первом запуске создаёт .gpacrc; на файл, закодированный x264 сообщает, что нет такого кодека)
      • Osmo4 (?)
    • /usr/local/lib/gpac/gm_*
    • /usr/local/lib/ (libgpac-0.4.3-DEV.so, libgpac.so)
    • /usr/local/man/man1/ (mp4box.1, mp4client.1, gpac.1), заметьте MP4Box, но mp4box.1!
    • /usr/local/share/gpac/gpac.mp4
  • убедиться, что выполнился ldconfig
  • make install-lib
    • /usr/local/include/gpac/
    • /usr/local/include/gpac/internal/
    • /usr/local/include/gpac/modules/
    • /usr/local/lib/libgpac_static.a
  • MP4Client: error while loading shared libraries: (SELinux)
    /usr/local/lib/libgpac.so: cannot restore segment prot after reloc: Permission denied
  • chcon -t texrel_shlib_t /usr/local/lib/*.so
  • chcon -t texrel_shlib_t /usr/local/lib/gpac/*.so

Установка gpac-0.4.2-rc2 в FC3:

  • chmod u+x configure
  • ./configure --prefix=/usr/local --disable-ipv6
    • для --enable-amr-nb-fixed и --enable-amr необходимо тащить исходники с 3gpp
    • для --use-ffmpeg=local необходимо тащить дополнительный каталог
  • make help
  • make
  • make install
    • /usr/local/bin
      • MP4Box (утилита для работы с файловым форматом MPEG-4)
      • MP4Client (проигрыватель командной строки с использованием SDL; при первом запуске создаёт .gpacrc; на файл, закодированный x264 сообщает, что нет такого кодека)
    • /usr/local/lib/gpac/gm_*
    • /usr/local/lib/ (libgpac-0.4.2.so, libgpac.so)
    • /usr/local/man/man1/ (mp4box.1, mp4client.1, gpac.1), заметьте MP4Box, но mp4box.1!
  • убедиться, что выполнился ldconfig
  • make install-lib
    • /usr/local/include/gpac/
    • /usr/local/include/gpac/internal/
    • /usr/local/include/gpac/modules/
    • /usr/local/lib/libgpac_static.a

Установка gpac из CVS (20060613) в FC3:

  • yum install libjs
  • поменялись правила доступа к анонимному CVS серверу на sourceforge.net:
    cvs -z3 -d:pserver:anonymous@gpac.cvs.sourceforge.net:/cvsroot/gpac co -P gpac
  • chmod u+x configure
  • ./configure --prefix=/usr/local --disable-ipv6
    • для --enable-amr-nb-fixed и --enable-amr необходимо тащить исходники с 3gpp
    • для --use-ffmpeg=local необходимо тащить дополнительный каталог
  • make help
  • make
  • make install
    • /usr/local/bin
      • MP4Box (утилита для работы с файловым форматом MPEG-4)
      • MP4Client (проигрыватель командной строки с использованием SDL; при первом запуске создаёт .gpacrc; на файл, закодированный x264 сообщает, что нет такого кодека)
    • /usr/local/lib/gpac/gm_*
    • /usr/local/lib/ (libgpac-0.4.1-DEV.so, libgpac.so)
    • /usr/local/man/man1/ (mp4box.1, mp4client.1, gpac.1), заметьте MP4Box, но mp4box.1!
  • убедиться, что выполнился ldconfig
  • make install-lib
    • /usr/local/include/gpac/
    • /usr/local/include/gpac/internal/
    • /usr/local/include/gpac/modules/
    • /usr/local/lib/libgpac_static.a

Установка gpac из CVS (20060524) в FC5 (что-то долго нет релиза):

  • поменялись правила доступа к анонимному CVS серверу на sourceforge.net:
    cvs -z3 -d:pserver:anonymous@gpac.cvs.sourceforge.net:/cvsroot/gpac co -P gpac
  • chmod u+x configure
  • ./configure --prefix=/usr/local --enable-gprof --disable-ipv6
    • для --enable-amr-nb-fixed и --enable-amr необходимо тащить исходники с 3gpp
    • для --use-faad=local необходимо тащить дополнительный каталог
    • для --use-mad=local необходимо тащить дополнительный каталог
    • для --use-xvid=local необходимо тащить дополнительный каталог
    • для --use-ffmpeg=local необходимо тащить дополнительный каталог
    • --use-js=local вызывает проблемы сборки в каталоге laser
  • make help
  • заменить vapth на vpath в applications/generators/SVG/Makefile
  • make
  • make install
    • /usr/local/bin
      • MP4Box (утилита для работы с файловым форматом MPEG-4)
      • MP4Client (проигрыватель командной строки с использованием SDL; при первом запуске создаёт .gpacrc; на файл, закодированный x264 сообщает, что нет такого кодека)
    • /usr/local/lib/gpac/gm_*
    • /usr/local/lib/ (libgpac-0.4.1-DEV.so, libgpac.so)
    • /usr/local/man/man1/ (mp4box.1, mp4client.1, gpac.1), заметьте MP4Box, но mp4box.1!
  • убедиться, что выполнился ldconfig
  • make install-lib
    • /usr/local/include/gpac/
    • /usr/local/include/gpac/internal/
    • /usr/local/include/gpac/modules/
    • /usr/local/lib/libgpac_static.a

Установка gpac 0.4.0-rc2 в FC5 (что-то долго нет релиза):

  • chmod u+x configure
  • ./configure --prefix=/usr/local
  • make
  • закоментировать gl в modules/x11_out/x11_out.c
  • make
  • make install
    • /usr/local/bin
      • MP4Box (утилита для работы с файловым форматом MPEG-4)
      • MP42AVI (преобразование векторной графики MPEG-4 BIFS в несжатый AVI)
      • MP4Client (проигрыватель командной строки с использованием SDL; при первом запуске создаёт .gpacrc; на файл, закодированный x264 сообщает, что нет такого кодека)
    • /usr/local/lib/gpac/
    • /usr/local/lib/ (libm4systems-0.3.0.so, libm4systems.so)
    • /usr/local/man/man1/ (mp4box.1, mp42avi.1, mp4client.1, gpac.1)
  • make install-lib
    • /usr/local/include/gpac/
    • /usr/local/lib/libm4systems_static.a

Установка gpac 0.3.0 в FC3:

  • chmod u+x configure
  • ./configure --prefix=/usr/local
  • make
  • make install
    • /usr/local/bin
      • MP4Box (утилита для работы с файловым форматом MPEG-4)
      • MP42AVI (преобразование векторной графики MPEG-4 BIFS в несжатый AVI)
      • MP4Client (проигрыватель командной строки с использованием SDL (версия с Unicode не работает), .gpacrc)
    • /usr/local/lib/gpac/
    • /usr/local/lib/ (libm4systems-0.3.0.so, libm4systems.so)
    • /usr/local/man/man1/ (mp4box.1, mp42avi.1, mp4client.1, gpac.1)
  • make install-lib
    • /usr/local/include/gpac/
    • /usr/local/lib/libm4systems_static.a

Сборка фильма из видеопотока H.264 (делался x264) и MP3 (делался lame), если памяти хватит:

MP4Box -add имя.y4m.median.mp4 -add имя.mp3 имя.mp4

x264 (кодировщик H.264 или MPEG-4 AVC)

x264 (неофициальный сайт, список изменений) - кодировщик H.264 (MPEG-4 AVC). Для вывода в формате MP4 требуется gpac (для версий 299 и выше требуется gpac-0.4).

В FC6 установил пакеты x264, x264-devel, x264-gui и x264-gui-devel версии 0-0.8.20061028.lvn6 из репозитария livna (без gpac, а стало быть вывода в формате MP4). Репозитарий freshrpms имел более свежую версию 0.0.0-0.3.20061214.fc6, но мне не захотелось бороться с зависимостями пакетов (ffmpeg) из разных репозитариев.

Установка дополнительно x264 svn-622 (svn-714, требуется yasm) в FC6 в /usr/local (требуется, чтобы выводить в .mp4, но и без пакета нельзя, т.к. включён в цепочку зависимостей):

  • ./configure --enable-mp4-output --enable-gtk --enable-pthread --enable-visualize --enable-shared
  • make
  • make install
    • /usr/local/include/ (x264_gtk.h, x264_gtk_enum, x264.h)
    • /usr/local/lib/ (libx264gtk.a, libx264gtk.so, libx264.a, libx264.so.54, libx264.so)
    • /usr/local/bin/ (x264_gtk_encode, x264
    • /usr/local/lib/pkgconfig/ (x264gtk.pc, x264.pc
    • /usr/local/share/x264/x264.png

Установка x264 svn-598 в FC3 (--enable-gtk даёт ошибки):

  • ./configure --enable-mp4-output --enable-visualize --enable-pthread
  • make
  • make install
    • /usr/local/include/x264.h
    • /usr/local/lib/libx264.a
    • /usr/local/bin/x264
    • /usr/local/lib/pkgconfig/x264.pc

Установка x264 svn-532 в FC3:

  • ./configure --enable-mp4-output --enable-visualize [--enable-pthread]
  • make
  • make install
    • /usr/local/include/x264.h
    • /usr/local/lib/libx264.a
    • /usr/local/bin/x264
    • /usr/local/lib/pkgconfig/x264.pc

Установка x264 svn-512 в FC5:

  • make distclean
  • ./configure --enable-mp4-output --enable-visualize [--enable-pthread]
  • make
  • отредактировать muxer.c (лишний параметр у gf_isom_open)
  • make
  • make install
    • /usr/local/include/x264.h
    • /usr/local/lib/libx264.a
    • /usr/local/bin/x264

Установка x264 svn-270M в FC3:

  • rm .depend
  • ./configure --enable-mp4-output --enable-visualize
  • make
  • make install
    • /usr/local/include/x264.h
    • /usr/local/lib/libx264.a
    • /usr/local/bin/x264

Кодирование в MP4 с понравившимися мне параметрами (--qp 18 эквивалентен -q 2 в mpeg2enc; можно ещё указать --8x8dct, что даёт 2.6% сжатия, но не все программы смогут прочитать результат; недоделанный файл смотреть нельзя; для некоторых отрывков (кодированный с хорошим качеством белый шум) не хватает P4 2.4 GHz):

x264 -v --no-psnr --scenecut -1 --direct auto --qp 18 --me umh --subme 7 --trellis 2 -o имя.mp4 fifo.y4m

mpeg2dec

В состав пакета mpeg2dec 0.3.1 входила полезная утилита mpeg2toc, которая строила оглавление DVD. В текущей версии она пропала.

В FC6 установил пакеты mpeg2dec и mpeg2dec-devel версии 0.4.1-2.lvn6 из репозитария livna.

В FC3 свежую версию устанавливать не стал, а mpeg2toc взял из старой (исходников которой не осталось).

ffmpeg

FFmpeg - видеокодек MPEG1/MPEG4/H263/RV и звука AC3/MPEG, оптимизированный по скорости.

В FC6 установил пакеты ffmpeg, ffmpeg-devel и ffmpeg-libs версии 0.4.9-0.34.20070204.lvn6 из репозитария livna (требует x264), а заодно gstreamer-ffmpeg версии 0.10.2-1.lvn6, gstreamer-plugins-ugly 0.10.5-1.lvn6 и gstreamer-plugins-ugly-devel 0.10.5-1.lvn6 из репозитария livna (a52dec, asf, dvdlpcmdec, dvdread, dvdsub, iec958, lame, mad, mpeg2dec, mpegstream, rmdemux). Затем gstreamer-plugins-bad (bz2, cdxaparse, dfbvideosink, dtsdec, faac, faad, freeze, glimagesink, gsm, mms, modplug, musepack, neonhttpsrc, pitch, qtdemux, sdlvideosink, speed, swfdec, trm, tta, video4linux2, xingheader, xvid.so), gstreamer-plugins-bad-devel и gstreamer-plugins-farsight (ice, jrtp, rtpdemux, rtpjitterbuffer) версии 0.10.3-3.fc6 из репозитария freshrpms (потянул libmms из livna - обработка mms://).

В FC3 установил пакеты ffmpeg-0.4.9-9_cvs20050517.rhfc3.at и ffmpeg-devel-0.4.9-9_cvs20050517.rhfc3.at из репозитария at. Предварительно пришлось поставить пакеты imlib2-1.2.0-5 (библиотека работы с изображениями) и libdc1394-1.0.0 из репозитария us (libdc1394-2.0.0-0.1.pre5.1 из dag). Версия 0:0.4.9-14_cvs20060301.rhfc3.at потянула (разбили на куски, причём разных версий?) пакеты libavcodec51 (0:0.4.9-14_cvs20060301.rhfc3.at), libavutil49 (0:0.4.9-14_cvs20060301.rhfc3.at), libavformat50 (0:0.4.9-14_cvs20060301.rhfc3.at). Проблема с зависимостями в FC3: ffmpeg хочет transcode, а тот нерелизный mjpegtools.

libquicktime

libquicktime - библиотека для чтения и записи файлов в формате quicktime.

В FC6 установил пакеты libquicktime, libquicktime-devel и libquicktime-utils версии 0.9.10-3.lvn6 из репозитария livna.

В FC3 установил пакеты libquicktime0, libquicktime1394_0, libquicktime и libquicktime-devel версии 0.9.8 из репозитария at (libquicktime-0.9.10-1.fc3 и libquicktime-devel-0.9.10 из репозитария dag, потянул faac-1.24-1.1.fc3.rf.i386).

libdv

libdv предоставляет собой библиотеку для кодирования и декодирования видео в формате DV (видеокамеры с интерфейсом IEEE 1394, Firewire, iLink), включая примеры использования playdv и encodedv.

В FC6 установил пакеты libdv, libdv-tools и libdv-devel версии 1.0.0-1.fc6 из репозитария updates и dvgrab версии 2.1-2.fc6.

В FC3 установил пакеты libdv4, libdv-tools и libdv-devel версии 0.103 из репозитария at. Предварительно пришлось обновить dvgrab с версии 1.6-1 до 1.6-1.1 из репозитария dag.

Установка libdv 0.99 в RH8.0:

zvbi

Библиотека zvbi представляет средства для извлечения VBI кода (цифровой сигнал, закодированный в неиспользуемых промежутках телевизионного сигнала) и декодирования телетекста и CC. Используется в xawtv.

В FC6 установил пакеты zvbi, zvbi-devel и zvbi-fonts версии 0.2.22-2.fc6 (0.2.24-1.fc6) из репозитария extras.

В FC3 установил пакеты zvbi и zvbi-devel версии 0.2.21 из репозитария dag.

aalib

Библиотека aalib позволяет выводить изображения на а/ц терминал.

В FC6 установил пакеты aalib и aalib-devel версии 1.4.0-0.11.rc5.fc6 из репозитария extras. Заодно libcaca-devel и caca-utils версии 0.9-11.fc6 из репозитария extras.

В FC3 установил пакеты aalib и aalib-devel версии 1.4.0 из репозитария dag.

avifile

Пакет avifile предоставляет библиотеку для чтения и разборки AVI (ASF, WMV) файлов, а также некоторый набор использующих ее утилит. В качестве кодеков в некоторых случаях используются исполняемые DLL файлы, предназначенные для Win32. Я использую только библиотеки (для сборки других пакетов) и avitype.

Установка avifile из CVS в FC6 не удалась

  • cvs -d:pserver:anonymous@avifile.cvs.sourceforge.net:/cvsroot/avifile login
  • cvs -z3 -d:pserver:anonymous@avifile.cvs.sourceforge.net:/cvsroot/avifile co avifile
  • ./autogen.sh
  • ./configure --enable-x86opt --enable-static --enable-release --with-freetype2 --without-lame
  • make
  • видимо, создаётся неправильный configure

Установка avifile 0.7.45 в FC6:

  • создать и заполнить /usr/lib/win32 (у меня сложилась исторически и содержит файлы .dll, .acm, .qtx, .ax, .drv, .vmp, .xa и даже разделяемых библиотек .so; откуда что взялось и кому нужно понять невозможно, поэтому таскаю с собой все, что есть; для начала можно взять с сайта пакета avifile; затем дополнить при установке пакетов xine и mplayer)
  • получить и развернуть исходные тексты
  • faad2-2.5 не подходит! [отключить have_faad в configure]
  • CC=gcc34 CXX=g++34 ./configure --enable-x86opt --enable-static --with-freetype2 --without-lame
  • make
  • make install
    • /usr/local/bin/:
      • avifile-config
      • aviplay (показать видео, может использоваться XVideo, OpenGL, SDL)
      • avibench (измерение производительности процессора и видеосистемы на примере)
      • avicat (вырезание кусков и слияние AVI файлов)
      • avitype (получение информации о видео)
      • avimake (изготовление AVI файла (DIVX) из последовательности JPEG)
      • kv4lsetup
      • avirec
      • avicap
      • avirecompress
    • /usr/local/lib/pkgconfig/avifile.pc
    • /usr/local/share/avifile-0.7/doc/ (README, ChangeLog, EXCEPTIONS, KNOWN_BUGS, TODO, VIDEO-PERFORMANCE, WARNINGS, README-DEVEL, avicap/, )
    • /usr/local/lib/avifile0.7/ (подгружаемые библиотеки с кодеками: ac3pass, audiodec, ffmpeg, mad_audiodec, mp3lame_audioenc, mp3lamebin_audioenc, mpeg_audiodec, osmjpeg, vidix, vorbis_audio, win32, xvid4)
    • /usr/local/lib/ (libaviplayavutil-0.7.so.0.0.45, libaviplayavutil.a, libaviplayavformat-0.7.so.0.0.45, libaviplayavformat.a, libaviplayavcodec-0.7.so.0.0.45, libaviplayavcodec.a, libaviplaydha-0.7.so.0.0.45, libaviplaydha.a, libaviplayvidix-0.7.so.0.0.45, libaviplayvidix.a, libaviplay-0.7.so.0.0.45, libaviplay.a, libqavm-0.7.so.0.0.45, libqavm.a)
    • /usr/local/share/avifile-0.7/action.cfg
    • /usr/local/share/avifile0.7/pixmaps/ (картинки для aviplay)
    • /usr/local/share/avifile-0.7/i18/
    • /usr/local/share/avifile-0.7/scripts/ (avicap-shutdown, avicap-setnvram, avicap-boot)
    • /usr/local/man/man1/ (avibench.1, avicap.1, avicat.1, avifile-config.1, avimake.1, aviplay.1, avirec.1, avirecompress.1, avitype.1, kv4lsetup.1)
    • /usr/local/include/avifile-0.7/
  • aviplay: error while loading shared libraries: /usr/local/lib/libaviplayavcodec-0.7.so.0: cannot restore segment prot after reloc: Permission denied
  • chcon -t texrel_shlib_t /usr/local/lib/*.so
  • chcon -t texrel_shlib_t /usr/local/lib/avifile-0.7/*.so
  • chcon -t texrel_shlib_t /usr/local/lib/avifile-0.7/vidix/*.so

Установка avifile 0.7.43 в FC3 вручную (были какие-то проблемы с зависимостями в репозитарии, а потом не стал переделывать).

Установка avifile 0.7.27-20030122 в RH8.0:

  • создать и заполнить /usr/lib/win32 (у меня сложилась исторически и содержит файлы .dll, .acm, .qtx, .ax, .drv, .vmp, .xa и даже разделяемых библиотек .so; откуда что взялось и кому нужно понять невозможно, поэтому таскаю с собой все, что есть; для начала можно взять с сайта пакета avifile; затем дополнить при установке пакетов xine и mplayer)
  • получить и развернуть исходные тексты
  • ./configure --enable-x86opt
  • make
  • make install
    • /usr/local/lib/avifile0.7/ (подгружаемые библиотеки с кодеками)
    • /usr/local/lib/libaviplay*
    • /usr/local/lib/libqavm*
    • /usr/local/share/avifile0.7/ (картинки для aviplay)
    • /usr/local/man/man1/aviplay.1
    • /usr/local/include/avifile/
    • /usr/local/bin/:
      • aviplay (показать видео, может использоваться XVideo, OpenGL, SDL)
      • avibench (измерение производительности процессора и видеосистемы на примере)
      • avicat (вырезание кусков и слияние AVI файлов)
      • avitype (получение информации о видео)
      • avimake (изготовление AVI файла (DIVX) из последовательности JPEG)
      • kv4lsetup
      • avirec
      • avicap
      • avirecompress
      • avifile-config

tvtime

tvtime имитирует телевизор на компьютере, выводя изображение на экран с частотой 50/60 Гц, снимая тем самым проблему с чересстрочным изображением. Обычные способы борьбы с чересстрочной разверткой также имеются. Для сборки требуются пакеты: audiofile-devel, esound-devel, qt-devel, SDL-devel, SDL_image-devel, SDL_mixer-devel, SDL_net-devel. Некоторые алгоритмы борьбы с чересстрочной разверткой требуют как минимум 4 буферов video4linux.

Раннюю версию tvtime 0.13.tar.gz можно использовать как учебное пособие для написания программ с интерфейсом video4linux (только в tvtime.c надо: поставить break при разборе ключа d; поменять ширину захвата с 720 на 768; добавить SECAM). Используется /dev/rtc, так что надо выполнять с правами root. Для установки параметров можно использовать v4lctl от xawtv.

Текущая версия tvtime увеличилась с 13 кБ до 618 кБ (правда, половина это .png) и превратилась в полноценную программу со всеми рюшечками (0.9.7 - уже 3.8 MB, из них 2.8 MB - шрифты в формате FreeFont).

В FC6 пакет tvtime версии 1.0.1-6 имеется в комплекте.

В FC3 пакет tvtime версии 0.9.15 имеется в комплекте (1.0.2 из dag).

Установка tvtime 0.9.7 в RH8.0:

  • получить и развернуть исходные тексты
  • ./configure
  • в src/Makefile в переменной XML2_FLAG убрать в конце подстроку libxml
  • make
  • make install
    • /usr/local/bin/tvtime
    • /usr/local/share/tvtime: menubg.png, testlogo.png, credits.png, FreeSansBold.ttf, FreeMono.ttf, FreeMonoBold.ttf, FreeMonoOblique.ttf, freefont-sfd.tar.gz (это лишнее!)
  • cp tvtime.1 /usr/local/man/man1/
  • cp tvtimerc.5 /usr/local/man/man5/
  • скопировать docs/default.tvtimerc в ~/.tvtime/tvtimerc и настроить его (самодокументирован)

Конфигурация и список станций хранятся в формате XML (/etc/tvtime/tvtime.xml, ~/.tvtime/tvtime.xml, ~/.tvtime/stationlist.xml).

Поиск телестанций (записывается в раздел custom/SECAM; если имеются каналы в PAL, то повторить, а потом слить результаты; после поиска вписать имена каналов - UTF-8 - в stationlist.xml):

tvtime-scanner -n SECAM -i номер-входа-с-телевизионным-сигналом

Ключи запуска:

  • -i (номер источника сигнала v4l, у меня: 0 - тюнер, 1 - Composite, 2 - S-Video)
  • -m (вывести изображение на весь экран)
  • -n (PAL, NTSC, SECAM)
  • -f имя-частотной-таблицы (после tvtime-scanner необходимо указать "custom")
  • -a (16:9)

Основные клавиши управления (можно переназначить или использовать lirc с помощью утилиты tvtime-command или записывать команды в ~/.tvtime/tvtimefifo)

  • q - выход
  • F1 или TAB или правая кнопка мышки - меню (полезно там побродить)
  • Enter или левая кнопка мышки - показать текущие настройки
  • стрелки вверх/вниз - смена канала
  • цифры и Enter - ввод номера канала
  • BS - предыдущий канал
  • i - смена источника сигнала (если нет звука, попереключайте источник)
  • m - mute
  • +/- или стрелки влево/вправо - громкость
  • f - вывести изображение на весь экран
  • s - сохранить копию экрана
  • F5/F6/F7 - настройки яркости, контраста, насыщенности (новая версия)
  • F3/F4 - яркость (старая версия)
  • F5/F6 - контраст (старая версия)
  • F7/F8 - насыщенность (старая версия)

xanim

xanim 2.80.2 (не развивается с 1999) позволяет просматривать (и перекодировать) видео в различных архаичных форматах (FLI/FLC, Indeo, Creative YUV, gif animated ;). Модули могут использоваться другими пакетами.

Установка из RPM (FC6, FC3, RH8)

  • взять RPM отсюда, отсюда или отсюда
  • rpm -i xanim-2.80.2-5.i386.rpm
    • /usr/X11R6/bin/xanim
    • /usr/X11R6/lib/xanim/mods/vid_cvid_2.0_linuxELFx86g21.xa
    • /usr/X11R6/lib/xanim/mods/vid_cyuv_1.0_linuxELFx86g21.xa
    • /usr/X11R6/lib/xanim/mods/vid_h261_1.0_linuxELFx86g21.xa
    • /usr/X11R6/lib/xanim/mods/vid_h263_1.1_linuxELFx86g21.xa
    • /usr/X11R6/lib/xanim/mods/vid_iv32_2.1_linuxELFx86g21.xa
    • /usr/X11R6/lib/xanim/mods/vid_iv41_1.0_linuxELFx86g21.xa
    • /usr/X11R6/lib/xanim/mods/vid_iv50_1.0_linuxELFx86g21.xa
    • /usr/X11R6/man/man1/xanim.1x.gz
    • /usr/share/doc/xanim-2.80.2/

mjpegtools

Пакет mjpegtools предоставляет средства для захвата видео в форматах MJPEG и YUV (YUV4MPEG, в новых версиях YUV4MPEG2), утилиты преобразования форматов и фильтрации видео, сжатие в MJPEG, MPEG-1 и MPEG-2, в т.ч. в виде, подходящем для записи на VideoCD и SVCD (включая галереи неподвижных изображений), MPEG-4 (DivX). Форматы YUV4MPEG и YUV4MPEG2 поддерживаются многими другими пакетами. Теоретически также позволяет редактировать видео (включая переходы), но в пакетном режиме, что удобным не назовешь. В основном, использую для удаления шума (yuvdenoise очень хорош), обрезки кадров (yuvscaler очень быстр) и сжатия MPEG (поддерживает все ограничения аппаратных проигрывателей и неподвижные изображения для VideoCD/SVCD). Для программирования и записи на CD можно использовать vcdimager.

Установка в FC6 из пакетов mjpegtools и mjpegtools-devel версии 1.9.0 из репозитария freshrpms (в livna более старая версия - 1.8.0-7 - в пакетах mjpegtools, mjpegtools-devel, mjpegtools-gui, mjpegtools-libs).

Установка версии 1.6.2 в FC3 из исходников:

  • получить и развернуть в отдельную директорию исходные тексты jpeg-mmx-0.1.6.tar.gz, перейти в нее
  • ./configure
  • make (не устанавливать!)
  • получить и развернуть в отдельную директорию исходные тексты mjpegtools-1.6.2.tar.gz, перейти в нее
  • ./configure --with-jpeg-mmx=директория-jpeg-mmx-0.1.6 --without-quicktime --with-dv-yv12 --with-x --enable-large-file --enable-cmov-extensions --enable-simd-accel
  • make clean
  • make (новый gcc не любит goto)
  • make install
    • /usr/local/lib/libmjpegutils.a
    • /usr/local/lib/liblavfile*
    • /usr/local/lib/liblavjpeg*
    • /usr/local/lib/liblavrec*
    • /usr/local/lib/liblavplay*
    • /usr/local/lib/libmplex2*
    • /usr/local/lib/libmpeg2encpp*
    • /usr/local/lib/pkgconfig/mjpegtools.pc
    • /usr/local/bin/mjpegtools-config
    • /usr/local/include/mjpegtools/
    • /usr/local/bin/
      • lavrec (запись в форматах .avi, .qt, .movtar со сжатием MJPEG с соответствующего аппаратного устройства или обычного video4linux, например на основе Bt848/Bt878 с помощью программного сжатия)
      • testrec (тестовая программа записи звука)
      • lavvideo (тестовая программа захвата с v4l)
      • lavinfo (информация об изображении и звуке)
      • lavplay (проигрывание записей в форматах .avi, .qt, .movtar со сжатием MJPEG на аппаратуре типа Zoran, DC10 или программно (SDL), позволяет создавать edit list для последующего использования)
      • glav (простейший графический создаватель edit list на уровне cut/paste; команды см. README.glav)
      • lavtrans (преобразует записи со сжатием MJPEG из одного формата в другой, позволяет также конструировать новую запись используя edit list)
      • lav2wav (извлекает звук в формате WAV из записей в форматах .avi, .qt, .movtar со сжатием MJPEG или edit list)
      • lavaddwav (добавить WAV к AVI или QT)
      • lav2yuv (преобразование записей в форматах .avi, .qt, .movtar со сжатием MJPEG или edit list в формат YUV4MPEG2)
      • yuv2lav (преобразование из формата YUV4MPEG2 в записи в форматах .avi, .qt, .movtar со сжатием MJPEG)
      • jpeg2yuv (преобразование последовательности JPEG в YUV4MPEG2)
      • yuvplay (проигрывание записей в формате YUV4MPEG2, используется SDL)
      • ppmtoy4m (преобразование последовательности PPM в YUV4MPEG2)
      • y4mtoppm (преобразование из YUV4MPEG2 в последовательность PPM, потребуется также pnmsplit)
      • pgmtoy4m (псевдо PGM от mpeg2dec и pgmpipe преобразуются в YUV4MPEG2 4:2:0p)
      • y4mcolorbars (создает тестовый шаблон в формате YUV4MPEG2)
      • y4mshift (сдвиг изображения в каждом кадре потока)
      • yuvfps (вставляет или удаляет кадры в поток, подгоняя под требуемый fps; есть yuvmotionfps)
      • y4mblack (создание кадров определённого цвета, не обязательно чёрного)
      • y4mtoyuv (преобразование из YUV4MPEG2 в EYUV для mpeg4ip)
      • yuvinactive (закрасить прямоугольник в каждом кадре потока)
      • png2yuv (преобразование последовательности PNG в YUV4MPEG2)
      • ypipe (какая-то тестовая программа)
      • lavpipe (комбинирует несколько источников видео с использованием фильтров и скрипта pipe list в YUV4MPEG2; см. также README.lavpipe; кстати, во времена СССР за умение писать осмысленные pipe list давали государственную премию ;)
      • -lav2divx (преобразование записей в форматах .avi, .qt, .movtar со сжатием MJPEG или edit list в формат AVI со сжатием DivX; используется пакет avifile; ключ --encoder позволяет использовать любой кодек этого пакета)
      • -yuv2divx (преобразование из YUV4MPEG2 с добавлением звука в формат AVI со сжатием DivX; используется пакет avifile; ключ --encoder позволяет использовать любой кодек этого пакета)
      • -divxdec (преобразование AVI файла, понимаемого пакетом avifile в формат YUV4MPEG2, .avi, .qt, .movtar со сжатием MJPEG или WAV)
      • mp2enc (преобразование звука из WAV (PCM) в MPEG-2 layer-II, для получения MP3 используйте lame)
      • mpeg2enc (преобразование из YUV4MPEG2 в формат видео MPEG-1 (ES) или MPEG-2 (PES) с соблюдением профилей VideoCD и SVCD, в т.ч. неподвижные изображения; позволяет делать пометки для дальнейшей разрезки на отдельные CD)
      • mplex (объединение элементарных аудио (MP2, MP3, AC3) и видео потоков MPEG-1/MPEG-2 в программный/системный поток с соблюдением профилей VideoCD и SVCD; разрезает получившийся поток на отдельные CD)
      • lav2mpeg (скрипт для преобразования записей в форматах .avi, .qt, .movtar со сжатием MJPEG или edit list в VCD/SVCD/MPEG-1/MPEG-2 с удалением шумов и масштабированием; лучше выбирать параметры отдельных программ самому, если, конечно, важен результат)
      • !lav2avi.sh
      • mpegtranscode (недоделанный скрипт для преобразования MPEG в формат, совместимый с VCD/SVCD)
      • yuvscaler (быстрое масштабирование YUV4MPEG2 потока, обрезание кадров, преобразование форматов кадра 16:9 и 4:3, смена порядка полей, изменение порядка строк, подгонка под VCD или SVCD)
      • yuvdenoise (подавитель шумов YUV4MPEG2 потока с использованием похожести соседних кадров и компенсацией движения; распознает черную кайму вокруг изображения и подавляет эффект чересстрочного изображения)
      • yuvmedianfilter (простенький подавитель шумов YUV4MPEG2 потока путем размазывания мусора (не всей картинки!) по окрестностям)
      • yuvycsnoise (подавлением шумов YUV4MPEG2 потока, внесенных некачественным NTSC Y/C разделителем)
      • yuvkineco (восстановление фильмов в формате YUV4MPEG2 потока, покуроченных преобразованием pulldown 2-3 (преобразование прогрессивного фильма в чересстрочный NTSC удвоением каждого пятого поля); частота кадров результата д.б. 23.97 fps, иначе придется вставлять дублирующие кадры)
      • yuvcorrect, yuvcorrect_tune (пакетный и интерактивный фильтры по редактированию: последовательность полукадров, яркость, гамма, цветовой сдвиг)
      • transist.flt (фильтр - переход от одного видео к другому)
      • matteblend.flt (фильтр - смешивание по альфа каналу)
      • multiblend.flt (фильтр - смешивание 2 видеопотоков различными способами)
    • /usr/local/info/mjpeg-howto.info*
    • /usr/local/man/man1: mjpegtools.1 и отдельные тексты для каждой программы
    • /usr/local/man/man5/yuv4mpeg.5

Рассмотрим некоторые способы применения пакета (у меня накопился большой экспериментальный материал по mjpegtools, но я выложу его отдельно позднее). В примерах используются программы streamer из xawtv и lame.

Захват 10-секундного тестового отрезка с SVHS видеомагнитофона со сжатием MJPEG в формате AVI и преобразование его в MPEG-1 (мощности P4 2400 достаточно для захвата полного кадра и еще немного остается):

streamer -r 25 -s 384x288 -t 0:10 -n pal -i S-Video -f mjpeg -F stereo -o test.avi
lav2yuv test.avi | mpeg2enc -o video.m1v
lav2wav test.avi | mp2enc -o audio.mp2
mplex audio.mp2 video.m1v -o movie.mpg

Захват отдельно видео в формате YUV4MPEG2 и звука в WAV, удаление чересстрочной развертки (deinterlace в yuvdenoise включается ключом -F, в документации ошибка) и преобразование в MPEG-1:

streamer -q -r 25 -s 768x576 -t 3:00 -n pal -i S-Video -F stereo -o testbig.yuv -O audio.wav
mp2enc -o audio.mp2 < audio.wav
yuvdenoise -F -f < testbig.yuv | mpeg2enc -o video.m1v
mplex audio.mp2 video.m1v -o testbigdei.mpg

Подавление шума для того же видеофрагмента, уменьшение размера кадра под ограничения MPEG-2 MP@ML и преобразование в MPEG-2 для нестандартного SVCD:

yuvdenoise -F < testbig.yuv | yuvscaler -M RATIO_1_1_1_1 -M BICUBIC -O SIZE_720x576 | \
mpeg2enc -f 5 -V 200 -b 1152 -D 10 -o video.m2v
mplex -f 5 audio.mp2 video.m2v -o testbigdn.mpg

Получение MPEG-2 со звуковой дорожкой в формате MP3 (аппаратный проигрыватель не воспринимает такой набор, хотя умеет проигрывать MP3!):

lame -b 128 -h audio.wav > audio.mp3
mplex -f 4 video.m2v audio.mp3 -o testbigdn720m2mp3.mpg

Получение MPEG-2, готового для записи на SVCD:

cat testbigdn.yuv | yuvscaler -O SVCD |  mpeg2enc -f 4 -o video.m2v
mplex -f 4 video.m2v audio.mp2 -o testbigdn.svcd.mpg

Получение MPEG-1, готового для записи на VCD:

cat testbigdn.yuv | yuvscaler -O VCD |  mpeg2enc -f 1 -o video.m1v
mplex -f 1 video.m1v audio.mp2 -o testbigdn.vcd.mpg

Фильтр, который я использую для очень шумного источника, который надо сильно сжать (границы рамки подбираются отдельно для каждого фильма):

yuvscaler -I USE_736x496+16+36 -n p -M RATIO_1_1_1_1 -O SIZE_736x496 | \
yuvdenoise -F -l 1 -t 8 -p 8 -S 100 | yuvmedianfilter -r 2 -t 2

Формат YUV4MPEG2

Формат yuv4mpeg (YUV4MPEG2, для mjpegtools версии 1.5 и выше) описывает только видео, звук должен храниться отдельно. Поток видеоданных состоит из заголовка потока и последовательности кадров.

Заголовок потока - текстовая строка "YUV4MPEG2 ", за которой следуют разделяемые пробелами поля. Завершается заголовок "\n". Поле состоит из односимвольного имени и подряд идущего значения:

  • W - ширина кадра в пикселях
  • H - высота кадра в пикселях
  • I - формат развертки:
    • p - прогрессивная
    • t - верхнее поле первым
    • b - нижнее поле первым
    • ? - формат развертки неизвестен
  • F - частота кадров в виде отношения числитель:знаменатель
  • A - геометрическое соотношение ширины пикселя (не кадра!) к высоте в виде отношения двух чисел
  • X - строка метаданных, не может содержать пробелы

Каждый кадр состоит из заголовка кадра и 3 байтовых массивов (planar CCIR-601 Y'CbCr 4:2:0) - отдельно яркость, отдельно Cb и Cr для нечетных точек нечетных строк. Строки полей при черезстрочном формате перемежаются в кадре. Размер кадра берется из заголовка потока.

Заголовок кадра - текстовая строка "FRAME ", за которой следуют разделяемые пробелами поля. Завершается заголовок "\n". Поле состоит из односимвольного имени и подряд идущего значения:

  • X - строка метаданных, не может содержать пробелы

Библиотека libmjpegutils содержит C функции для работы с потоками в формате YUV4MPEG2. Интерфейс описан в yuv4mpeg.h. Способ использования библиотеки легко понять из текста написанной мной утилиты yuvrange (-h - это help) для вырезки интервала кадров из потока YUV4MPEG2 (почему-то в составе пакета такой утилиты не нашлось). В этом же тексте можно увидеть и неправильный способ работы с потоком YUV4MPEG2 (опция получения разности потоков), не перепутайте ;).

Утилита yuvsplit (-h - это help) позволяет вырезать из потока YUV4MPEG2 отдельную цветовую плоскость в "сыром" формате для ее последующей обработки.

Утилита raw422toy4m (-h - это help) позволяет преобразовать "сырой" видеопоток в цветовом пространстве 4:2:2 planar (например, получается при захвате с помощью "streamer -f 422p ...") в поток YUV4MPEG2 с возможным преобразованием чересстрочной развертки в последовательность кадров с частотой 50 fps (-d, -i). Возможна выдача гистограммы (-v 2) и экспериментальный режим выравнивания начал строк развертки для плохих VHS записей (-s).

transcode

Пакет transcode предоставляет множество фильтров для преобразования видеопотоков.

В FC6 установил пакет transcode версии 1.0.2-11.fc6 из репозитария freshrpms (в livna есть пакет версии 1.0.2-12.lvn6, но он тянет более старый mjpegtools).

В FC3 установил пакет transcode версии 0.6.14 из репозитария at (1.0.0 из dag, 1.0.2 из at тянет свою версию mjpegtools).

Установка transcode 0.6.3 в RH8.0:

  • поставить пакет bzip2-devel, который почему-то был пропущен при установке RH 8.0 (без него не распознается ImageMagick, кстати, необходим ImageMagick-devel)
  • заодно RH забыла включить в ImageMagick-devel файл api.h и все, что он за собой тянет
  • получить и развернуть исходные тексты
  • ./configure --enable-v4l
  • посмотреть на таблицу распознанных модулей - все ли подключилось
  • еще можно было бы обеспечить связку с модулями постобработки из пакета mplayer и qt
  • make
  • make install
    • /usr/local/share/doc/transcode/
    • /usr/local/man/man1: tccat.1, tcprobe.1, tcdemux.1, tcscan.1, tcextract.1, tcdecode.1, tcmodinfo.1, avisplit.1, avimerge.1, avifix.1, avisync.1
    • /usr/local/share/doc/transcode/html/
    • /usr/local/lib/transcode
      • libioaux*
      • import_nuv*, import_af6*, import_net*, import_v4l*, import_yuv*, import_avi*, import_mpeg2*, import_vdrac3*, import_ac3*, import_dv*, import_vob*, import_raw*, import_nvrec*, import_yuv4mpeg*, import_lav*, import_null*, import_divx*, import_mp3*, import_dvd*, import_im*, import_imlist*, af6_decore*, import_xml*, import_mplayer*, import_rawlist*, import_ogg*, import_xvid*, import_ffmpeg*, import_lzo*
      • export_null*, export_wav*, export_pcm*, export_af6*, export_raw*, export_divx4*, export_divx4raw*, export_divx5raw*, export_ppm*, export_divx5*, export_ffmpeg*, export_lame*, export_net*, export_dvraw*, export_dv*, export_mpeg*, export_yuv4mpeg*, export_mpeg2enc*, export_mp2enc*, export_fame*, export_im*, export_ogg*, export_toolame*, export_sampeg*, export_mjpeg*, export_jpg*, export_lzo*, export_xvid*, export_xvidcvs*, export_xvidraw*
      • filter_null*, filter_invert*, filter_32detect*, filter_32drop*, filter_yuy2toyv12*, filter_skip*, filter_astat*, filter_aclip*, filter_cut*, filter_cshift*, filter_mask*, filter_dnr*, filter_xsharpen*, filter_smartdeinter*, filter_normalize*, filter_testframe*, filter_fields*, filter_clone*, filter_videocore*, filter_tc_video*, filter_tc_audio*, filter_29to23*, filter_smooth*, filter_dilyuvmmx*, filter_logo*, filter_logoaway*, filter_divxkey*, filter_extsub*, filter_extsub2*, filter_resample*, filter_test*, filter_yuvdenoise*, filter_yuvmedian*, filter_decimate*, filter_ivtc*, filter_preview*, filter_pv*, filter_subtitler*
    • /usr/local/bin/
      • tcmplex
      • tcextract
      • tcdecode
      • tcscan
      • tcdemux
      • tccat
      • tcprobe
      • avimerge
      • avisplit
      • avifix
      • avisync
      • transcode
      • tcmodinfo

xawtv

xawtv предоставляет набор программ для управления видеоустройством video4linux, захвата видеопотока в файл в различных форматах или вывода его на экран, а также вспомогательные утилиты.

В FC3 установил пакет xawtv версии 3.94 из репозитария dag.

Установка xawtv 3.83 в RH8.0:

  • получить и развернуть исходные тексты
  • ./configure --enable-xfree-ext --enable-xvideo --enable-lirc --enable-gl --enable-dv --enable-mmx
    при сборке с использованием Xvideo режим grabdisplay работает лишь при запуске xawtv с ключом -noxv
  • make

  • make install
    • /usr/local/bin:
      • dump-mixers
      • record
      • showriff
      • showqt
      • streamer
      • webcam
      • radio
      • fbtv
      • v4l-info
      • v4l-conf
      • ntsc-cc
      • propwatch
      • v4lctl
      • xawtv-remote
      • rootv
      • xawtv
      • pia
      • motv
    • /usr/local/share/xawtv: частоты
    • /usr/local/lib/xawtv: flt-gamma.so, flt-invert.so, flt-disor.so, conv-mjpeg.so, conv-audio.so, read-avi.so, write-avi.so, read-dv.so, write-dv.so, drv0-v4l2.so, drv0-v4l2-old.so, drv1-v4l.so, snd-oss.so, flt-smooth.so, bilinear.so, cubic.so, linear-blend.so, linedoubler.so
    • /usr/local/man/man1/: dump-mixers.1, fbtv.1, motv.1, mtt.1 (teletext, самой программы нет), ntsc-cc.1, pia.1, propwatch.1, radio.1, record.1, rootv.1, scantv.1, showriff.1, streamer.1, ttv.1, v4lctl.1, webcam.1, xawtv.1, xawtv-remote.1
    • /usr/local/man/man5/xawtvrc.5
    • /usr/local/man/man8/v4l-conf.8
    • /usr/X11R6/lib/X11/app-defaults/Xawtv
    • /usr/X11R6/lib/X11/de/app-defaults/MoTV
    • /usr/X11R6/lib/X11/it/app-defaults/MoTV
    • /usr/X11R6/lib/X11/fr/app-defaults/MoTV
    • /usr/X11R6/lib/X11/de_DE.UTF-8/app-defaults/MoTV
    • /usr/X11R6/lib/X11/app-defaults/mtt
    • /usr/X11R6/lib/X11/app-defaults/MoTV
  • экранные шрифты устанавливаются отдельно
    • взять и развернуть tv-fonts-1.0.tar.bz2 в отдельную директорию
    • make
    • mkfontdir
    • xset fp+ "`pwd`:unscaled"
    • xset fp rehash
    • если понравилось, то добавить директорию к списку сервера шрифтов X11 (/etc/X11/xfs/config), чтобы было всегда, но я не понял зачем они нужны

v4lctl позволяет управлять устройством video4linux, что полезно не только для удаленного управления xawtv, но и для других пакетов, которые не имеют собственных средств управления устройством видеозахвата. Примеры:

v4lctl setnorm SECAM
v4lctl color 50%
v4lctl bright 50%
v4lctl contrast 50%

Пример захвата видеопотока в формате YUV4MPEG2 для дальнейшей обработки mjpegtools (композитный вход, время записи - 1 минута, отдельная запись звука в PCM/WAV):

streamer -r 25 -s 768x576 -t 1:00 -n secam -i Composite1 -F stereo -o vhs.yuv -O vhs.wav

Пример захвата видеопотока в формате RAW 4:2:2 planar:

streamer -r 25 -s 768x576 -t 0:10 -n pal -i Composite1 -o 422p.raw -f 422p

Пример захвата видеопотока в формате AVI/MJPEG (требуется уменьшить качество: "-j 50" для P4 2400, а это 6 ГБ/час; streamer -h выдает список доступных для записи форматов):

streamer -d -r 25 -s 768x576 -t 90:00 -n pal -i S-Video -f mjpeg -F stereo -o fullmovie.avi

xine

Проигрыватель видео xine.

В FC6 поставил пакеты xine-lib, xine-lib-devel, xine-lib-extras версии 1.1.4-1.fc6 (1.1.6) из extras; затем xine-lib-extras-nonfree 1.1.4-1.lvn6 (1.1.6) и xine 0.99.4-10.lvn6 из livna; затем xine-skins 1.10-1.fc из freshrpms. mp4 не проигрывает.

В FC3 поставил пакеты xine-lib-1.0.0, xine-lib-devel-1.0.0 и xine-0.99.3 из репозитария dag. Дополнительно потребовался пакет libXvMCW-0.9.3.

Установка в RH8.0:

  • получить и развернуть xine-lib-1-beta12.tar.gz (разделяемые библиотеки), перейти туда
  • ./configure (недостатки:
    • aalib (мне не нужен ascii art)
    • Theora (открытый формат видеофайлов)
    • libFLAC?
    • libpng-config
    • ALSA
    • нужен nvtv для вывода на ТВ через видеокарту с Nvidia, нашел позднее
    • не нашел OpenGL (пусть, все равно в состоянии алфа), нашел после установки новых драйверов от NVidia
    • хотел libdvdnav >= 0.1.4 (на сайте лежит только 0.1.3?!), теперь включен в состав пакета
  • make
  • make install
    • /usr/local/man/man1: xine-config.1
    • /usr/local/share/doc/xine/faq: faq.html, faq.txt
    • /usr/local/share/doc/xine/: README*, dataflow.dia
    • /usr/local/share/aclocal/xine.m4
    • /usr/local/include/libintl.h
    • /usr/local/include/xine.h
    • /usr/local/include/xine/*
    • /usr/local/lib/charset.alias
    • /usr/local/lib/libxine*
    • /usr/local/lib/xine/*
    • /usr/local/share/locale/locale.alias
    • /usr/local/share/gettext/* (уже есть /usr/share/gettext!)
    • /usr/local/share/locale/*/LC_MESSAGES/libxine1.mo
    • /usr/local/share/xine/libxine1/fonts/*
    • /usr/local/lib/pkgconfig/libxine.pc
    • /usr/local/bin/xine-config
  • ldconfig
  • получить и развернуть xine-ui-0.9.21-tar.gz (проигрыватель со шкурками), перейти туда
  • ./configure (хочет curl >= 7.10.2, доступ к http://, ftp:// и др.)
  • make
  • make install
    • /usr/local/bin: xine, xine-remote, xine-check, xine-bugreport, fbxine
    • /usr/local/man/??/man1/xine.1, aaxine.1, xine-check.1, xine-remote.1, xine-bugreport.1
    • /usr/local/man/man1: xine.1, aaxine.1, xine-check.1, xine-remote.1, xine-bugreport.1
    • /usr/local/share/doc/xine-ui/*
    • /usr/local/share/doc/xitk/README
    • /usr/local/share/locale/*/LC_MESSAGES/xine-ui.mo
    • /usr/local/share/locale/*/LC_MESSAGES/xitk.mo
    • /usr/local/share/xine/desktop/xine.desktop
    • /usr/local/share/pixmaps/xine*
    • /usr/local/share/xine/visuals/*
    • /usr/local/share/xine/skins/*/*
    • /usr/local/share/xine/skins/: xinetic, xine-ui_logo.mpv
  • убеждаемся, что наполнен /usr/lib/win32
  • ранее требовалось поставить xine-dvdnav-0.9.13 (использует libdvdread и libdvdnav) - навигация по меню DVD, но теперь он не собирается, а навигация есть и так (большая буква N)
  • кроме "штатного" проигрывателя, использующего библиотеки xine-lib, имеется множество проигрывателей, разработанных сторонними организациями; я поставил для примера gxine-0.2.1 (проигрыватель для gnome), ничего в нем интересного не оказалось, думаю, что и остальные такого же класса (кто-то отметился, что сделал проигрыватель для Gnome, кто-то - для KDE)
    • ./configure
    • make
    • make install
      • /usr/local/share/gxine/pixmaps/*
      • /usr/local/bin/gxine
      • /usr/local/man/man1/gxine.1
      • /usr/local/man/de/man1/gxine.1
      • /usr/local/lib/gxine/gxineplugin*
      • /usr/local/share/gnome/apps/Multimedia/gxine.desktop
  • изо всего множества дополнений осмысленным выглядит xine-vcdx-1-beta2 - интерпретатор VCD/SVCD PBC для xine (состояние работ - альфа, будет слит после доработок; для использования надо запускать xine с MRL vcdx://), в новых версиях требуется предварительно ставить libcdio-0.6.tar.gz и vcdimager-0.7.15-cdio.tar.gz
    • ./configure
      vcdimager: checking for libxml - version >= 2.3.8... no (хотя у меня libxml 2.4.23)
      ошибка в /usr/bin/libxml2-config: должен выдавать -I/usr/include/libxml2/libxml
    • make
    • make install
      • /usr/local/lib/xine/plugins/1.0.0/xineplug_inp_vcdx.so
      • /usr/local/lib/xine/plugins/1.0.0/xineplug_inp_vcdx.la

mplayer

mplayer - проигрыватель и кодировщик видео.

Установка MPlayer-1.0rc1 в FC6 (пакеты и кодеки остались с прошлого раза, предварительно доставить множество -devel пакетов или доставить недостающие сейчас оп результатам первого ./configure ...):

  • доставить не упомянутые нигде vstream-client и vstream-client-devel версии 1.2-2.fc6 из freshrpms
  • доставить не упомянутые нигде live-devel версии 0-0.13.2006.08.07.lvn6 из livna
  • получить и развернуть исходные тексты
  • ./configure --enable-gui --enable-largefiles --enable-linux-devfs --enable-menu --enable-xmms --enable-xvmc --with-xanimlibdir=/usr/X11R6/lib/xanim/mods --enable-lirc --language=ru --disable-inet6 --enable-radio --enable-radio-capture --enable-radio-v4l2
  • отсутствуют возможные кодеки: amr_wb, amr_nb и amr_nb_fp (надо вставлять исходные тексты внутрь libavcodec, пакет amrnb-devel не помогает); toolame (заброшен?)
  • также нет: libfame (надо вставлять исходные тексты внутрь libavcodec), external liblzo (lzo1x.h перенесли в /usr/include/lzo/), nut (Network UPS Tools?!)
  • заглянуть в configure.log, может ещё чего нет
  • make
  • make install
    • /usr/local/lib/libdha.so*
    • /usr/local/lib/mplayer/vidix/ (cyberblade_vid.so, mach64_vid.so, mga_crtc2_vid.so, mga_vid.so, nvidia_vid.so, pm3_vid.so, radeon_vid.so, rage128_vid.so, savage_vid.so, sis_vid.so, unichrome_vid.so)
    • /usr/local/bin/mplayer (он же gmplayer)
    • /usr/local/bin/mencoder
    • /usr/local/man/man1/mplayer.1
    • /usr/local/man/man1/mencoder.1
    • /usr/local/share/pixmaps/mplayer.xpm
    • /usr/local/share/applications/mplayer.desktop
  • chcon -t texrel_shlib_t /usr/local/lib/*.so
  • chcon -t texrel_shlib_t /usr/local/lib/mplayer/vidix/*.so
  • тестируем на запускаемость: mplayer -h
  • шрифт arialuni.ttf.bz2 кладём в /usr/local/share/mplayer/font/subfont.ttf (24MB!), удаляем имя шрифта из ~/.mplayer/gui.conf, делаем символьную ссылку ~/.mplayer/subfont.ttf на /usr/local/share/mplayer/subfont.ttf
  • загрузить шкурки (необязательно все ;) в /usr/local/share/mplayer/Skin/, поправить права доступа, на одну из них сделать ссылку default
  • тестовый запуск: gmplayer

Установка MPlayer-1.0rc1 в FC3 (пакеты и кодеки остались с прошлого раза):

  • получить и развернуть исходные тексты
  • ./configure --enable-gui --enable-largefiles --enable-linux-devfs --enable-menu --enable-xmms --enable-xvmc --with-xanimlibdir=/usr/X11R6/lib/xanim/mods --enable-lirc --language=ru --disable-inet6
  • отсутствуют возможности ввода: vstream, pvr, radio, live555, mpdvdkit2, dvb
  • отсутствуют возможные кодеки: amr_wb, amr_nb, faac(?), musepack, libtheora, speex, twolame, toolame
  • заглянуть в configure.log, может ещё чего нет
  • make
  • make install
    • /usr/local/lib/libdha.so*
    • /usr/local/lib/mplayer/vidix/ (cyberblade_vid.so, mach64_vid.so, mga_crtc2_vid.so, mga_vid.so, nvidia_vid.so, pm3_vid.so, radeon_vid.so, rage128_vid.so, savage_vid.so, sis_vid.so, unichrome_vid.so)
    • /usr/local/bin/mplayer (он же gmplayer)
    • /usr/local/bin/mencoder
    • /usr/local/man/man1/mplayer.1
    • /usr/local/man/man1/mencoder.1
    • /usr/local/share/pixmaps/mplayer.xpm
    • /usr/local/share/applications/mplayer.desktop
  • тестируем на запускаемость: mplayer -h
  • шрифт arialuni.ttf.bz2 кладём в /usr/local/share/mplayer/subfont.ttf, удаляем имя шрифта из ~/.mplayer/gui.conf, делаем символьную ссылку ~/.mplayer/subfont.ttf на /usr/local/share/mplayer/subfont.ttf
  • загрузить шкурки (необязательно все ;) в /usr/local/share/mplayer/Skin/, поправить права доступа, на одну из них сделать ссылку default
  • тестовый запуск: gmplayer

Установка MPlayer-1pre8 в FC3:

  • установил пакеты ladspa.i386 и ladspa-devel.i386 из репозитария us
  • установить дополнительные кодеки в /usr/local/lib/codecs/ (я установил all-20050412, странные права доступа у некоторых файлов)
  • получить и развернуть исходные тексты
  • ./configure --enable-gui --enable-largefiles --enable-linux-devfs --enable-menu --enable-xmms --enable-xvmc --with-xanimlibdir=/usr/X11R6/lib/xanim/mods --enable-lirc --language=ru
  • отсутствуют возможности ввода: vstream, live.com
  • отсутствуют возможные кодеки: libspeex, faac, amr_wb, amr_nb, libtheora, toolame, twolame
  • заглянуть в configure.log, может ещё чего нет
  • make
  • make install
    • /usr/local/lib/libdha.so*
    • /usr/local/lib/mplayer/vidix/ (cyberblade_vid.so, mach64_vid.so, mga_crtc2_vid.so, mga_vid.so, nvidia_vid.so, pm3_vid.so, radeon_vid.so, rage128_vid.so, savage_vid.so, sis_vid.so, unichrome_vid.so)
    • /usr/local/bin/mplayer (он же gmplayer)
    • /usr/local/bin/mencoder
    • /usr/local/man/man1/mplayer.1
    • /usr/local/man/man1/mencoder.1
  • тестируем на запускаемость: mplayer -h
  • шрифт arialuni.ttf.bz2 кладём в /usr/local/share/mplayer/subfont.ttf, удаляем имя шрифта из ~/.mplayer/gui.conf, делаем символьную ссылку ~/.mplayer/subfont.ttf на /usr/local/share/mplayer/subfont.ttf
  • загрузить шкурки (необязательно все ;) в /usr/local/share/mplayer/Skin/, поправить права доступа, на одну из них сделать ссылку default
  • тестовый запуск: gmplayer

Установка MPlayer-1pre7 в FC3:

  • установил пакеты ladspa.i386 и ladspa-devel.i386 из репозитария us
  • установить дополнительные кодеки в /usr/local/lib/codecs/ (я установил all-20050412, странные права доступа у некоторых файлов)
  • получить и развернуть исходные тексты
  • ./configure --enable-gui --enable-largefiles --enable-linux-devfs --enable-menu --enable-xmms --enable-xvmc --with-xanimlibdir=/usr/X11R6/lib/xanim/mods --enable-lirc
  • русский язык игнорируется (--language)
  • autodetect не срабатывает для libfame (--enable-libfame так и не починили) и lirc
  • отсутствуют возможности ввода: vstream, live.com
  • отсутствуют возможные кодеки: x264, amr_wb, amr_nb, libdts, libtheora, toolame
  • libmp1e ?
  • заглянуть в configure.log, может ещё чего нет
  • make
  • make install
    • /usr/local/lib/libdha.so*
    • /usr/local/lib/mplayer/vidix/ (cyberblade_vid.so, mach64_vid.so, mga_crtc2_vid.so, mga_vid.so, nvidia_vid.so, pm3_vid.so, radeon_vid.so, rage128_vid.so, savage_vid.so, sis_vid.so, unichrome_vid.so)
    • /usr/local/bin/mplayer (он же gmplayer)
    • /usr/local/bin/mencoder
    • /usr/local/man/man1/mplayer.1
    • /usr/local/man/man1/mencoder.1
  • тестируем на запускаемость: mplayer -h
  • шрифт arialuni.ttf.bz2 кладём в /usr/local/share/mplayer/subfont.ttf, удаляем имя шрифта из ~/.mplayer/gui.conf, делаем символьную ссылку ~/.mplayer/subfont.ttf на /usr/local/share/mplayer/subfont.ttf
  • загрузить шкурки (необязательно все ;) в /usr/local/share/mplayer/Skin/, поправить права доступа, на одну из них сделать ссылку default
  • тестовый запуск: gmplayer

Установка (MPlayer-0.90) в RH8.0:

  • убедиться, что все вышеперечисленные библиотеки и пакеты установлены (может, кроме ogle, tvtime и xine, хотя я без них не пробовал ;)
  • дополнить /usr/lib/win32 подправленными кодеками отсюда и отсюда
  • дополнить /usr/lib/win32 кодеками из qt6dlls.tar.bz2 (QuickTime.qts, QuickTimeEssentials.qtx, qtmlClient.dll)
  • получить и развернуть исходные тексты
  • ./configure --enable-largefiles --enable-gui --enable-new-conf --enable-menu --enable-xmms --enable-dvdnav --enable-shared-pp --with-xanimlibdir=/usr/X11R6/lib/xanim/mods --enable-qtx-codecs
    (LIVE.COM Streaming Media libraries ... no) (--enable-libfame сломано; можно скопировать ее внутрь, собрать, не устанавливать, скопировать библиотеки (.libs) и *.h на внешний уровень; но я так устал с ними бороться :(
  • make
  • make install
    • /usr/local/lib/libdha-0.1.so
    • /usr/local/lib/libdha.so
    • /usr/local/lib/mplayer/vidix/ (cyberblade_vid.so, mach64_vid.so, mga_crtc2_vid.so, mga_vid.so, pm3_vid.so, radeon_vid.so, rage128_vid.so)
    • /usr/local/lib/libpostproc.so.0.0.1
    • /usr/local/lib/libpostproc.so
    • /usr/local/include/postproc/postprocess.h
    • /usr/local/lib/mplayer/vidix/*.so
    • /usr/local/bin/mplayer (он же gmplayer)
    • /usr/local/bin/mencoder
    • /usr/local/etc/mplayer/codecs.conf
    • /usr/local/man/man1/mplayer.1 (он же mencoder.1)
  • загрузить шрифты и поместить шрифты нужного размера (все файлы из одной поддиректории) в /usr/local/share/mplayer/font/ (странно, но раньше там лежали koi8r-font.tar.bz2)
  • загрузить шкурки (необязательно все ;) в /usr/local/share/mplayer/Skin/ (поправить права доступа)

Просмотр 50-герцового видео в родном разрешении:

  • добавить в секцию Monitor файла /etc/X11/XF86Config строку
    Modeline  "pal"  50.00  768 832 856 1000  576 590 595 630  -hsync -vsync
  • mplayer -double -vm -vsync -fs видео

Преобразование из одного видео формата (MPEG) в другой (YUV4MPEG2)

mplayer -vo yuv4mpeg -frames 50 final.m1v

Преобразование части DVD в AVI/MPEG4 (-vop lavcdeint,hqdn3d полезен для исправления ошибок создателей DVD из телевизионного материала; "лишние" звуковые дорожки и субтитры будут потеряны):

mencoder -dvd номер-главы -vop lavcdeint,hqdn3d -oac mp3lame -lameopts cbr:br=128:aq=0:mode=1 -ovc lavc -lavcopts vcodec=mpeg4:vqscale=2:vmax_b_frames=0:vhq -o result.avi

Вырезать часть фильма с DVD (если размер получившегося файла оказался более 2 ГБ, то лучше порезать главу на части с помощью -chapter, иначе его нельзя будет записать на DVD)

mplayer -dvd номер-главы -dumpstream -dumpfile имя-файла

Восстановление индекса AVI (иногда требуется -forceidx):

mencoder -idx withoutindex.avi -ovc copy -oac copy -o withindex.avi

Извлечение звуковой дорожки с преобразованием:

mplayer исходный-AVI -vc null -vo null -ao pcm -af resample=44100:0:2,equalizer=-12:-8:-2:0:0:0:0:0:-8:-12,volume=20 -aofile звуковая-дорожка

Оцифровка фильма с кассеты (S-Video, AverMedia 307) "по-быстрому" (cbr - потому что в спецификации AVI звук VBR не предусмотрен и вызывает множество проблем, quite - потому что на отладочную печать уходит очень много CPU, не забыть отключить хранитель экрана!):

mencoder -endpos 1:52:30 -quiet tv:// \
-tv driver=v4l2:input=3:width=720:height=576:fps=25:norm=PAL:alsa:audiorate=48000:amode=1:forcechan=2:immediatemode=1 \
-vf crop=684:560:16:8,lavcdeint,hqdn3d,expand=720:576 -force-avi-aspect 4:3 \
-ovc lavc -lavcopts vcodec=mpeg4:keyint=90:vqscale=4:vhq \
-oac mp3lame -lameopts cbr:br=128:mode=1 \
-o film.avi

или если процессор слабоват

mencoder -endpos 1:52:30 -quiet tv:// \
-tv driver=v4l2:input=3:width=720:height=576:fps=25:norm=PAL:alsa:audiorate=48000:immediatemode=1 \
-vf crop=684:556:16:8,lavcdeint,denoise3d,expand=720:576 -force-avi-aspect 4:3 \
-ovc lavc -lavcopts vcodec=mpeg4:keyint=130:vhq:vqscale=4 \
-oac mp3lame -lameopts cbr:br=64:mode=3 \
-o film.avi

или со второй ТВ-карты (ТВ-канал настроен заранее, звук с amux,
не забывать установить capture на 50%)

mencoder -endpos 1:0 -quiet tv:// \
-tv driver=v4l2:device=/dev/video1:input=0:width=720:height=576:fps=25:norm=SECAM:outfmt=yv12:\
alsa:audiorate=48000:amode=1:forcechan=2:immediatemode=1 \
-noautoexpand -vf crop=720:560:0:8,lavcdeint,denoise3d,expand=720:576 \
-force-avi-aspect 4:3 -ovc lavc -lavcopts vcodec=mpeg4:keyint=90:vqscale=2:vhq \
-oac mp3lame -lameopts cbr:br=128 \
-o film.avi

или сжатие звука отдельным проходом для ещё более слабого процессора

mencoder -channels 1 -noautoexpand -quiet tv:// \
-tv driver=v4l2:input=3:width=720:height=576:fps=25:norm=PAL:alsa:audiorate=48000:immediatemode=1 \
-vf crop=688:560:16:0,lavcdeint,hqdn3d,expand=720:576 -force-avi-aspect 4:3 \
-ovc lavc -lavcopts vcodec=mpeg4:keyint=120:vqscale=4:vhq \
-oac pcm -o film.avi
mencoder film.avi -ovc copy -oac mp3lame -lameopts cbr:br=64:mode=3 -force-avi-aspect 4:3 -o film_audio.avi

lavc при сжатии mpeg4 вставляет fourcc "FMP4", не все видеопроигрыватели это понимают, поменять его на привычный XVID можно ключом "-ffourcc XVID".

Использование XvMC (ощущается только при масштабировании, NVIDIA 6600 умеет только idct)

mplayer -vc ffmpeg12mc -vo xvmc:queue:ck-method=bg -vm -fs

Обработка DVD меню (dvdnav) сломана, похоже, навсегда.

Сжатие без потерь huffyuv (43 fps, в 2.25 раза), из-за какого-то глюка иногда приходится использовать outfmt=444p (или при проигрывании: -vf swapuv):

mencoder tv:// -tv driver=v4l2:input=3:outfmt=422p:width=720:height=576:fps=25:norm=SECAM \
-vf crop=672:560:48:0 \
-oac pcm -ovc lavc -lavcopts vcodec=huffyuv:pred=1:format=422p -o huffyuv.avi

mencoder tv:// -tv driver=v4l2:input=0:outfmt=422p:width=720:height=576:fps=25:norm=SECAM:\
buffersize=40:audiorate=48000:alsa:amode=1:forcechan=2 \
-oac pcm -ovc lavc -lavcopts vcodec=ffvhuff:context=1:format=422p -o huffyuv.avi

Очистка изображения и изготовление DVD-совместимого MPEG-2 большого размера (или несовместимого MPEG-1):

mkfifo dump.fifo
mplayer huffyuv.avi -nosound -vo yuv4mpeg:interlaced:file=dump.fifo -vf expand=720:576 -sws 8 -nolirc -noconsolecontrols -nortc
на другом терминале
yuvdenoise -F -t 8 -p 8 -S 100 < dump.fifo | yuvmedianfilter -r 2 -t 2 | \
mpeg2enc -v 1 -q 2 -f 9 -K kvcd -s -n p -F 3 -a 2 -c -2 2 -4 1 -r 24 -N 1. -S 2047 -B 256 -o имя.m2v
или
mpeg2enc -v 1 -q 4 -f 0 -K kvcd -s -n p -F 3 -a 2 -c -2 2 -4 1 -r 24 -N 1. -S 2047 -B 256 -g 4 -G 96 -V 2000 -b 9000 -o имя.m1v

mplayer имя.avi -ni -vo null -vc dummy -hardframedrop -channels 1 -benchmark -ao pcm:file=имя.wav
lame -b 64 -h -m m имя.wav имя.mp3

mplex -v 1 -o имя-%d.mpg -f 9 -V -h имя.mp3 имя.m2v
или
mplex -v 1 -o имя-%d.mpg -f 0 -V -r 9000 -b 2000 -h имя.mp3 имя.m1v
rm dump.fifo

Использование двух компьютеров (чем-то их надо буферизовать: bfr):

  на вспомогательном компьютере (открыть порт 55555)
nc -l -p 55555 | bfr -b100m -m2% | yuvmedianfilter | \
mpeg2enc -v 1 -q 4 -f 0 -K kvcd -s -n p -F 3 -a 2 -c -2 2 -4 1 -r 24 -N 1. -S 2047 -B 96 -g 4 -G 96 -V 2000 -b 9000 -o имя.m1v

на основном компьютере
mkfifo dump.fifo
mplayer huffyuv.avi -nosound -vo yuv4mpeg:interlaced:file=dump.fifo -vf expand=720:576 -sws 8 -nolirc

на основном компьютере на другом терминале
yuvdenoise -F -t 8 -p 5 < dump.fifo | bfr -b20m -m2% | nc имя-вспомогательного-компьютера 55555

Сжатие после очистки в MPEG-1 с параметрами, обеспечивающими больший коэффициент сжатия (не совместим с VCD):

mpeg2enc -v 1 -q 4 -K kvcd -s -n p -F 3 -a 2 -c -2 2 -4 1 -r 8 -N 1. -f 0 -g 4 -G 96 -V 2000 -b 9000 -o имя.m1v

Сжатие без потерь huffyv12, адаптивная таблица (53 fps, 2.86; без адаптивной таблицы 62 fps и 2.17; -vf expand выдаёт мусор в этом формате, приходится его обрамлять: -vf yuy2,expand=720:576,scale):

mencoder источник -oac pcm -ovc lavc -lavcopts vcodec=ffvhuff:context=1:vstrict=-1 -o ffvhuff1.avi

Сжатие без потерь Golomb-Rice (19pfs, 4.56; декодирует также медленно; уменьшение контекста увеличивает скорость до 20 fps и уменьшает сжатие до 4.42):

mencoder источник -noautoexpand -oac pcm -ovc lavc -lavcopts vcodec=ffv1:coder=0:context=1:vstrict=-1 -o ffv1golomb.avi

Сжатие без потерь CABAC (15 fps, 4.86):

mencoder источник -noautoexpand -oac pcm -ovc lavc -lavcopts vcodec=ffv1:coder=1:context=1:vstrict=-1 -o ffv1a.avi

Сжатие H.264/AAC:

mencoder -oac faac -faacopts br=128 -ovc x264 -x264encopts \
qp=18:scenecut=-1:direct_pred=auto:me=umh:subq=7:trellis=2:nopsnr:threads=4 \
источник -o результат

mpeg4ip

Пакет mpeg4ip позволяет кодировать MPEG-4 (требуется lame), передавать его по сети и проигрывать на клиентских компьютерах.

Установка без потокового сервера (mpeg4ip-0.9.8), требуется gcc 3.2, желательно установить FAAC/FAAD (или хотя бы sndfile):

  • взять и распаковать исходные тексты
  • ./bootstrap --disable-server
  • make (230 MB!)
  • make install
    • /usr/local/bin
      • mp4live - кодирование в реальном времени из v4l
      • mp4encode - кодирование mp4 с помощью avi2raw, lboxcrop, faac, mp4venc, mp4creator, xvidenc
      • mp4extract - извлечение дорожки из MP4
      • mp4dump, mp4trackdump - выдача информации о MP4
      • mp4info
      • avidump - выдача информации о AVI (собирается отдельно)
      • avi2raw - позволяет извлечь звук или видео из AVI в отдельный файл (например, позволяет превратить звуковую дорожку в асмостоятельный MP3 файл, собирается отдельно)
      • yuvdump - показать "сырой" файл
      • mp4player, gmp4player
      • sdl-config (!)
      • iptv_prog
    • /usr/local/lib/ (может молча заместить библиотеку от другого пакета!)
      • libconfig_file.la, libconfig_file.a
      • libmp4.la, libmp4.a
      • libmp4v2.so.0.0.0, libmp4v2.so.0, libmp4v2.so, libmp4v2.la, libmp4v2.a
      • libmp4av.la, libmp4av.so.0.0.0, libmp4av.so.0, libmp4av.so, libmp4av.a
      • libmsg_queue.la, libmsg_queue.a
      • libsdp.la, libsdp.a
      • libSDLmain.a
      • libSDL.la, libSDL-1.2.so.0.0.5, libSDL-1.2.so.0, libSDL.so, libSDL.a
      • libhttp.la, libhttp.a
      • libmp4util.la, libmp4util.so.0.0.0, libmp4util.so.0, libmp4util.so, libmp4util.a
      • mp4player_plugin/
        • raw_audio_plugin.la, raw_audio_plugin.so.0.0.0, raw_audio_plugin.so.0, raw_audio_plugin.so, raw_audio_plugin.a
        • celp_plugin.la, celp_plugin.so.0.0.0, celp_plugin.so.0, celp_plugin.so, celp_plugin.a
        • raw_video_plugin.la, raw_video_plugin.so.0.0.0, raw_video_plugin.so.0, raw_video_plugin.so, raw_video_plugin.a
        • xvid_plugin.la, xvid_plugin.so.0.0.0, xvid_plugin.so.0, xvid_plugin.so, xvid_plugin.a
        • mpeg3_video_plugin.la, mpeg3_video_plugin.so.0.0.0, mpeg3_video_plugin.so.0, mpeg3_video_plugin.so, mpeg3_video_plugin.a
        • h261_plugin.la, h261_plugin.so.0.0.0, h261_plugin.so.0, h261_plugin.so, h261_plugin.a
        • isma_rtp_plugin.la, isma_rtp_plugin.so.0.0.0, isma_rtp_plugin.so.0, isma_rtp_plugin.so, isma_rtp_plugin.a
        • h261_rtp_plugin.la, h261_rtp_plugin.so.0.0.0, h261_rtp_plugin.so.0, h261_rtp_plugin.so, h261_rtp_plugin.a
        • aac_plugin.la, aac_plugin.so.0.0.0, aac_plugin.so.0, aac_plugin.so, aac_plugin.a
        • mp3_plugin.la, mp3_plugin.so.0.0.0, mp3_plugin.so.0, mp3_plugin.so, mp3_plugin.a
        • mpeg4_iso_plugin.la, mpeg4_iso_plugin.so.0.0.0, mpeg4_iso_plugin.so.0, mpeg4_iso_plugin.so, mpeg4_iso_plugin.a
        • wav_plugin.la, wav_plugin.so.0.0.0, wav_plugin.so.0, wav_plugin.so, wav_plugin.a
    • /usr/local/include/SDL/
    • /usr/local/man/man3/SDL*.3
    • /usr/local/share/aclocal/sdl.m4
    • /usr/local/man/man1: gmp4player.1, mp4creator.1, mp4encode.1, mp4live.1
    • /usr/local/man/man3/MP4*
    • /usr/local/man/manm/api.mpt

mp4player/gmp4player

Оцифровка VHS (SVHS) в MPEG1

Приведу пример оцифровки VHS (SVHS) записей в почти максимальном качестве. В принципе, можно ещё немного улучшить качество, захватывая в режиме YUV 4:2:2 вместо YUV 4:2:0, но это потребует слишком много времени.

Предварительная подготовка:

  • создать новую файловую систему (ext2fs или ext3fs в режиме writeback) из расчета 1 ГБ на минуту видео
  • остановить хранитель экрана и прочие ненужные программы: видеозахват - это задача реального времени, затраты процессора невелики, но непостоянны и неотложны
  • модуль bttv загрузить с параметрами combfilter=1 (без этого придется захватывать в режиме YUV 4:2:2), gbuffers=6 (меньше - будет много пропущенных кадров, больше - будут проблемы с синхронизацией), gbufsize=0x105000 (зачем зря память занимать)
  • настроить яркость, контраст и интенсивность цвета с помощью xawtv
  • настроить (gnome-volume-control, aumix-X11, wmix, mix2000) уровень line и igain, сделать пробную запись с помощью "record -r 48000" (звук в динамиках во время записи не соответствует записанному!)
  • второй выход видеомагнитофона подключить к телевизору, чтобы можно было контролировать, что записывается

Захват (mono16 у меня - ac97_codec + i810_audio - не работает):

  • streamer -d -r 25 -s 768x576 -t 41:45 -n pal -i S-Video -o filma.yuv -O /otherdisk/filma.wav -F stereo -R 48000 -b 48

Проверка качества захвата:

  • mplayer -audiofile filma.wav filma.yuv

Проверить на всякий случай не занижен ли уровень звука:

  • sox filma.wav -e stat -v

Очистка звука (все равно VHS - дрянь) и сведение к моно ( в тяжелых случаях можно использовать audacity):

  • sox filma.wav -c 1 filma.denoise.wav bandreject 75 50

Сжатие звука:

  • lame -b 64 -h -m m filma.denoise.wav filma.denoise.mp3

Естественно, очистку и сжатие можно и нужно объединить:

  • sox filma.wav -c 1 -t wav - bandreject 75 50 | lame -b 64 -h -m m - filma.mp3

Очистка изображения и избавление от черестрочности (помехи убираются за счет снижения четкости изображения):

  • yuvdenoise -F -f < filma.yuv > filma.denoise.yuv (источник идеального качества)
  • yuvdenoise -F < filma.yuv > filma.denoise.yuv (источник похуже)
  • yuvdenoise -F -l 6 -S 100 < filma.yuv | yuvmedianfilter -r 2 -t 2 > filma.denoise.yuv (источник плохого качества)
  • yuvdenoise -F -r 16 -l 6 -t 8 -p 8 < filma.yuv | yuvmedianfilter -r 3 -t 8 > filma.denoise.yuv (источник очень плохого качества, дальнейшее усиление очистки приводит к заметным искажениям изображения)

Перед очисткой можно вставить фильтр, убирающий черные полоски, только необходимо учесть, что "окошко" полезного изображения слегка "плавает" (VHS-источник не так стабилен, как DVD!) и придется повозиться с заданием соотношения сторон привоспроизведении:

  • yuvscaler -v 0 -I USE_752x512+8+32 -n p -M RATIO_1_1_1_1 -O SIZE_752x512

Кодирование в MPEG-1 с нестандартной длиной GOP и размером видеобуфера (аппаратный плейер не воспроизведет), переменный поток (более 9 Мб/с будет неудобно читать с DVD-RW); можно, точнее нужно совместить с очисткой изображения; очень медленно - 1.8 fps, сильная очистка уплощает изображени - хорошо для мультфильмов ;), занимает мало места - 210 минут на DVD-R); зачастую отключение генерации B-фреймов (--bgroup 1) уменьшает размер на 3-5% (и ускоряет собственно кодирование вдвое):

  • yuvdenoise -F -r 16 -l 6 -t 8 -p 8 -S 100 < filma.yuv | yuvmedianfilter -r 3 -t 8 | mpeg2enc -f 0 -F 3 -n p -a 1 -g 4 -G 96 -q 4 -b 9000 -r 8 -2 2 -4 1 -N -v 1 -V 2500 -s -o filma.m1v

Чуть меньшая очистка и тщательное кодирование (2.5 fps, вполне приличное качество, занимает мало места - 205 минут на DVD-R):

  • yuvdenoise -F -l 1 -t 8 -p 8 -S 100 < filma.yuv | yuvmedianfilter -r 2 -t 2 | mpeg2enc -f 0 -F 3 -n p -a 1 -g 4 -G 96 -q 4 -b 9000 -r 8 -2 2 -4 1 -N -v 1 -V 2500 -s -o filma.m1v

Средняя очистка (и деинтерлейсинг) и тщательное кодирование (4 fps, вполне приличное качество, занимает изрядно места - 110 минут на DVD-R; увеличение q до 6 уменьшает размер файла в 1.5 раза, но на большом экране можно заметить небольшие дефекты изображения):

  • yuvdenoise -F -l 1 -t 8 -p 8 -S 100 < filma.yuv | mpeg2enc -f 0 -F 3 -n p -a 1 -g 4 -G 96 -q 4 -b 9000 -r 8 -2 2 -4 1 -h -v 1 -V 2500 -s -o filma.quick.m1v

Минимальная очистка (и деинтерлейсинг) и быстрое кодирование (5 fps, вполне приличное качество, занимает изрядно места - 108 минут на DVD-R):

  • yuvdenoise -F -f < filma.yuv | mpeg2enc -f 0 -F 3 -n p -a 1 -g 4 -G 96 -q 4 -b 9000 -r 8 -2 4 -4 4 -N -v 1 -V 2500 -s -o filma.superquick.m1v

Быстрое кодирование без очистки (13 fps, могло бы быть быстрее, если сделать нормальную буферизацию; вполне приличное качество, но занимает много места - 90 минут на DVD-R):

  • mpeg2enc -f 0 -F 3 -n p -a 1 -g 4 -G 96 -q 4 -b 9000 -r 8 -2 4 -4 4 -N -v 1 -V 2500 -s -o filma.supersuperquick.m1v < filma.yuv

Мультиплексирование видео и звука

  • mplex -v 1 -h -b 1000 -f 0 -V -r 9000 -o filma.mpg filma.denoise.mp3 filma.m1v

Оцифровка VHS (SVHS) в MPEG4/AVI

Захват видео производится аналогично предыдущему случаю.

Быстрое (32 fps на P4 2400, при этом процессор свободен на 15%) кодирование в MPEG4/AVI (кстати, максимальный размер AVI файла - 2 ГБ, в которые влезает 1 час):

  • mencoder -ovc lavc -lavcopts vcodec=mpeg4:vqscale=4:vmax_b_frames=0 -o filma.avi filma.yuv

Добавление параметра ildct (фильма чересстрочная) замедляет скорость кодирования до 30 fps. При этом размер файла уменьшился на 8%.

Добавление параметра vhq замедляет скорость кодирования до 24 fps (при этом процессор загружен почти полностью). При этом размер файла уменьшился на 2%.

vhq совместно с ildct замедляет скорость кодирования до 21 fps. При этом размер файла уменьшился на 2%. Однако, полное удаление чересстрочности (-vop lavcdeint) дает лучший результат (и быстрее!).

mpeg_quant не изменяет скорости кодирования, но чуть-чуть уменьшает размер фала.

v4mv замедляет скорость кодирования до 18 fps. При этом размер файла уменьшился меньше, чем на 1%. Увеличение vmax_b_frames (1, 2 или 3) замедляет скорость и увеличивает размер файла. Параметры trell, qpel также вредны.

subcmp=5 замедляет скорость кодирования c 21 fps до 14 fps. При этом размер файла уменьшился на 1%. Остальные варианты хуже.

Использование фильтра "-vop denoise3d" ("-vop lavcdeint,denoise3d") почти не замедляет кодирование, а размер файла уменьшается драматически (в 1.5 раза!). hqdn3d замедляет кодирование с 23 fps до 18 fps.

Медленное и качественное кодирование в MPEG4/AVI

  • mencoder -v -vop lavcdeint,hqdn3d -ovc lavc -lavcopts vcodec=mpeg4:vqscale=2:vmax_b_frames=0:vhq:mpeg_quant:v4mv:subcmp=5 -o filma.avi filma.yuv (11 fps)
  • mencoder -v -vop lavcdeint,denoise3d -ovc lavc -lavcopts vcodec=mpeg4:vqscale=2:vmax_b_frames=0:mpeg_quant -o filma.avi filma.yuv (27 fps, на 5% больше)
  • mencoder -v -vop lavcdeint,denoise3d -ovc lavc -lavcopts vcodec=mpeg4:vqscale=2:vmax_b_frames=0:mpeg_quant -o filma.avi -audiofile filma.denoise.wav -oac mp3lame -lameopts abr:br=64:aq=0:mode=3 filma.yuv (одновременно со звуком - статистика выдается неполная; 2 часа на DVD; 3 часа при q=3; 4 часа при q=4, но квадратики уже видны)

Неразобранные ссылки