Последнее изменение файла: 2008.01.03
Скопировано с www.bog.pp.ru: 2008.05.29
Порядок установки программ и предварительная установка необходимых пакетов из дистрибутива (в т.ч. *-devel) очень важны, т.к. при сборке скрипты ./configure проверяют наличие необходимых для реализации части функций библиотек и, если библиотека отсутствует, то собранная программа не будет иметь соответствующих функций. Например, если перед установкой mplayer не установить пакет работы с пультом ДУ Lirc, то mplayer будет собран без возможности управления с пульта ДУ. Внимательно следите за сообщениями, выдаваемыми ./configure!
Предварительные действия:
- установка Fedora Core 6 или Fedora Core 3 или Red Hat Linux 8.0 (со всеми указанными библиотеками!)
- настройка дополнительных репозитариев yum для FC6 (livna, freshrpms) и FC3 (at, dag), чтобы можно было устанавливать уже готовые пакеты
- установить правильный драйвер видеокарты NVIDIA (в т.ч. настроить вывод на проектор или телевизор)
- добавить /usr/local/lib в /etc/ld.so.config и сделать ldconfig (запуск ldconfig рекомендуется повторять после установки каждой разделяемой библиотеки, т.к. некоторые разработчики забывают вставить соответствующую строчку в процедуру установки)
- установить драйвера платы видеозахвата и ТВ тюнера (v4l, v4l2)
- установить программы для работы с пультом ДУ (lirc)
- установить программы работы со сканером (sane, xsane)
- добавить загрузку v4l (/usr/X11R6/lib/modules/drivers/linux/v4l_drv) в секцию модулей /etc/X11/XF86Config
- установка библиотек работы со звуком и аудиокодеков
Теперь устанавливаем по порядку (естественно, надо стараться брать самые свежие версии, но возможны конфликты между пакетами и используемыми библиотеками):
- lzo
- xmms/audacious
- bbtool
- mkvtoolnix
- libdvdread, libdvdcss и libdvdnav
- ogle
- dvdbackup
- mpgtx
- divx4linux
- XviD
- dvdauthor
- libfame
- libm4isomedia (MPEG-4)
- gpac (MPEG-4)
- x264 (кодировщик H.264 или MPEG-4 AVC)
- mpeg2dec
- ffmpeg
- libquicktime
- libdv
- zvbi
- aalib
- avifile
- tvtime
- xanim
- mjpegtools
- transcode
- xawtv
- xine
- mplayer
- mpeg4ip
Для просмотра DVD-Video я использую ogle, для просмотра ТВ - tvtime, для всех прочих источников - mplayer, для видеозахвата - streamer из xawtv (в формате YUV4MPEG2) или mencoder, для обработки и сжатия - mjpegtools или mencoder из mplayer и lame (MPEG-1 с нестандартными параметрами, звук - MP3; в дальнейшем записывается в формате псевдо VCD/DVD).
Библиотека 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*
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 1.7 позволяет получить подробную и очень подробную информацию о файлах форматов MPEG, включая файлы .vob (мне он помог понять, почему не показывается второй VideoCD, сделанный mjpegtools).
Установка (FC6, FC5, RH8):
- получить и развернуть исходные тексты
- make
- переслать вручную в /usr/local/bin
Использование утилит:
- bbdmux имя-файла [stream-id out-file] (демультиплексирует программные и транспортные потоки MPEG1 и MPEG2 или показывет их структуру)
- bbinfo имя-файла verbose-level
- bbainfo имя файла verbose-level
- bbvinfo имя-файла verbose-level
Пакет mkvtoolnix позволять разобрать видеофайл в формате matroska (матрёшка) на составные части и собрать и обратно.
Установка пакета mkvtoolnix-1.8.1 в FC6.
Полезные примеры. Извлечение "лишней" звуковой дорожки:
mkvextract tracks исходный-файл номер-лишней-дорожки:результат
mkvmerge -o результат --atracks номер-полезной-дорожки исходный-файл
Разбиение фильма на куски, граница по следующему ключевому кадру, имя результата используется как шаблон для генерации имён кусков:
mkvmerge -o результат --split размер-куска исходный-файл
Библиотека 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
Если все, что вам нужно - это просмотр 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 позволяет узнать структуру 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:
- получить и развернуть исходные тексты
- gcc dvdbackup.c -o dvdbackup -ldvdread
- cp -i dvdbackup /usr/local/bin/
Использование утилиты:
- посмотреть структуру диска:
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 позволяет демультиплексировать потоки 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)
Поставляется в виде разделяемых библиотек для кодирования и декодирования файлов в формате 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 представляет собой реализацию библиотек 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)
Превращение набора MPEG-2 PS в стандартный DVD-Video в режиме командной строки.
В FC6 установил пакет dvdauthor версии 0.6.13-1.fc6 (0.6.14-1) из репозитария extras.
В FC3 установил пакет dvdauthor версии 0.6.11 из репозитария livna.
Описание применения.
Библиотека 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 - часть проекта 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 - большой пакет для работы с 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). Для вывода в формате 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 0.3.1 входила полезная утилита mpeg2toc, которая строила оглавление DVD. В текущей версии она пропала.
В FC6 установил пакеты mpeg2dec и mpeg2dec-devel версии 0.4.1-2.lvn6 из репозитария livna.
В FC3 свежую версию устанавливать не стал, а mpeg2toc взял из старой (исходников которой не осталось).
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 - библиотека для чтения и записи файлов в формате 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 предоставляет собой библиотеку для кодирования и декодирования видео в формате 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 представляет средства для извлечения 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 позволяет выводить изображения на а/ц терминал.
В 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 предоставляет библиотеку для чтения и разборки 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 имитирует телевизор на компьютере, выводя изображение на экран с частотой 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 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 предоставляет средства для захвата видео в форматах 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
Формат 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 предоставляет множество фильтров для преобразования видеопотоков.
В 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 предоставляет набор программ для управления видеоустройством 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.
В 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-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-герцового видео в родном разрешении:
Преобразование из одного видео формата (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 позволяет кодировать 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) записей в почти максимальном качестве. В принципе, можно ещё немного улучшить качество, захватывая в режиме 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
Проверить на всякий случай не занижен ли уровень звука:
Очистка звука (все равно 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
Захват видео производится аналогично предыдущему случаю.
Быстрое (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, но квадратики уже видны)