Bog BOS: dw: Программы для работы с видео в Linux
|
|
Последнее изменение файла: 2003.06.01
Скопировано с www.bog.pp.ru: 2003.06.05
Bog BOS: dw: Программы для работы с видео в Linux
Порядок установки программ и предварительная установка необходимых пакетов из дистрибутива
(в т.ч. *-devel) очень важны, т.к. при сборке скрипты ./configure проверяют
наличие необходимых для реализации части функций библиотек и, если
библиотека отсутствует, то собранная программа не будет иметь соответствующих
функций. Например, если перед установкой mplayer
не установить пакет работы с пультом ДУ Lirc,
то mplayer будет собран без возможности управления с пульта ДУ.
Внимательно следите за сообщениями, выдаваемыми ./configure!
Предварительные действия:
- установка Red Hat Linux 8.0
(со всеми указанными библиотеками!)
- установить драйвер видеокарты (например, для видеокарт NVIDIA требуется модуль ядра и библиотеки OpenGL) и настроить вывод на телевизор
- добавить /usr/local/lib в /etc/ld.so.config и сделать ldconfig
(запуск ldconfig
необходимо повторять после установки каждой разделяемой библиотеки,
т.к. некоторые разработчики забывают вставить соответствующую строчку
в процедуру установки)
- установить драйвера платы видеозахвата и ТВ тюнера (v4l)
- установить программы для работы с пультом ДУ (lirc)
- установить программы работы со сканером (sane, xsane)
- иногда предлагается добавить загрузку v4l (/usr/X11R6/lib/modules/drivers/linux/v4l_drv) в секцию модулей
/etc/X11/XF86Config, но я разницы не заметил
Теперь устанавливаем по порядку (естественно, надо стараться брать самые свежие версии,
но возможны конфликты между пакетами и используемыми библиотеками):
- lame
- bbtool
- mpgtx
- divx4linux
- XviD
- libfame
- libdv
- avifile
- lzo
- mjpegtools
- transcode
- mpeg2dec
- libdvdnav
- libmad
- libsndfile
- faad2
- ogle
- xanim
- tvtime
- xawtv
- xine
- mplayer
- mpeg4ip
Для просмотра DVD-Video я использую ogle, для просмотра ТВ -
tvtime или xawtv, для всех прочих источников - mplayer, для видеозахвата -
streamer из xawtv (в формате YUV4MPEG2), для обработки и сжатия -
mjpegtools или mencoder из mplayer и lame (MPEG-1 с нестандартными параметрами,
звук - MP3; в дальнейшем записывается в формате псевдо VCD с использованием
vcdimager).
Пакет lame 3.92 предоставляет разделяемую библиотеку
для кодирования звука в формате MPEG-1 Layer 3 (CBR, VBR, ABR), а также программу для
кодирования файлов из форматов PCM (.wav), MP1, MP2 или MP3.
Позволяет использовать некоторые фильтры и преобразования звука перед сжатием.
Установка:
- получить и развернуть исходные тексты
(или здесь)
- ./configure --enable-mp3x
- make
- make install
- /usr/local/lib/libmp3lame.la
- /usr/local/lib/libmp3lame.so.0.0.0
- /usr/local/lib/libmp3lame.so.0
- /usr/local/lib/libmp3lame.so
- /usr/local/lib/libmp3lame.a
- /usr/local/bin/lame
- /usr/local/bin/mp3x (строит большое количество красивых графиков)
- /usr/local/share/doc/lame
- /usr/local/man/man1/lame.1
Простейшие способы применения:
- lame -b 128 -h имя.wav имя.mp3 (кодирование с хорошим качеством, 128 kbps)
- lame --abr 128 -b 96 -B 256 -h имя.wav имя.mp3 (кодирование с хорошим качеством,
ABR, средний поток 128 kbps)
- lame --preset voice имя.wav имя.mp3 (кодирование с качеством достаточным для голоса, 56 kbps)
- lame --preset studio имя.wav имя.mp3 (кодирование студийного качества, 256 kbps)
- lame --preset longhelp (выдать список избранных установок)
Пакет bbtool 1.9 позволяет получить подробную и очень подробную информацию о
файлах форматов MPEG, включая файлы .vob (мне он помог понять, почему не показывается второй VideoCD,
сделанный mjpegtools).
Установка:
- получить и развернуть исходные тексты
- make
- переслать вручную в /usr/local/bin
Использование утилит:
- bbdmux имя-файла [stream-id out-file] (демультиплексирует программные
и транспортные потоки MPEG1 и MPEG2 или показывет их структуру)
- bbinfo имя-файла verbose-level
- bbainfo имя файла verbose-level
- bbvinfo имя-файла verbose-level
Пакет mpgtx 1.3 позволяет
демультиплексировать потоки MPEG1 (системные) и MPEG2 (программные и
транспортные), разбивать их, а также элементарные аудио и видео потоки
на части (по границам GOP) или сливать потоки в один,
получение информации, редактирование меток (id3 tag) MPEG1 audio layer 3.
Установка:
- получить и развернуть исходные тексты
- ./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.
Установка:
- получить 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 0.9 представляет собой реализацию библиотек DivX с открытыми
исходными текстами (которые некоторые "солидные" изготовители программ и оборудования
для обработки видео тихонечко включают в свои системы)
Установка:
- получить и развернуть исходные тексты 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)
Библиотека libfame 0.9.0 (fame, recmpeg, fast assembler mpeg encoder)
представляет собой ускоренный кодировщик видео MPEG-1 и MPEG-4
Установка:
- получить и развернуть исходные тексты
- ./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
Библиотека libdv 0.99 предоставляет библиотеку для кодирования
и декодирования видео в формате DV (видеокамеры с интерфейсом IEEE 1394, Firewire, iLink),
включая примеры использования playdv и encodedv
Установка:
- получить и развернуть исходные тексты libdv-0.99.tar.gz
- ./configure --enable-sdl
- make
- make check
- make install
Пакет avifile 0.7.27-20030122 предоставляет библиотеку для чтения
и разборки AVI (ASF, WMP) файлов, а также некоторый набор использующих ее утилит.
В качестве кодеков в некоторых случаях используются исполняемые DLL файлы,
предназначенные для Win32. Я использую только библиотеки (для сборки других пакетов)
и avitype (я уже отвык от программ без документации и ключа --help).
Установка:
- создать и заполнить /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
Библиотека lzo 1.08 предоставляет целый набор алгоритмов
сжатия без потерь. Среди них попадаются такие, что сжимают YUV на 25%
со скоростью 35 МБ/сек и декомпрессируют со скоростью 250 МБ/сек
(скорость memcpy() при переполнении кеша всего вдвое больше!). Наверняка, с помощью простейшего
алгоритма предсказания (db-a) можно довести коэффициент сжатия до 50%
без особой потери скорости сжатия (скорость декомпрессии упадет сильно).
Прямой конкурент zlib, если требуется большая скорость.
Установка:
- получить и развернуть исходные тексты
- ./configure --enable-shared
- make
- make check
- make test
- make install
- /usr/local/include/lzo*.h
- /usr/local/lib/liblzo*
Пакет mjpegtools 1.6.1 предоставляет средства для захвата видео
в форматах MJPEG и YUV (YUV4MPEG, в новых версиях YUV4MPEG2),
утилиты преобразования форматов и фильтрации видео,
сжатие в MJPEG, MPEG-1 и MPEG-2, в т.ч. в виде, подходящем для записи на VideoCD и SVCD
(включая галереи неподвижных изображений), MPEG-4 (DivX).
Форматы YUV4MPEG и YUV4MPEG2 поддерживаются многими другими пакетами.
Теоретически также позволяет редактировать видео (включая переходы), но
в пакетном режиме, что удобным не назовешь. В основном, использую для удаления шума
(yuvdenoise очень хорош), обрезки кадров (yuvscaler очень быстр) и сжатия MPEG
(поддерживает все ограничения аппаратных проигрывателей и неподвижные изображения для
VideoCD/SVCD). Для программирования и записи на CD можно использовать vcdimager.
Установка:
вытереть трудовой пот
Рассмотрим некоторые способы применения пакета
(у меня накопился большой экспериментальный материал по 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 0.6.3 предоставляет множество фильтров для
преобразования видеопотоков.
Установка:
- поставить пакет 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
В состав пакета mpeg2dec 0.3.1
входила полезная утилита mpeg2toc, которая строила оглавление DVD.
В текущей версии она пропала, так что взял из старой (исходников которой не осталось :(
эту версию устанавливать не стал.
Библиотека libdvdnav 0.1.3 (выделена из проекта xine)
позволяет обращаться с меню на DVD.
Установка:
- убедиться, что установлены пакеты libdvdread-devel и libdvdcss-devel
- получить и развернуть исходные тексты
- ./configure
- make
- make install
Библиотека libmad 0.14.2b декодирует звук из форматов MPEG-1 и MPEG-2, Layer 1, 2 и 3.
Установка:
- получить и развернуть исходные тексты
- ./configure --enable-shared --with-esd --enable-accuracy --enable-fpm=intel --enable-strict-iso
- make
- make install
Вспомогательная библиотека для работы со звуком libsndfile 1.0.3
используется в пакете FAAD.
Установка:
- получить и развернуть исходные тексты
- export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
- ./configure
- make
- make install
Библиотека faad2 1.1 (FAAD, FAAC) предоставляет кодек звука MPEG-4 AAC (Dolby),
профили: LC, MAIN, LTP.
Установка:
- получить и развернуть исходные тексты
- чтобы bootstrap не ругался, можно добавить в configure.in следующую строку:
AM_CONFIG_HEADER(configtop.h)
- ./bootstrap
- ./configure
- при переходе к новой версии libsndfile элемент samples в структуре SF_INFO (sndfile.h)
переименовали во frames, а внести изменения в файл frontend/audio.c забыли,
сделаем это за них
- но это не поможет, т.к. при сборке frontend/.libs/faad будет выдано множество ошибок вида
(--disable-shared при запуске ./configure не помогает; начинаю понимать, за что я не люблю C++ ;)
../common/mp4v2/.libs/libmp4v2.so: undefined reference to `operator new[](unsigned)'
- поэтому удаляю всё в директории frontend и создаю там Makefile:
all:
echo empty
install:
echo empty
- make
- make install
- /usr/local/lib/libfaad.la
- /usr/local/lib/libfaad.so.0.0.0
- /usr/local/lib/libfaad.so.0
- /usr/local/lib/libfaad.so
- /usr/local/lib/libfaad.a
- /usr/local/include/faad.h
- /usr/local/lib/libmp4v2.la
- /usr/local/lib/libmp4v2.so.0.0.0
- /usr/local/lib/libmp4v2.so.0
- /usr/local/lib/libmp4v2.so
- /usr/local/lib/libmp4v2.a (8 MB!)
- после сборки mplayer необходимо убедиться, что он
воспроизводит звук из файлов QT/mp4a, а то при таком количестве ошибок можно
всего ожидать
Если все, что вам нужно - это просмотр DVD (VCD, SVCD), а обрабатывать видео
вы и не собирались, то можете удалять все ранее описанные пакеты и не устанавливайте
никаких новых, кроме ogle!
ogle 0.8.5 -
маленький и простоустанавливаемый проигрыватель DVD.
При этом в отличие от своих более "навороченных" собратьев (mplayer, xine, xmovie) он делает это хорошо:
умеет обрабатывать меню диска (в том числе с помощью мышки), ускоренное и замедленное
воспроизведение, автомагический выбор русской звуковой дорожки (и переключение на другую
дорожку с первого раза и без щелчка!). Только с его помощью я увидел некоторые дополнения
к фильмам. В комплекте идет программа ifo_dump
Из недостатков я заметил всего два:
- нет воспроизведения DTS (разработчик явно живет в Европе),
функция появилась пока текст отлеживался!
- выбор угла зрения (angle selection) возможен только из меню DVD (хотя кнопка уже припасена)
Программу потребительского класса лучше устанавливать из
RPM
- на всякий случай обновить (rpm -Fv) libdvdcss и libdvdread
- 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
xanim 2.80.2 (не развивается с 1999) позволяет просматривать (и перекодировать) видео
в различных архаичных форматах (FLI/FLC, Indeo, Creative YUV, gif animated ;). Модули могут использоваться
другими пакетами.
Установка из RPM
- взять 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/
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 0.9.6 увеличилась с 13 кБ до 618 кБ
(правда, половина это .png) и превратилась в полноценную программу со всеми рюшечками
(0.9.7 - уже 3.8 MB, из них 2.8 MB - шрифты в формате FreeFont).
Установка:
- получить и развернуть исходные тексты
- ./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 и настроить его (самодокументирован)
Ключи запуска, перекрывающие ~/.tvtime/tvtimerc (для нормальной работы с таймером
реального времени требуются права root; автор уверяет, что права сразу сбрасываются):
- -w (ширина окна вывода)
- -i (номер источника сигнала v4l, у меня: 0- тюнер, 1 - Composite, 2 - S-Video)
- -m (вывести изображение на весь экран)
- -n (PAL, NTSC, SECAM)
- -D (алгоритм подавления чересстрочности)
- -a (16:9)
Основные клавиши управления (можно переназначить или
использовать lirc или записывать команды в ~/.tvtime/tvtimefifo)
- f - вывести изображение на весь экран (обратно в RH 8.0 уже не вернуть ;)
- a - 16:9 или 4:3
- t - сменить алгоритм подавления чересстрочности (9 штук!)
- i - смена источника сигнала (если нет звука, попереключайте источник)
- c - коррекция яркости для Bt848/878
- z/x - гамма-коррекция
- F3/F4 - яркость
- F5/F6 - контраст
- F7/F8 - насыщенность
- s - сохранить копию экрана
- m - mute
- +/- - громкость
- стрелки влево/вправо - тонкая настройка частоты
- стрелки вверх/вниз - смена канала
- F10 - сканировать все каналы
- левая клавиши мышки - показать текущие настройки
Часть документации доступна только на
сайте.
xawtv 3.83 предоставляет набор программ для управления видеоустройством
video4linux, захвата видеопотока в файл в различных форматах или вывода его на экран,
а также вспомогательные утилиты.
Установка:
- получить и развернуть исходные тексты
- ./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
(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-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-0.90):
- убедиться, что все вышеперечисленные библиотеки и пакеты установлены
(может, кроме 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
dvdnav (обработка DVD меню) сломана, похоже, навсегда.
Пакет 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
- 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
- Linux Digital Video
- MythTV
- DVD Authoring Tools
- VideoLAN
- GLAME - GNU/Linux Audio Mechanics
- sox
- Audio Processing Pipelines
- Audacity
- Editing Sound Under Linux
- xine howto
|
Bog BOS: dw: Программы для работы с видео в Linux
|
|
Copyright © 1996-2003 Sergey E. Bogomolov; www.bog.pp.ru