@ Карта сайта News Автора!

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

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

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

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

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

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

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

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

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

lzo

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

В F10 установил пакеты lzo, lzo-minilzo и lzo-devel версии 2.03-1.fc10 и lzop версии 1.02-0.6.rc1.fc9.

В 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:

xmms/audacious

Простейшие графические проигрыватели в стиле WinAmp: xmms (GTK1) и audacious (GTK2, внешнее управление утилитой audtool). xmms2 стал развиваться в сторону клиент-серверной модели (gxmms2 на GTK2). К сожалению, ничего не знают о местных традициях в виде ID3v1 тэгов в cp1251 и списков с именами файлов в стиле MS Windows в непонятной кодировке.

Для F10 устанавливаем audacious, audacious-libs, audacious-plugins, audacious-plugins-vortex, audacious-plugins-wavpack версии 1.5.1-5.fc10 и audacious-plugins-freeworld, audacious-plugins-freeworld-aac, audacious-plugins-freeworld-alac, audacious-plugins-freeworld-mms, audacious-plugins-freeworld-mp3, audacious-plugins-freeworld-tta, audacious-plugins-freeworld-wma из rpmfusion версии 1.5.1-1.fc10.

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

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

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

bbtool

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

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

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

mkvtoolnix

Пакет mkvtoolnix позволять разобрать видеофайл в формате matroska (матрёшка) на составные части и собрать и обратно. Здесь же "завалялись" vc1parserб diracparser и base64tool. Графическая оболочка умеет работать не только с .mkv.

Установка пакета mkvtoolnix и mkvtoolnix-gui (mkvinfo, mmg) версии 2.4.2-1.fc10 в F10.

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

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

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

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

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

libdvdread, libdvdcss и libdvdnav

Библиотека libdvdcss выделена, чтобы "вывести из под удара" разработчиков программ для работы с DVD. Занимается дешифровкой DVD-Video (CSS). Управляется переменными окружения:

В F10 установил пакеты libdvdcss и libdvdcss-devel версии 1.2.9-5.fc10 из репозитария russianfedora-free.

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

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

Библиотека libdvdread занимается разборкой структуры DVD-VIdeo диска (выделена из проекта ogle).

В F10 установил пакеты libdvdread и libdvdread-devel версии 4.1.3-1.fc10.

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

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

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

В F10 установил пакеты libdvdnav и libdvdnav-devel версии 4.1.3-1.fc10.

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

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

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

ogle

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

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

В F10 установил пакеты xvattr 1.3-15, ogle и ogle_gui 0.9.2-8.fc7 из freshrpms для F8 (потребовал старую версию libdvdread).

В 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

dvdbackup

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

В F10 устанавливать не стал.

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

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

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

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

mpgtx

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

В F10 установил пакет mpgtx версии 1.3.1-4.fc10 из репозитария rpmfusion-free.

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

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

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

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

divx4linux

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

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

В F10 и FC6 не устанавливал.

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

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

XviD

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

В F10 установил пакеты xvidcore и xvidcore-devel версии 1.2.1-1.fc10 из репозитария rpmfusion-free.

В 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:

dvdauthor

Консольная утилита dvdauthor позволяет преобразовать набор MPEG-2 PS с VOBU (DVD NAV) пакетами (создаются с помощью "mplax -f 8", "mplayer -mpegopts format=dvd") в стандартный каталог DVD-Video.

В F10 установил пакет dvdauthor версии 0.6.14-6.fc10.

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

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

Утилита dvdauthor считывает формат будущего DVD-Video диска из XML-файла с описанием (ключ -x), каталог с результирующей файловой структурой DVD-Video задаётся ключом "-o". Для описания формата необходимо представление о логической структуре DVD-Video:

Упрощённая (полная схема в /usr/share/dvdauthor/dvdauthor.xsd) структура XML-файла (параметры видео и звука могут извлекаться из исходных файлов автоматически, кроме языка):

<dvdauthor [dest="каталог-с-результатом"]>
  <vmgm>
    [<fpc>команда;[...]</fpc>]
    <menus [lang="код-языка"] >
      <video [format="ntsc|pal"] [aspect="4:3|16:9"]
             [resolution="720xfull|720x576|720x480|704xfull|704x576|704x480"] [caption="field1|field2"]
             [widescreen="nopanscan|noletterbox|crop"] />
      <audio [format="mp2|ac3|dts|pcm"] [channels="число-каналов"]
             [quant="16bps|20bps|24bps|drc"] [dolby="surround"]
             [samplerate="48khz|96khz"] [lang="код-языка"] />
      [<audio ... />]
      [<subpicture lang="код-языка" />]
      <pgc [entry="имя-меню"] [palette="имя-файла.yuv|имя-файла.rgb"] [pause="секунд|inf"]>
        <pre>команда;[...]</pre>
        <vob file="имя-файла.mpg" [chapters="список-временных-маркеров-частей"] [pause="секунд|inf"] />
        [<vob ... />]
        <button [name="имя-кнопки"]> команда;[...] </button>
        [<button ... />]
        <post>команда;[...]</post>
      </pgc>
      [<pgc ... />]
    </menus>
  </vmgm>
  <titleset>
    <menus ...>
    <titles>
      [<video ... />]
      [<audio ... />]
      <pgc .../>
      [<pgc ... />]
    </titles>
  </titleset>
  [<titleset ... />]
</dvdauthor>

Дополнительные утилиты: mpeg2desc (демультиплексирование видео и звука), spumux (генерация и мультиплексирование subtitles, формат задаётся XML-файлом, картинки в PNG или BMP, с её помощью создаются меню с нажимаемыми кнопками и картинками, а также графические субтитры из .sub, .srt, .ssa, .smi, .rt, .txt, .aqt, .jss, .js, .ass), spuunmux (выдирание имеющихся).

Методическое пособие по преобразованию произвольного видео файла в DVD-Video с использованием mplayer и k3b (для хранения промежуточного файла можно использоавть fifo):

libfame

Библиотека libfame (fast assembler mpeg encoder) представляет собой ускоренный кодировщик видео MPEG-1 и MPEG-4. Разработки прекратились в 2004 году.

В F10 установил пакеты libfame и libfame-devel версии 0.9.1-13.fc10 из репозитария rpmfusion-free.

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

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

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

libm4isomedia

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

В F10 и FC6 не устанавливал.

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

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

gpac

gpac - большой пакет для работы с MPEG-4 непонятного назначения (авторы называют это "multimedia framework"). Обеспечивает создание MPEG-4 программ, трансляцию их по сети (RTP/RTSP) и просмотр. Работает также с avi, mov, mpg, MPEG-4 Systems, VRML/X3D, SVG, javascript. Конфигурационный файл - ~/.gpacrc. Ставил его только из-за библиотек и утилит для работы x264 с файловым форматом MPEG-4 (.mp4, .mov, QT, ISO Media), текущая версия x264 умеет работать с форматом Matroska, так что потребность отпала. В комплекте исходных текстов идут модифицированные версии библиотек работы с видео и звуком (ffmpeg и т.п.), но их я не устанавливал. Базовая платформа разработчиков - MS Windows (проблемы с прописными и строчными буквами). Для более полной сборки требуются js, amr-nb, mad, faad, xvid, ffmpeg (для которого требуется x264, для которого требуется gpac).

MP4Box - утилита для работы с файловым форматом MPEG-4 (MP4, 3GP, MOV), а также AVI, MPEG-PS, OGG, MPEG Audio, ADTS-AAC, MPEG-4 Visual, H263 Video, AVC/H264 Video, VRML, X3D-XML, X3D-VRML.

MP4Client - проигрыватель командной строки с использованием SDL; при первом запуске создаёт .gpacrc; на файл, закодированный x264 сообщает, что нет такого кодека. Не удалось найти ни одного файла MOV, который он смог бы показать (причём он отнекивался весьма разнообразно) и запись только одной коммерческой трансляции.

MPEG4Gen, SVGGen, X3DGen.

В F10 установил пакеты gpac, gpac-libs, gpac-devel и gpac-devel-static версии 0.4.5-0.5.20080217cvs.fc10 из rpmfusion-free.

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

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

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

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

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

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

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

x264 (неофициальный сайт, список изменений) - кодировщик H.264 (MPEG-4 AVC) из форматов raw YUV 4:2:0 (требуется указывать размер кадра - 640x480 - после имени файла) или "старого" YUV4MPEG 4:2:0 (суффикс имени файла д.б. ".y4m"), выводит в форматах (определяется суффиксом имени файла, ключ "-o"): MKV (.mkv), MP4 (.mp4, требуется gpac, для версий 299 и выше требуется gpac-0.4) и 264 (.264).

Документация отсутствует. Полный список ключей выдаётся по "--longhelp":

В F10 установил пакеты x264, x264-libs, x264-devel, x264-gui и x264-gui-devel версии 0.0.0-0.18.20080905.fc10 (core 61) из репозитария rpmfusion-free. И дополнительно свежую версию 0.66.0-r1114-20090222 (core 66) в /usr/local (изменился смысл параметра subme; убраны параметры b-rdo и bime; профиль High 4:4:4 lossless заменён на High 4:4:4 Predictive в соответствии с изменением стандарта - уменьшение размера на 15%, но mplayer этого не понимает; психовизуальная оптимизация (--psy-rd); размер файла увеличился при "--subme 6" на 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; для git-1038 требуется yasm 0.6.1) в FC6 в /usr/local (требуется, чтобы выводить в .mp4, но и без пакета нельзя, т.к. включён в цепочку зависимостей):

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

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

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

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

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

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

mpeg2dec

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

В F10 установил пакет mpeg2dec версии 0.5.1-3.fc10 из репозитария rpmfusion-free (где mpeg2dec-devel?). В состав пакета входит программа "порчи" файлов для тестирования возможностей восстановления.

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

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

ffmpeg

FFmpeg - видеокодек MPEG1/MPEG4/H263/RV и звука AC3/MPEG (и многое другое), оптимизированный по скорости. Также включает библиотеки работы с контейнерами. В дополнение к библиотекам включает

В F10 установил пакеты ffmpeg, ffmpeg-devel и ffmpeg-libs версии 0.4.9-0.54.20080908.fc10 из репозитария rpmfusion-free.

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

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

libquicktime

libquicktime - библиотека для чтения и записи файлов в формате quicktime, включая кодеки. Включает проигрыватель lqtplay (использует Xvideo/OpenGL и OSS/Alsa, рассказывает всё о формате дорожек) и утилиты libquicktime_config (настройка приоритетов и параметров кодеков), qtinfo (информация о формате дорожек), lqt_transcode (преобразование форматов видео и звука), qt2text (извлечение текста), qtrechunk (сборка видео из кадров), qtdechunk (разборка видео на кадры), qtdump, qtstreamize, qtyuv4toyuv (конвертация в файл формата YUV 4:2:0).

В F10 установил пакеты libquicktime, libquicktime-devel и libquicktime-utils версии 1.0.3-4.fc10 из репозитария rpmfusion-free.

В 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).

dvgrab

Утилита dvgrab видеозахвата DV или HDV (MPEG-2 TS) с источника, подключенного по FireWire (IEEE-1394) или UVC (USB Video Class, используется модуль uvcvideo из V4L2), и удалённого управления видеокамерой. Позволяет разбивать файл по сценам или размеру (в кадрах, байтах или секундах). Формат контейнера и кодек: avi (dv1, dv2), dv (raw), mov, jpg/jpeg, m2t (mpeg2, hdv).

В F10 установил пакет dvgrab версии 3.2-1.fc10.

В FC6 установил пакет dvgrab версии 2.1-2.fc6.

libdv

libdv предоставляет собой библиотеку для кодирования и декодирования видео в формате DV (видеокамеры с интерфейсом IEEE 1394, Firewire, iLink; стандарты IEC 61834, SMPTE 314M), включая примеры использования playdv (OSS/файл и Xv/SDL/gtk/кадры), encodedv (создание видео из отдельных кадров PPM/PGM и WAV), dvconnect (приём видео с OHCI адаптера или передача (--send), используется video1394), dubdv (вставить звук (WAV или OSS DSP) в видеопоток).

В F10 установил пакеты libdv, libdv-tools и libdv-devel версии 1.0.0-5.fc10.

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

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

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

zvbi

Библиотека zvbi представляет средства для извлечения VBI (vertical blanking interval) кодов (цифровой сигнал, закодированный в неиспользуемых промежутках телевизионного сигнала) и декодирования телетекста и CC (closed caption). Использует V4L или V4L2. Используется в AleVT, xawtv, Zapping TV. Включает прокси для разделения VBI данных между несколькими приложениями в виде сервиса (демона) zvbid и оболочки zvbi-chains (подменяет (LD_PRELOAD) для приложения вызовы open и read с использованием прокси вместо реальных устройств). Утилита zvbi-ntsc-cc декодирует CC данные на стандартный вывод.

В F10 установил пакеты zvbi, zvbi-devel и zvbi-fonts версии 0.2.30-1.fc9.

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

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

aalib

Библиотека aalib (ASCII art) позволяет выводить изображения на монохромный а/ц терминал (xterm, ncurses, slang, x11, OpenGL). Включает тестовые программы aafire, aainfo, aasavefont и aatest.

В F10 установил пакеты aalib-libs, aalib и aalib-devel версии 1.4.0-0.16.rc5.fc10.

В FC6 установил пакеты aalib и aalib-devel версии 1.4.0-0.11.rc5.fc6 из репозитария extras.

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

libcaca

Библиотека libcaca (Colour AsCii Art) позволяет выводить изображения на цветной а/ц терминал. Включает тестовые программы и утилиты: cacaview (просмотр графических файлов с интерактивным управлением - масштабирование и пр.), cacafire, cacademo, cacaplay (анимация в собственном формате), cacaserver (читает анимированный файл и изображает telnte сервер на порту 51914), img2txt (преобразование изображения в а/ц формат: ansi, utf8, html (CSS), irc, bbfr (BBCode), ps, svg).

В F10 установил пакеты libcaca, libcaca-devel и caca-utils версии 0.99-0.5.beta16.fc10.

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

openjpeg

openjpeg - кодек JPEG 2000, включая анимацию MJPEG 2000, Cinema 2K, Cinema 4K и сжатие без потерь (очень хорошее). В дополнение к библиотекам содержит утилиты (все имеют ключ "-h") extract_j2k_from_mj2 (извлечение кадров JPEG 2000 из потока MJPEG 2000), frames_to_mj2 (преобразование последовательности кадров .yuv в MJPEG 2000), image_to_j2k (преобразование изображения (.pnm, .pgm, .ppm, .bmp, .tif, .raw, .tga), задаваемого ключом "-i", в изображение в формате JPEG 2000, задаваемое клюом "-o"; множество параметров), j2k_to_image (преобразование из JPEG 2000 (J2K, JP2, JPT) в другой формат (PGM, PPM, PNM, PGX, BMP, TIF, RAW and TGA)), mj2_to_frames, wrap_j2k_in_mj2.

В F10 установил пакеты openjpeg, openjpeg-libs и openjpeg-devel версии 1.3-2.fc9.

avifile

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

Установка avifile из CVS (CVS-0.7.48-090306-01:44-4.3.2) в F10

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

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

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

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

tvtime

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

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

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

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

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

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

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

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

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

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

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

xanim

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

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

mjpegtools

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Формат YUV4MPEG2

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

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

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

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

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

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

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

transcode

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

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

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

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

xawtv

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

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

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

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

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

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

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

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

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

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

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

xine

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

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

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

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

mplayer

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

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

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

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

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

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

Просмотр 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

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

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

mp4player/gmp4player

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавление параметра 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

dvd-slideshow dvd95 dvdisaster dvdrip/dvdrip-master dvdstyler DVDRipOMatic avidemux/avidemux-cli/avidemux-gtk/avidemux-qt devede k9copy kmediafactory/kmediafactory-libs/kmediafactory-devel kplayer smplayer mandvd vlc lxdvdrip mythvideo/mytharchive ogmrip streamdvd/streamdvd-gui/streamdvd-streamanalyze sub2srt subtitleripper thoggen vobcopy

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

@ Карта сайта News Автора!

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



Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru