MPlayer - Медиа Проигрыватель

http://www.mplayerhq.hu

License

MPlayer is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

MPlayer is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with MPlayer; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.


Как читать эту документацию
1. Введение
2. Установка
2.1. Требуемые программы:
2.2. Возможности:
2.3. Как насчёт GUI?
2.4. Шрифты и OSD
2.4.1. TrueType шрифты
2.4.2. Растровые шрифты
2.4.3. OSD меню
2.5. Codec installation
2.5.1. Xvid
2.5.2. x264
2.5.3. AAC кодек
2.5.4. AMR кодеки
2.6. RTC
3. Использование
3.1. Командная строка
3.2. Субтитры и OSD
3.3. Управление
3.3.1. Конфигурация управления
3.3.2. Управление через LIRC
3.3.3. Подчинённый ("рабский") режим
3.4. Сетевые потоки и каналы
3.4.1. Сохранение потоковых данных
3.5. Редактируемые списки решений [Edit Decision Lists] (EDL)
3.5.1. Использование EDL файлов
3.5.2. Создание EDL файлов
3.6. Расширенные возможности аудио
3.6.1. Окружающее/Многоканальное[Surround/Multichannel] воспроизведение
3.6.1.1. DVD'шники
3.6.1.2. Воспроизведение стерео звука на четырех колонках
3.6.1.3. Передача AC-3/DTS
3.6.1.4. Передача MPEG аудио
3.6.1.5. Matrix-кодированное[matrix-encoded] аудио
3.6.1.6. Эмуляция окружающего звука в наушниках
3.6.1.7. Решение проблем
3.6.2. Манипуляции с каналами
3.6.2.1. Общая информация
3.6.2.2. Воспроизведение моно на двух колонках
3.6.2.3. Копирование/перемещение каналов
3.6.2.4. Микширование каналов
3.6.3. Программная подстройка звука
4. Использование CD/DVD
4.1. Приводы CD/DVD
4.1.1. Linux
4.1.2. FreeBSD
4.2. Воспроизведение DVD
4.2.1. Региональный код
4.3. Воспроизведение VCD
5. TV
5.1. TV вход
5.1.1. Компиляция
5.1.2. Советы по использованию
5.1.3. Примеры
5.2. Телетекст
5.2.1. Замечания реализации
5.2.2. Использование телетекста
5.2.3. Горячие клавиши телетекста
6. Радио
6.1. Радио вход
6.1.1. Компиляция
6.1.2. Советы по использованию
6.1.3. Примеры
7. Устройства вывода видео
7.1. Настройка MTRR
7.2. Xv
7.2.1. 3dfx карты
7.2.2. S3 карты
7.2.3. nVidia карты
7.2.4. ATI карты
7.2.5. NeoMagic карты
7.2.6. Trident карты
7.2.7. Kyro/PowerVR карты
7.2.8. Карты Intel
7.3. DGA
7.4. SDL
7.5. SVGAlib
7.6. Вывод во фреймбуфер (FBdev)
7.7. Matrox фреймбуфер (mga_vid)
7.8. Поддержка 3Dfx YUV
7.9. tdfx_vid
7.10. OpenGL вывод
7.11. AAlib - отображение в текстовом режиме
7.12. libcaca - Цветная ASCII Art библиотека
7.13. VESA - вывод в VESA BIOS
7.14. X11
7.15. VIDIX
7.15.1. ATI карты
7.15.2. Matrox карты
7.15.3. Trident карты
7.15.4. 3DLabs карты
7.15.5. nVidia карты
7.15.6. SiS карты
7.16. DirectFB
7.17. DirectFB/Matrox (dfbmga)
7.18. MPEG декодеры
7.18.1. DVB ввод и вывод
7.18.2. DXR2
7.18.3. DXR3/Hollywood+
7.19. Другое оборудование вывода видео
7.19.1. Zr
7.19.2. Blinkenlights[Мерцающие огни?]
7.20. Поддержка TV-выхода
7.20.1. Matrox G400 карты
7.20.2. Matrox G450/G550 карты
7.20.3. ATI карты
7.20.4. nVidia
7.20.5. NeoMagic
8. Портинг
8.1. Linux
8.1.1. Debian пакеты
8.1.2. RPM пакеты
8.1.3. ARM
8.2. *BSD
8.2.1. FreeBSD
8.2.2. OpenBSD
8.2.3. Darwin
8.3. Коммерческие Unix
8.3.1. Solaris
8.3.2. HP-UX
8.3.3. AIX
8.3.4. QNX
8.4. Windows
8.4.1. Cygwin
8.4.2. MinGW
8.5. Mac OS
8.5.1. MPlayer OS X GUI
9. Основы использования MEncoder
9.1. Выбор кодеков и формата файлов
9.2. Выбор входного файла или устройства
9.3. Двухпроходное кодирование MPEG-4 ("DivX")
9.4. Кодирование в Sony PSP видео формат
9.5. Кодирование в MPEG формат
9.6. Масштабирование фильмов
9.7. копирование потока
9.8. Кодирование из нескольких входных файлов изображений (JPEG, PNG, TGA, SGI)
9.9. Извлечение DVD субтитров в файл VOBsub
9.10. Сохранение пропорций
10. Кодирование с MEncoder
10.1. Создание высококачественного MPEG-4 ("DivX") рипа из DVD фильма
10.1.1. Подготовка к кодированию: Идентификация исходного материала и кадровой частоты
10.1.1.1. Определение кадровой частоты источника
10.1.1.2. Идентификация исходного материала
10.1.2. Постоянный квантователь в сравнении с многопроходностью
10.1.3. Ограничения для эффективного кодирования
10.1.4. Усечение и масштабирование
10.1.5. Выбор разрешения и битпотока
10.1.5.1. Расчёт разрешения
10.1.6. Фильтрация
10.1.7. Чересстрочная развёртка и телесин
10.1.8. Кодирование чересстрочного видео
10.1.9. Замечания об аудио/видео синхронизации
10.1.10. Выбор видеокодека
10.1.11. Аудио
10.1.12. Мультиплексирование
10.1.12.1. Улучшение мультиплексирования и надёжности A/V синхронизации
10.1.12.2. Ограничения контейнера AVI
10.1.12.3. Мультиплексирование в контейнер Matroska (Матрёшка)
10.2. Как работать с телесином и чересстрочной развёрткой на NTSC DVD
10.2.1. Введение
10.2.2. Как распознать тип Вашего видео
10.2.2.1. Построчная развёртка
10.2.2.2. Телесин
10.2.2.3. Чересстрочная развертка
10.2.2.4. Смешанные построчная развертка и телесин
10.2.2.5. Смешанные построчная и чересстрочная развертки
10.2.3. Как кодировать каждую категорию
10.2.3.1. Построчная развертка
10.2.3.2. Телесин
10.2.3.3. Чересстрочная развертка
10.2.3.4. Смешанные построчная развертка и телесин
10.2.3.5. Смешанные построчная и чересстрочная развертки
10.2.4. Примечания
10.3. Кодирование семейством кодеков libavcodec
10.3.1. Видео кодеки libavcodec
10.3.2. Аудио кодеки libavcodec
10.3.2.1. Дополнительная таблица PCM/ADPCM форматов
10.3.3. Опции кодирования libavcodec
10.3.4. Примеры настроек кодирования
10.3.5. Нестандартные inter/intra матрицы
10.3.6. Пример
10.4. Кодирование кодеком Xvid
10.4.1. Какие опции следует использовать для получения лучших результатов?
10.4.2. Опции кодирования Xvid
10.4.3. Профили кодирования
10.4.4. Примеры настроек кодирования
10.5. Кодирование кодеком x264
10.5.1. Опции кодирования x264
10.5.1.1. Введение
10.5.1.2. Опции, затрагивающие, в основном, скорость и качество
10.5.1.3. Опции, относящиеся к различным предпочтениям
10.5.2. Примеры настроек кодирования
10.6. Кодирование семейством кодеков Video For Windows
10.6.1. Поддерживаемые кодеки Video for Windows
10.6.2. Использование vfw2menc для создания файла настроек кодека.
10.7. Использование MEncoder для создания совместимых с QuickTime файлов
10.7.1. Зачем необходимо создавать совместимые с QuickTime файлы?
10.7.2. Ограничения QuickTime 7
10.7.3. Обрезание
10.7.4. Масштабирование
10.7.5. A/V синхронизация
10.7.6. Битпоток
10.7.7. Пример кодирования
10.7.8. Ремультиплексирование в MP4
10.7.9. Добавление тегов метаданных
10.8. Использование MEncoder для создания VCD/SVCD/DVD-совместимых файлов.
10.8.1. Ограничения формата
10.8.1.1. Ограничения форматов
10.8.1.2. Ограничения на размер GOP
10.8.1.3. Ограничения на битпоток
10.8.2. Опции вывода
10.8.2.1. Пропорции
10.8.2.2. Сохранение A/V синхронизации
10.8.2.3. Преобразование частоты дискретизации
10.8.3. Использование libavcodec для VCD/SVCD/DVD кодирования
10.8.3.1. Введение
10.8.3.2. lavcopts
10.8.3.3. Примеры
10.8.3.4. Расширенные опции
10.8.4. Кодирование звука
10.8.4.1. toolame
10.8.4.2. twolame
10.8.4.3. libavcodec
10.8.5. Собирая все вместе
10.8.5.1. PAL DVD
10.8.5.2. NTSC DVD
10.8.5.3. PAL AVI, содержащий AC-3 звук, в DVD
10.8.5.4. NTSC AVI, содержащий AC-3 звук, в DVD
10.8.5.5. PAL SVCD
10.8.5.6. NTSC SVCD
10.8.5.7. PAL VCD
10.8.5.8. NTSC VCD
11. Часто Задаваемые вопросы
A. Как сообщать об ошибках
A.1. Отчеты об ошибках безопасности
A.2. Как исправить ошибку
A.3. Как провести проверку на деградацию, используя Subversion
A.4. Как сообщить об ошибке
A.5. Куда сообщать об ошибках
A.6. Что сообщать
A.6.1. Системная информация
A.6.2. Аппаратура и драйверы
A.6.3. Проблемы конфигурации
A.6.4. Проблемы компиляции
A.6.5. Проблемы при воспроизведении
A.6.6. Падения
A.6.6.1. Как сохранить информацию о воспроизводимом падении
A.6.6.2. Как извлечь полезную информацию из дампа core
A.7. Я знаю, что я делаю...
B. Формат скинов MPlayer
B.1. Обзор
B.1.1. Каталоги
B.1.2. Форматы изображений
B.1.3. Компоненты скина
B.1.4. Файлы
B.2. Файл skin
B.2.1. Главное окно и полоса воспроизведения
B.2.2. Вспомогательное окно
B.2.3. Меню со скинами
B.3. Шрифты
B.3.1. Значки
B.4. GUI сообщения
B.5. Создание качественного скина

Как читать эту документацию

Если Вы инсталлируете программу в первый раз, прочитайте все от начала до конца секции "Установка", и просматривайте ссылки, которые Вы обнаружите. Если у Вас все ещё остались вопросы, вернитесь к Оглавлению и поищите там, прочтите FAQ, или попытайтесь про'grep'пить файлы. На большую часть вопросов Вы найдёте ответы здесь, а остальные, наверное, уже спрашивались в наших рассылках. Проверьте по архивам, в которых можно найти много ценной информации.

Глава 1. Введение

MPlayer — это проигрыватель фильмов для LINUX'а (работает на многих других UNIX'ах и не-x86 CPU, см. Портинг). Он проигрывает большинство MPEG, VOB, AVI, Ogg/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, FLI, RM, NuppelVideo, yuv4mpeg, FILM, RoQ, PVA, Matroska файлов, опираясь на множество "родных", XAnim'овских, RealPlayer'овских и Win32 DLL кодеков. Вы также можете смотреть VideoCD, SVCD, DVD, 3ivx, RealMedia, Sorenson, Theora, и MPEG-4 (DivX) фильмы. Другой важной особенностью MPlayer'а является широкий спектр поддерживаемых устройств вывода. Он работает с X11, Xv, DGA, OpenGL, SVGAlib, fbdev, AAlib, libcaca, DirectFB, и кроме того Вы можете использовать GGI and SDL (и таким образом все их драйверы) и также несколько низкоуровневых драйверов для конкретных карт (для Matrox, 3Dfx и Radeon, Mach64, Permedia3)! Большинство из них поддерживают программное или аппаратное масштабирование, поэтому Вы можете насладиться просмотром фильма на полном экране.MPlayer поддерживает некоторые аппаратные MPEG декодеры, такие как DVB и DXR3/Hollywood+. А как насчёт славных больших сглаженных затенённых субтитров (14 поддерживаемых типов) с Европейскими/ISO 8859-1,2 (венгерский, английский, чешский, и т.п.), кириллическими, корейскими шрифтами и вывода информации на экран [On Screen Display (OSD)]?

Плеер без проблем проигрывает повреждённые MPEG файлы (полезно для некоторых VCD), плохие AVI файлы, которые не проигрываются известным Windows Media Player. Даже AVI файлы без индекса являются проигрываемыми. Вы можете временно сделать индекс с помощью ключа -idx или перманентно с помощью MEncoder'а, таким образом получив возможность перемещаться по фильму! Как видите стабильность и качество — наиболее важные вещи, но скорость также изумительна. Кроме того имеется мощная система фильтров для манипуляции с видео и аудио.

MEncoder (Кодировщик фильмов MPlayer 'a) — это простой кодировщик фильмов предназначенный для кодирования фильмов, проигрываемых MPlayer'ом AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA в другие проигрываемые MPlayer'ом форматы (см. ниже). Он может кодировать такими разными кодеками, как MPEG-4 (DivX4) (1 или 2 прохода), libavcodec, PCM/MP3/VBR MP3 звук.

Возможности MEncoder

  • Кодирование из широкого спектра форматов файлов и декодеров MPlayer'а

  • Кодирование во все кодеки FFmpeg'овской библиотеки libavcodec

  • Кодирование видео с V4L совместимых TV тюнеров

  • Кодирование/мультиплексирование в "слоёные"[interleaved] AVI файлы с соответствующим индексом

  • Создание файлов с аудио потоком из внешнего файла

  • Кодирование в 1, 2 или 3 прохода

  • VBR MP3 аудио

  • PCM аудио

  • Копирование потоков

  • Входная A/V синхронизация (основана на PTS, может быть отключена с помощью ключа -mc 0 )

  • Коррекция FPS[кадров/сек] ключом -ofps (полезно при кодировании 30000/1001 fps VOB в 24000/1001 fps AVI)

  • Использование нашей очень мощной системы плагинов (обрезание[crop], расширение[expand], отражение[flip], пост-обработка[postprocess], поворот[rotate], масштабирование[scale], RGB/YUV преобразования)

  • Может кодировать DVD/VOBsub и текстовые субтитры в один выходной файл

  • Может извлекать DVD субтитры в VOBsub формат

MPlayer и MEncoder могут распространяться в соответствии с GNU General Public License Version 2.

Глава 2. Установка

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

В этой главе я постараюсь провести Вас через процесс компиляции и конфигурации MPlayer'а. Это не просто, но это не обязательно будет сложно. Если Вы заметите какие-то отклонения, от того, что я объясняю, пожалуйста, поищите в этой документации и Вы найдёте ответ. Если Вы увидите ссылку, пожалуйста, проследуйте по ней и внимательно прочитайте её содержимое. Это займёт некоторое время, но это ДЕЙСТВИТЕЛЬНО того стоит

Вам нужна современная система. Под Linux'ом рекомендуются ядра 2.4.x.

2.1. Требуемые программы:

  • binutils - рекомендуемая версия - это 2.11.x.

  • gcc - рекомендуемые версии: 2.95 и 3.4+. Известно, что 2.96 и 3.0.x генерируют испорченный код. С 3.1 и 3.2 были проблемы, с 3.3. тоже были небольшие проблемы. На PowerPC используйте 4.x+.

  • XOrg/XFree86 - рекомендуемая версия - 4.3 или более поздняя. Убедитесь, что также установлен пакет разработки, иначе это не будет работать. Вам необязательно иметь X, некоторые драйверы вывода видео работают и без него.

  • make - рекомендуемая версия - 3.79.x или более поздняя. Для сборки XML документации требуется 3.80.

  • FreeType - версия 2.0.9 или более поздняя требуется для OSD и субтитров.

  • ALSA - необязательно, для поддержки вывода звука через ALSA Требуется минимум 0.9.0rc4.

  • libjpeg - необходима для опционального драйвера вывода видео JPEG.

  • libpng - необходима для опционального драйвера вывода видео PNG.

  • directfb - необязательно, версия 0.9.13 или более поздняя требуется для драйвера вывода видео directfb.

  • lame - рекомендуется 3.90 или новее, необходимо для кодирования MP3 аудио c MEncoder,

  • zlib - рекомендуется, необходима для сжатых MOV заголовков и поддержки PNG.

  • LIVE555 Streaming Media - необязательно, необходимо для некоторых RTSP/RTP потоков.

  • cdparanoia - необязательно, для поддержки CDDA

  • libxmms - необязательно, для поддержки входных плагинов XMMS. Требуется минимум 1.2.7.

  • libsmb - необязательно, для поддержки сетевого протокола SMB.

2.2. Возможности:

  • Решите, нужен ли Вам GUI. Если да, прочитайте до компиляции секцию GUI.

  • Если Вы хотите установить MEncoder (наш великолепный многоцелевой кодировщик), читайте секцию MEncoder.

  • Если у Вас есть V4L совместимый TV тюнер, и Вы хотите смотреть/захватывать и кодировать MPlayer'ом фильмы, читайте секцию TV вход.

  • Если у вас есть V4L совместимый Radio тюнер, и вы хотите слушать/записывать MPlayer'ом радиопередачи, читайте секцию Радио.

  • Существует изящное OSD Меню готовое для использования. Проверьте секцию OSD Меню.

Теперь соберите MPlayer:

./configure
make
make install

В этот момент, MPlayer готов к использованию. Проверьте, не содержится ли файл codecs.conf в Вашем домашнем каталоге (~/.mplayer/codecs.conf) оставленный от предыдущих версий MPlayer'а, и удалите его.

Обратите внимание на то, что если у Вас в ~/.mplayer/ есть файл codecs.conf, то встроенный и системный файлы codecs.conf будут полностью игнорированы. Не делайте этого, если только Вы не собираетесь развлекаться со внутренностями MPlayer'а, поскольку это может вызвать множество проблем. Если Вы хотите поменять порядок подбора кодеков, используйте опции -vc, -ac, -vfm, и -afm либо в командной строке, либо в Вашем конфигурационном файле (см. страницу руководства).

Пользователи Debian могут сами создать .deb пакеты, это очень просто. Просто запустите

fakeroot debian/rules binary

в корневом каталоге MPlayer'а. Более подробные инструкции см. в разделе Создание Debian пакетов.

Всегда просматривайте вывод ./configure, и файл configure.log, они содержат информацию о том, что будет собрано, а что нет. Возможно Вы захотите просмотреть файлы config.h и config.mak. Если у Вас стоят какие-то библиотеки, которые не определяются ./configure, проверьте, что у Вас установлены соответствующие заголовки[header files] (обычно это -dev пакеты) и их версии совпадают. Файл configure.log Обычно сообщит Вам, чего не хватает для сборки.

Хотя это не обязательно, но чтобы получить функционирующие OSD и субтитры, должны быть установлены шрифты. Рекомендуемый метод - установка TTF шрифта и указание MPlyer'у использовать его. Подробности, см. в секции Субтитры и OSD.

2.3. Как насчёт GUI?

Для GUI требуется GTK 1.2.x или GTK 2.0 (он не целиком GTK'шный, но панельки - да). Шкуры хранятся в PNG формате, поэтому GTK, libpng (и их части для разработчиков, обычно они называются gtk-dev и libpng-dev) должны быть установлены. Вы можете собрать GUI, указав --enable-gui в ./configure. Затем, чтобы использовать GUI, Вы должны запускать gmplayer.

Поскольку MPlayer не содержит ни одной шкуры, Вы должны скачать их, если Вы хотите использовать GUI. См. download page[страницу закачек]. Они должны быть извлечены в системный каталог ($PREFIX/share/mplayer/skins), или в $HOME/.mplayer/skins. По умолчанию, MPlayer ищет каталог default в этих каталогах, но вы можете использовать опцию -skin newskin, или директиву конфигурационного файла skin=newskin, чтобы использовать шкуру из каталога */skins/newskin.

2.4. Шрифты и OSD

Чтобы насладиться OSD и субтитрами, надо указать MPlayer какой шрифт использовать. Подойдет любой TrueType или специальный растровый шрифт. Тем не менее, рекомендуется использовать TrueType шрифты, поскольку они лучше выглядят, корректно масштабируются до размера фильма, у лучше справляются с различными кодировками.

2.4.1. TrueType шрифты

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

ln -s /path/to/sample_font.ttf ~/.mplayer/subfont.ttf

индивидуально для каждого пользователя, либо одну общесистемную

ln -s /path/to/sample_font.ttf $PREFIX/share/mplayer/subfont.ttf

Если MPlayer был скомпилирован с поддержкой fontconfig, эти методы не будут работать, вместо этого, опция -font ожидает fontconfig название шрифта, и по умолчанию это шрифт sans-serif. Пример:

mplayer -font 'Bitstream Vera Sans' anime.mkv

Чтобы получить список шрифтов, известных fontconfig, используйте fc-list

2.4.2. Растровые шрифты

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

Распакуйте скачанный файл в ~/.mplayer или $PREFIX/share/mplayer. После этого переименуйте каталог или создайте символическую ссылку на него с именем font, например:

ln -s ~/.mplayer/arial-24 ~/.mplayer/font

ln -s $PREFIX/mplayer/arial-24 $PREFIX/mplayer/font

Шрифты должны иметь соответствующий им font.desc файл, отображающий позиции юникод шрифта в кодовую страницу текста субтитров. Другое решение - иметь субтитры, кодированные в UTF-8 и использовать опцию -utf8 или просто дать файлу с субтитрами такое же, как у видео файла, имя с расширением .utf, положив его в один каталог с фильмом.

2.4.3. OSD меню

У MPlayer'а существует целиком определяемый пользователем интерфейс OSD меню.

Замечание

меню Preferences[Настройки] в настоящий момент НЕ НАПИСАНО!

Установка

  1. скомпилируйте MPlayer, указав ./configure параметр --enable-menu

  2. убедитесь, что у Вас установлен OSD шрифт

  3. скопируйте etc/menu.conf в Ваш каталог .mplayer

  4. скопируйте etc/input.conf в Ваш каталог .mplayer, или в системный конфигурационный каталог MPlayer'а (по умолчанию: /usr/local/etc/mplayer)

  5. проверьте и отредактируйте input.conf, чтобы включить кнопки перемещения по меню (это здесь описано).

  6. запустите MPlayer как в следующем примере:

    mplayer -menu file.avi

  7. нажмите любую меню-кнопку, которую Вы определили

2.5. Codec installation

2.5.1. Xvid

Xvid свободный, MPEG-4 ASP совместимый видео кодек, особенностями которого являются двухпроходное кодирование и полная поддержка MPEG-4 ASP. Имейте в виду, что Xvid не нужен для декодирования Xvid-кодированного видео. libavcodec используется по-умолчанию, т.к. обеспечивает более высокую скорость.

Установка Xvid

Как и большинство ПО с открытым исходным кодом, он доступен как в виде официальных релизов, так и в виде CVS версии. Как правило, CVS версия достаточно стабильна для использования, т.к. в большинстве случаев ее особенностью является отсутствие ошибок, присутствующих в релизах. Далее описывается как заставить работать Xvid CVS с MEncoder:

  1. cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login

  2. cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore

  3. cd xvidcore/build/generic

  4. ./bootstrap.sh

  5. ./configure

    Вам может потребоваться добавить некоторые опции (посмотрите вывод ./configure --help).

  6. make && make install

  7. Перекомпилируйте MPlayer.

2.5.2. x264

x264 is a library for creating H.264 video. MPlayer sources are updated whenever an x264 API change occurs, so it is always suggested to use MPlayer from Subversion.

If you have a GIT client installed, the latest x264 sources can be gotten with this command:

git clone git://git.videolan.org/x264.git

Then build and install in the standard way:

./configure && make && make install

Now rerun ./configure for MPlayer to pick up x264 support.

2.5.3. AAC кодек

AAC (Advanced Audio Coding) - это кодек, иногда обнаруживаемый в MOV и MP4 файлах. Декодер с открытым исходным кодом, называемый FAAD, доступен с http://www.audiocoding.com. MPlayer включает в себя CVS версию libfaad 2.1 beta, поэтому Вам ничего не нужно дополнительно скачивать.

Если Вы используете gcc 3.2, который не может скомпилировать встроенный FAAD, или просто хотите использовать внешнюю библиотеку, скачаете её с страницы загрузок и укажите ./configure --enable-faad-external. Вам не нужен весь faad2, чтобы декодировать AAC файлы, достаточно libfaad. Вот как Вы можете её собрать:

cd faad2/
sh bootstrap
./configure
cd libfaad
make
make install

Бинарники отсутствуют на audiocoding.com, но вы можете скачать (apt-get) Debian пакеты с домашней страницы Christian Marillat, Mandrake RPM'ники с P.L.F и RedHat RPM'ники с Livna.

2.5.4. AMR кодеки

Речевой кодек Adaptive Multi-Rate используется в мобильных телефонах третьего поколения (3G). Исходная реализация доступна с The 3rd Generation Partnership Project (бесплатна для личного использования). Чтобы включить поддержку, скачайте и установите библиотеки поддержки для AMR-NB и AMR-WB, следуя инструкциям на указанной странице.

2.6. RTC

У MPlayer'а есть три метода синхронизации.

  • Чтобы использовать старый метод синхронизации, Вам ничего не надо делать. Он использует usleep(), чтобы подстроить A/V синхронизацию, с точностью +/- 10ms. Однако, иногда требуется даже большая точность синхронизации.

  • Новый таймер использует RTC (Real Time Clock[часы истинного времени]) для этой задачи потому, что это таймер точностью 1ms. Он включается опцией -rtc, но требует правильно настроенного ядра. Если Вы работаете с ядром 2.4.19pre8 или более поздним, Вы можете настроить максимальную частоту RTC для обычных пользователей через файловую систему /proc. Используйте одну из этих двух команд, чтобы сделать RTC доступным для обычных пользователей:

    echo 1024 > /proc/sys/dev/rtc/max-user-freq

    sysctl dev/rtc/max-user-freq=1024

    Можно сделать эти изменения постоянными, добавив последнюю в /etc/sysctl.conf.

    Вы увидите эффективность нового кода таймера по строке состояния. Функции управления потребляемой мощностью[power management] у некоторых ноутбуковских BIOS'ов со speedstep-CPU плохо взаимодействуют с RTC. Аудио и видео могут десинхронизироваться. Вероятно, если Вы вставите штекер внешнего питания до включения ноутбука, то это поможет. В некоторых аппаратных комбинациях (подтверждено при использовании не-DMA DVD драйва с материнской платой ALi1541) использование RTC таймера приводит к "прыгающему"[skippy] проигрыванию. В этом случае рекомендуется использовать третий метод.

  • Третий код таймера включается опцией -softsleep. У него эффективность RTC, но он не использует RTC. С другой стороны, он сильнее использует CPU.

Глава 3. Использование

3.1. Командная строка

MPlayer использует составное дерево воспроизведения. Опции, указанные в командной строке, могут применяться ко всем файлам/URL или только к некоторым, в зависимости от местоположения. Например

mplayer -vfm ffmpeg movie1.avi movie2.avi

, будет использовать FFmpeg декодеры для каждого из двух файлов, а

mplayer -vfm ffmpeg movie1.avi movie2.avi -vfm dmo

будет воспроизводить второй файл, используя DMO декодер.

Вы можете группировать файлы/URL'ы вместе, используя { и }. Это полезно, например, с опцией -loop:

mplayer { 1.avi -loop 2 2.avi } -loop 3

Эта команда проиграет файлы в таком порядке: 1, 1, 2, 1, 1, 2, 1, 1, 2.

Воспроизведение файла:

mplayer [опции] [путь/]имя_файла

Другой способ:

mplayer [опции] file:///uri-escaped-path

Воспроизведение множества файлов:

mplayer [общие опции] [путь/]имя_файла1 [опции для имя_файла1] имя_файла2 [опции для имя_файла2] ...

Воспроизведение VCD:

mplayer [опции] vcd://номер_дорожки [-cdrom-device /dev/cdrom]

Воспроизведение DVD:

mplayer [опции] dvd://номер_ролика [-dvd-device /dev/dvd]

Воспроизведение из WWW:

mplayer [опции] http://site.com/file.asf

(так же можно использовать и списки проигрывания (плейлист[playlist]) )

Воспроизведение по RTSP:

mplayer [опции] rtsp://server.example.com/streamName

Примеры:

mplayer -vo x11 /mnt/Films/Contact/contact2.mpg
mplayer vcd://2 -cdrom-device /dev/hdc
mplayer -afm 3 /mnt/DVDtrailers/alien4.vob
mplayer dvd://1 -dvd-device /dev/hdc
mplayer -abs 65536 -delay -0.4 -nobps ~/movies/test.avi

3.2. Субтитры и OSD

Вместе с фильмом MPlayer может показывать и субтитры. В настоящий момент поддерживаются следующие форматы:

  • VOBsub

  • OGM

  • CC (closed caption[скрытые титры])

  • MicroDVD

  • SubRip

  • SubViewer

  • Sami

  • VPlayer

  • RT

  • SSA

  • PJS (Phoenix Japanimation Society)

  • >MPsub

  • AQTitle

  • JACOsub

MPlayer может конвертировать вышеперечисленные форматы субтитров (кроме первых трёх) в следующие форматы с помощью соответствующих опций:

  • MPsub: -dumpmpsub

  • SubRip: -dumpsrtsub

  • MicroDVD: -dumpmicrodvdsub

  • JACOsub: -dumpjacosub

  • Sami: -dumpsami

MEncoder может выдавать DVD субтитры в VOBsub формате.

Опции значительно различаются для различных форматов:

VOBsub субтитры.  VOBsub субтитры состоят из большого (несколько мегабайт) .SUB файла, и необязательных .IDX и/или .IFO файлов. Использование: если у Вас, например, есть файлы sample.sub, sample.ifo (необязательно), sample.idx - Вы должны указать MPlayer'у опции -vobsub sample [-vobsubid id] (можно указать полный путь). Опция -vobsubid похожа на -sid для DVD, с её помощью, Вы можете выбирать между дорожками субтитров (языками). В случае, если -vobsubid пропущена, MPlayer попытается использовать языки, полученные через опцию -slang и перейти к пункту langidx в .IDX файле, чтобы выбрать язык субтитров. Если и это не удаётся, то субтитров не будет.

Другие субтитры.  Прочие форматы субтитров состоят из единого текстового файла, содержащего информацию о синхронизации, местоположении и тексте субтитра. Использование: Если у Вас есть, например, файл sample.txt, Вы должны указать опцию -sub sample.txt (можно указать полный путь).

Регулировка синхронизации и местоположения субтитров:

-subdelay sec

Задерживает субтитры на sec секунд. Это значение может быть отрицательным.

-subfps RATE

Указывает количество кадров/сек для файла субтитров (вещественное число)

-subpos 0-100

Указывает позицию субтитров.

Если Вы наблюдаете увеличивающуюся задержку между фильмом и субтитрами, используя файл субтитров в формате MicroDVD, наиболее вероятно, что частота кадров у фильма и файла субтитров не совпадают. Пожалуйста, обратите внимание, что формат MicroDVD использует абсолютные номера кадров для синхронизации, но в нем нет информациио частоте кадров и поэтому опция -subfps не может использоваться с этим форматом. Вы должны, если хотите навсегда решить эту проблему, вручную конвертировать частоту кадров файла субтитров. MPlayer может сделать для вас это преобразование:

mplayer -dumpmicrodvdsub -fps subtitles_fps -subfps avi_fps \
    -sub subtitle_filename dummy.avi

О DVD субтитрах, читайте в секции DVD.

3.3. Управление

MPlayer использует полностью конфигурируемый, основанный на понятии команды, уровень управления, позволяющий манипулировать MPlayer'ом с клавиатуры, мышью, джойстиком или с пульта дистанционного управления (используя LIRC). Полный список кнопок для управления с клавиатуры см. на man-странице.

3.3.1. Конфигурация управления

MPlayer позволяет повесить любую MPlayer'овскую команду на любую кнопку, используя простой конфигурационный файл. Синтаксис файла состоит из имени кнопки, сопровождающегося командой. По умолчанию конфигурационный файл находится в $HOME/.mplayer/input.conf, но это можно изменить, указав опцию -input conf (относительный путь указывается относительно $HOME/.mplayer).

Пример 3.1. Простой файл конфигурации ввода

##
## MPlayer input control file
##

RIGHT seek +10
LEFT seek -10
- audio_delay 0.100
+ audio_delay -0.100
q quit
> pt_step 1
< pt_step -1
ENTER pt_step 1 1

3.3.2. Управление через LIRC

Linux Infrared Remote Control[Инфракрасное Удалённое Управление Linux'ом] — используйте легко собираемый в домашних условиях IR-приёмник, (почти) любой пульт управления и управляйте с их помощью Вашей Linux машиной. Подробности на www.lirc.org.

Если у Вас установлен ракет lirc, configure само его обнаружит. Если Всё прошло хорошо, MPlayer при старте напечатает сообщение, похожее на "Setting up lirc support...". Если произошла ошибка, он Вам сообщит. Если он не говорит ничего про LIRC, то поддержка LIRC не была скомпилирована. Вот так :-)

Имя приложения для MPlayer — угадайте — mplayer. Вы можете использовать все команды mplayer'а и даже можете использовать более одной команды, разделив их символами \n. Не забудьте включить флаг repeat[повтор] в .lircrc, когда это имеет смысл (перемещение, громкость и т.п.). Вот выдержка из моего .lircrc:

begin
     button = VOLUME_PLUS
     prog = mplayer
     config = volume 1
     repeat = 1
end

begin
    button = VOLUME_MINUS
    prog = mplayer
    config = volume -1
    repeat = 1
end

begin
    button = CD_PLAY
    prog = mplayer
    config = pause
end

begin
    button = CD_STOP
    prog = mplayer
    config = seek 0 1\npause
end

Если Вам не нравится стандартное место Вашего конфигурационного файла lirc (~/.lircrc), используйте опцию -lircconf filename, чтобы указать другой файл.

3.3.3. Подчинённый ("рабский") режим

Наличие подчинённого режима позволяет Вам создавать простые приложения к MPlayer'у. Когда режим включён (опцией -slave), MPlayer читает со стандартного входа команды, разделяемые символом конца строки (\n). Команды документированы в файле slave.txt.

3.4. Сетевые потоки и каналы

MPlayer может проигрывать файлы по сети, используя HTTP, FTP, MMS или RTSP/RTP протокол.

Проигрывание включается добавлением URL'а в командную строку. Также, MPlayer учитывает переменную среды http_proxy и использует прокси[proxy], если это возможно. Также можно заставить использовать прокси:

mplayer http_proxy://proxy.micorsops.com:3128/http://micorsops.com:80/stream.asf

MPlayer может считывать данные со стандартного входа (а не из поименованных каналов). Это может, например, использоваться при проигрывании файлов по FTP:

wget ftp://micorsops.com/something.avi -O - | mplayer -

Замечание

Мы рекомендуем включать -cache при проигрывании из сети:

wget ftp://micorsops.com/something.avi -O - | mplayer -cache 8192 -

3.4.1. Сохранение потоковых данных

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

mplayer http://217.71.208.37:8006 -dumpstream -dumpfile stream.asf

сохранит данные из потока http://217.71.208.37:8006 в stream.asf. Это работает для всех протоколов, поддерживаемых MPlayer, таких как MMS, RSTP, и других.

3.5. Редактируемые списки решений [Edit Decision Lists] (EDL)

Система редактируемых списков решений [edit decision list] (EDL) позволяет Вам автоматически пропускать или заглушать части при воспроизведении, основываясь на специфичном для каждого фильма конфигурационном файле.

Это полезно для тех, кто может захотеть посмотреть фильм в "семейном" режиме. Вы можете исключить любые проявления насилия, ненормативной лексики, Jar-Jar Binks, и т. п. из фильмов, сообразуясь с Вашими личными предпочтениями. Помимо этого, существуют другие применения, например автоматический пропуск рекламы при просмотре фильмов.

Формат EDL файлов пока элементарен. в каждой строке находится одна команда, которая указывает, что делать (пропустить/выключить звук) и когда (используя pts в секундах).

3.5.1. Использование EDL файлов

Включите опцию -edl <имя_файла>, когда Вы запускаете MPlayer, с именем EDL файла, который Вы хотите использовать с видео.

3.5.2. Создание EDL файлов

Текущий формат файлов EDL:

[начальная секунда] [конечная секунда] [действие]

Где секунды - это числа с плавающей точкой (вещественные числа), а действие - это или 0 для пропуска или 1 для заглушения звука. Пример:

5.3   7.1    0
15    16.7   1
420   422    0

Это вызовет пропуск видео с 5.3 секунды до 7.1 секунды, затем заглушит звук на 15 секунде, включит обратно в 16.7 секунд и пропустит видео с 420 по 422 секунды. Эти действия будут происходить, когда таймер проигрывания достигнет указанных в файле значений.

Чтобы начать создать EDL файл, используйте опцию -edlout <filename>. При проигрывании, когда Вы хотите отметить предыдущие две секунды для пропуска, нажмите i. Соответствующая запись для этого времени будет добавлена в файл. Затем Вы можете вернуться и подстроить сгенерированный EDL файл также как и поправить действие по-умолчанию (пропуск блока, указанного в строке).

3.6. Расширенные возможности аудио

3.6.1. Окружающее/Многоканальное[Surround/Multichannel] воспроизведение

3.6.1.1. DVD'шники

Большинство DVD и многие другие файлы содержат окружающий звук. MPlayer поддерживает воспроизведение такого звука, но не задействует его по-умолчанию, поскольку стерео оборудование более распространено. Для воспроизведения файла с более чем двумя каналами звука, используйте опцию -channels. Например, для воспроизведения DVD со звуком 5.1:

mplayer dvd://1 -channels 6

Имейте ввиду, что несмотря на название "5.1" на самом деле присутствует шесть независимых каналов. Если у вас есть соответствующее оборудование, вы спокойно можете добавить опцию channels в конфигурационный файл ~/.mplayer/config MPlayer'а. Например, для установки по умолчанию квадрофонического[quadraphonic] воспроизведения, добавьте такую строку:

channels=4

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

3.6.1.2. Воспроизведение стерео звука на четырех колонках

По-умолчанию, MPlayer не дублирует никакие каналы, как и большинство звуковых драйверов. Если вы хотите, сделайте это самостоятельно:

mplayer filename -af channels=2:2:0:1:0:0

Объяснения ищите в разделе копирование каналов.

3.6.1.3. Передача AC-3/DTS

DVD, как правило, имеют окружающий звук, кодированный в AC-3 (Dolby Digital) или DTS (Digital Theater System[система цифрового кинотеатра]) формате. Некоторое современное аудио оборудование способно самостоятельно декодировать эти форматы. MPlayer может быть сконфигурирован, чтобы передавать данные без их декодирования. Это работает только для наличие в вашей звуковой карте разъема S/PDIF (Sony/Philips Digital Interface[цифровой интерфейс Sony/Philips]).

Если ваше оборудование может декодировать и AC-3, и DTS, выможете спокойно задействовать передачу для обоих форматов. В противном случае включайте передачу только того формата, который поддерживается оборудованием.

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

  • только для AC-3, используйте -ac hwac3

  • только для DTS, используйте -ac hwdts

  • для AC-3 и DTS, используйте -afm hwac3

Чтобы включить передачу в файле настроек MPlayer:

  • только для AC-3: ac=hwac3,

  • только для DTS: ac=hwdts,

  • для AC-3 и DTS: afm=hwac3

Заметьте, что в конце ac=hwac3, и ac=hwdts, присутствует запятая (","). В этом случае MPlayer вернется к кодеку, который он обычно использует, при воспроизведении файла, не содержащего звука AC-3 или DTS. afm=hwac3 запятой не требует; Когда указано семейство аудио, MPlayer вернется к нужному кодеку так или иначе.

3.6.1.4. Передача MPEG аудио

Передатчики цифрового ТВ (такие как DVB и ATSC) и некоторые DVD, обычно имеют аудио потоки MPEG (в частности MP2). Некоторые аппаратные MPEG декодеры, такие как полнофункциональные DVB карты и DXR2 адаптеры имеют встроенную возможность декодирования этого формата. MPlayer может быть настроен для передачи аудио данных без из декодирования.

Для использования этого кодека:

 mplayer -ac hwmpa 

3.6.1.5. Matrix-кодированное[matrix-encoded] аудио

***TODO***

Этот раздел пока не написан, и не может быть завершен, пока кто-нибудь не предоставить нам образцы файлов для тестирования. Если у вас есть matrix-кодированные файлы, знаете где их можно достать или имеете информацию, которая может быть полезна, отошлите сообщение в рассылку MPlayer-DOCS. Укажите в теме письма [matrix-encoded audio].

Если не появятся файлы или какая-нибудь информация, этот раздел будет удален.

Полезные ссылки:

3.6.1.6. Эмуляция окружающего звука в наушниках

MPlayer содержит плагин HRTF (Head Related Transfer Function), основанный на проекте MIT откуда взяты измерения от микрофонов, вмонтированных в макет человеческой головы.

Хотя точная имитация системы окружающего звука[surround system] невозможна, MPlayer'овский плагин HRTF производит более пространственный окружающий звук на 2-х канальных наушниках. Обычное сведение, просто объединяет канали в два; кроме объединения каналов, hrtf создает хитрое эхо, слегка увеличивает разделение стерео, и меняет громкость некоторых частот. Лучше ли звучит HRTF, зависеть от исходного звука, и является делом личного вкуса, но его определенного стоит попробовать.

Для воспроизведения DVD с HRTF:

mplayer dvd://1 -channels 6 -af hrtf

hrtf работает хорошо тоько с 5-ю или 6-ю каналами. Также, hrtf тербуется 48 kHz звук. DVD аудио уже kHz, но если у вас есть файл, который вы хотите воспроизвести при помощи hrtf , с другой частотой сэмплирования, необходимо его ресэмплировать[resample]:

mplayer filename -channels 6 -af resample=48000,hrtf

3.6.1.7. Решение проблем

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

3.6.2. Манипуляции с каналами

3.6.2.1. Общая информация

К сожалению, нет стандарта, описывающего порядок следования каналов. Порядки, указанные ниже, таковые из AC-3 и довольно типичны; попробуйте их и увидите совпадают ли они с вашим источником. Каналы нумеруются с нуля.

mono[моно]

  1. center[центральный]

stereo[стерео]

  1. left[левый]

  2. right[правый]

quadraphonic[квадрофонический]

  1. left front[левый передний]

  2. right front[правый передний]

  3. left rear[левый задний]

  4. right rear[правый задний]

surround 4.0[окружение 4.0]

  1. left front[левый передний]

  2. right front[правый передний]

  3. center rear[центральный задний]

  4. center front[центральный передний]

surround 5.0[]окружение 5.0

  1. left front[левый передний]

  2. right front[правый передний]

  3. left rear[левый задний]

  4. right rear[правый задний]

  5. center front[центральный передний]

surround 5.1[окружение 5.1]

  1. left front[левый передний]

  2. right front[правый передний]

  3. left rear[левый задний]

  4. right rear[правый задний]

  5. center front[центральный передний]

  6. subwoofer[сабвуфер]

Опция -channels используется для запроса количества каналов у аудио декодера. Некоторые аудио кодеки используют указанное количество каналов для определения необходимо ли сведение каналов. Заметьте, что это не всегда отражается на количестве выходных каналов. Например, используя -channels 4 для проигрывания стерео MP3 файла будет по-прежнему выводить звук на два канала, поскольку MP3 кодек не создает дополнительных каналов.

Аудио плагин channels может использоваться для создания или удаления каналов, и полезен для управления количеством каналов, отсылаемых на звуковую карту. Смотрите следующие разделы для получения информации о манипуляции каналами.

3.6.2.2. Воспроизведение моно на двух колонках

Моно звук намного лучше звучит, при воспроизведении на двух колонках - особенно при использовании наушников. Аудиофайлы, реально имеющие один канал, автоматически проигрываются через две колонки; к сожалению, множество файлов с моно звуком кодированы как стерео с тишиной в одном из каналов. Простейший и безопасный способ воспроизведения одинакового звука на обеих колонках состоит в использовании плагина extrastereo:

mplayer filename -af extrastereo=0

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

mplayer filename -af extrastereo=0,volume=5

3.6.2.3. Копирование/перемещение каналов

Плагин channels может переместить любой или все каналы. Установка всех подопций плагина channels не так проста и требует определенной аккуратности.

  1. Определитесь, сколько выходных каналов вам необходимо. Это первая подопция.

  2. Посчитайте количество перемещаемых каналов. Это вторая подопция.Каждый канал может быть перемещен в несколько отличных каналов одновременно, но учтите, что исходный канал (даже при перемещении в одно место) будет пуст, пока в него не переместится какой-либо другой. Для копирования канала, оставляя исходный неизменным, просто переместите канал одновременно в требуемый и исходный. Например:

    канал 2 --> канал 3
    канал 2 --> канал 2

  3. Запишите копии каналов в виде пары подопций. Заметьте, что первый канал - это 0, второй - 1 и т.д. Порядок следования значений не имеет, пока они правильно сгруппированы в пары исходный:результирующий.

Пример: один канал на две колонки

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

  1. Для создания по каналу на каждую из колонок, первая подопция должна быть 2.

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

  3. Для перемещения левого канала (канал 0) в правый (канал 1) пара подопций имеет вид "0:1", "0:0" перемещает левый канал на себя.

Собираем все вместе:

mplayer filename -af channels=2:2:0:1:0:0

Преимущество этого примере перед extrastereo состоит в том, что громкость каждого канала такая же как у исходного. Недостаток заключается в необходимости изменить подопции на "2:2:1:0:1:1", если желаемый канал - правый. К тому же его труднее запомнить и набрать.

Пример: левый канал на две колонки (сокращение)

На самом деле есть более простой способ использования плагина channels для воспроизведения левого канала на обеих колонках:

mplayer filename -af channels=1

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

Пример: дублирование передних каналов на задние

Другая обычная операция - это дублирование передних каналов и воспроизведение их на задних колонках при квадрофонической настройке.

  1. Выходных каналов должно быть четыре. Первая подопция равна "4".

  2. Каждый из передних каналов надо переместить на соответствующий задний и на себя. Это четыре перемещения, так что вторая подопция равна "4".

  3. Левый передний (канал 0) надо переместить на левый задний (канал 2): "0:2". Левый передний также надо переместить на себя: "0:0". правый передний (канал 1) перемещается на правый задний (канал 3): "1:3", и на себя: "1:1".

Собираем все и получаем:

mplayer filename -af channels=4:4:0:2:0:0:1:3:1:1

3.6.2.4. Микширование каналов

Плагин pan пожет микшировать каналы в указанных пользователем пропорциях. Он может делать все, что channels, и даже больше. К сожалению, подопции намного сложнее.

  1. Определите со скольки каналами будете работать. Вам необходимо указать это при помощи -channels и/или -af channels. Дальнейшие примеры покажут когда какую использовать.

  2. Решите, сколько каналов скормить pan (дополнительные декодированные каналы отбрасываются). Это первая подопция, она также определяет сколько каналов готовится к выводу).

  3. Оставшиеся подопции указывают какая часть каждого входного канала микшируется в в каждый выходной. Это самая сложная часть. Для решения задачи, разделите подопции на несколько наборов, по одному на каждый выходной канал. Каждая подопция в наборе относится к входному каналу.

    pan принимает значения от 0 до 512, давая от 0% до 51200% громкости исходного канала. Будьте осторожны, используя значения больше 1, если вы превысить диапазон сэмплинга вашей звуковой карты, вы услышите противный треск и скрежет. Если хотите, можете вслед за pan указать ,volume для задействования обрезки, но лучше держать значения pan достаточно низкими, чтобы не требовалось обрезание.

Пример: один канал на две колонки

Это еще один пример воспроизведения левого канала на двух колонках. Следуя инструкциям выше:

  1. pan должен выдать два канала, т.о. первая подопция равна "2".

  2. Поскольку входных каналов два, будет два набора подопций. Так как выходных каналов тоже два, то будет по две подопции в каждом наборе. Левый канал из файла должен перейти с полной громкостью в новые левый и правый. Таким образом, первый набор подопций будет "1:1". правый канал должен быть отброшен, поэтому второй набор равен "0:0". Любые значения 0 в конце могут быть опущены, но для более легкого понимания мы их оставим.

Соединение опций дает:

mplayer filename -af pan=2:1:1:0:0

Если вместо правого канала нужен левый, подопции для pan будут "2:0:0:1:1".

Пример: левый канал на две колонки (сокращение)

Как и с channels, существует сокращенный вариант, который работает только для левого канала:

mplayer filename -af pan=1:1

Поскольку pan имеет только один входной канал (остальные отбрасываются), будет только одна подопция, указывающая, что единственный канал получает 100% собственной громкости.

Пример: сведение 6-канального PCM

Декодер MPlayer'а для 6-канального PCM не способен сводить каналы. Здесь описан способ сведения PCM, используя pan:

  1. Количество выходных каналов равно 2, значит первая подопция равна "2".

  2. С шестью входными каналами будем иметь шесть наборов подопций. К счастью, поскольку мы беспокоимся о выводе только первых двух, достаточно создать два набора; оставшиеся можно опустить. Имейте ввиду, что не все многоканальные имеют одинаковый порядок каналов. пример показывает как свести файл с порядком как у AC-3 5.1:

    0 - передний левый
    1 - передний правый
    2 - задний левый
    3 - задний правый
    4 - центральный передний
    5 - сабвуфер

    В первом наборе указаны проценты от исходной громкости, в соответствующем порядке, которую каждый выходной канал получит от переднего левого канала: "1:0". Правый передний должен перейти в правый: "0:1". То же для задних: "1:0" и "0:1" Центральный должен попасть в оба с половинной громкостью: "0.5:0.5", и сабвуфер переходит в оба канала с полной громкостью: "1:1".

Все вместе:

mplayer 6-channel.wav -af pan=2:1:0:0:1:1:0:0:1:0.5:0.5:1:1

Проценты, указанные выше всего лишь пример. подстраивайте их как вам удобно.

Пример: Воспроизведение звука 5.1 на больших колонках без сабвуфера

Если у вас есть пара огромных передних колонок, нет надобности тратиться на сабвуфер для полноценной системы 5.1. Если использовать -channels 5 для запроса к liba52 на декодирование 5.1 аудио в 5.0, канал сабвуфера просто отбрасывается. Если вы сотите самостоятельно распределить канал сабвуфера, то потребуется ручное сведение при помощи pan:

  1. Поскольку pan надо анализировать все шесть каналов, укажите -channels 6, чтобы liba52 декодировал их все.

  2. pan выводит только пять каналов, первая подопция равна 5.

  3. Шесть входных каналов означает шесть наборов по пять подопций в каждом.

    • Левый передний дублируется только на себя: "1:0:0:0:0"

    • То же для правого переднего: "0:1:0:0:0"

    • То же для левого заднего: "0:0:1:0:0"

    • И то же для правого заднего: "0:0:0:1:0"

    • Центральный передний, тоже: "0:0:0:0:1"

    • И, наконец, мы должны решить что же делать с сабвуфером, например, половина на передний правый и половина на передний левый: "0.5:0.5:0:0:0"

Собирая все подопции месте, получаем:

mplayer dvd://1 -channels 6 -af pan=5:1:0:0:0:0:0:1:0:0:0:0:0:1:0:0:0:0:0:1:0:0:0:0:0:1:0.5:0.5:0:0:0

3.6.3. Программная подстройка звука

Некоторые звуковые дорожки без усиления слишком тихие для комфортного прослушивания. Это становится проблемой, если звуковое оборудование не способно усиливать сигнал. Опция -softvol указывает MPlayer'у использовать встроенный микшер. После этого вы можете использовать клавиши подстройки громкости (по-умолчанию 9 и 0) чтобы достичь значительно более громкого звучания. Заметьте, что это не исключает использования микшера вашей карты; MPlayer всего лишь усиливает сигнал перед отправкой его на звуковую карту. Следующим пример может являться неплохим началом:

mplayer quiet-file -softvol -softvol-max 300

Опция -softvol-max указывает максимально допустимый уровень звука в процентах от исходного. Например, -softvol-max 200 позволит увеличивать громкость вдвое по сравнению с оригинальным звуком. Использование больших значений с-softvol-max; высокий уровень громкости не будет достигнуть без использования клавиш регулирования громкости. Единственный минус больших значений заключается в том, что, поскольку MPlayer регулирует громкость в процентах от максимума, вы не будете иметь той же точности при использовании клавиш регулирования громкости. Используйте меньшее значение -softvol-max и/или укажите -volstep 1 если нужна повышенная точность.

Опция -softvol работает, управляя аудио плагином volume. Если вам надо воспроизвести файл с определенной громкостью от начальной, можете указать volume вручную:

mplayer quiet-file -af volume=10

Будет воспроизведен файл в усилением в 10 децибел. Будьте осторожны, используя плагин volume - вы можете легко повредить ваши уши слишком громким звуком. Начните с маленьких значений и постепенно увеличивайте, пока не почувствуете, что достаточно. Также, если указать черезчур высокие значения, volume может потребоваться обрезать звук, чтобы избежать отправления на карту данных, превышающих допустимые значение; это приведет к искажению звука.

Глава 4. Использование CD/DVD

4.1. Приводы CD/DVD

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

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

  • Многие CD-ROM приводы ужасно шумят, а снижение скорости может привести к уменьшению шума.

4.1.1. Linux

Вы можете уменьшить скорость вращения IDE CD-ROM приводов программами hdparm,setcd или cdctl. Это работает так:

hdparm -E [скорость] [устройство cdrom]

setcd -x [скорость] [устройство cdrom]

cdctl -bS [скорость]

Если используется эмуляция SCSI, Вам следует применять настройки к реальному IDE устройству, а не сэмулированному SCSI.

Если у Вас есть привилегии администратора, следующая команда тоже может оказаться полезной:

echo file_readahead:2000000 > /proc/ide/[устройство cdrom]/settings

Таким образом, предварительно считывается 2 мегабайта (полезно при дисках с царапинами). Если поставить слишком большое значение, то постоянный запуск и остановка вращения диска ужасно снизят эффективность. Рекомендуется также подстроить привод, используя hdparm:

hdparm -d1 -a256 -u1 [устройство cdrom]

Этой командой включается прямой доступ к памяти[DMA], предварительное чтение и размаскировка IRQ (прочтите man-страницу hdparm, с более подробным описанием).

Обратитесь к "/proc/ide/[устройство cdrom]/settings" для подстройки Вашего CD-ROM привода.

Вы можете настроить скорость SCSI CD-ROM приводов с помощью sdparm, необходима версия 1.03 или выше:

sdparm --command=speed=[скорость в кБ/с] [устройство cdrom]

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

There is also a dedicated tool that works for Plextor SCSI drives.

4.1.2. FreeBSD

Скорость:

cdcontrol [-f устройство] speed [скорость]

DMA:

sysctl hw.ata.atapi_dma=1

4.2. Воспроизведение DVD

Полный список возможных опций можно прочитать в man странице. Синтаксис для воспроизведения стандартного DVD таков:

mplayer dvd://<ролик> [-dvd-device устройство]

Пример:

mplayer dvd://1 -dvd-device /dev/hdc

Если вы собрали MPlayer с поддержкой dvdnav, синтаксис тот же, просто укажите dvdnav:// вместо dvd://.

Устройство DVD по умолчанию — это /dev/dvd. Если Ваши настройки отличаются, создайте символическую ссылку или укажите правильное устройство в командной строке, используя опцию -dvd-device.

MPlayer использует библиотеки libdvdread и libdvdcss для воспроизведения и расшифровки DVD. Эти две библиотеки содержатся в дереве исходного кода MPlayer'а, так что отдельно устанавливать их не нужно. Вы также можете использовать уже установленные в системе версии библиотек, но это не рекомендуется, так как может приводить к ошибкам, несовместимости и потере скорости.

Замечание

В случае проблем с декодированием DVD, попробуйте отключить supermount или другие подобные удобства. Некоторые RPC-2 устройства могут требовать уcтановку кода региона.

Расшифровка DVD.  Расшифровка DVD осуществляется библиотекой libdvdcss. Метод может быть указан переменной окружения DVDCSS_METHOD, подробную информацию смотрите на странице руководства man.

4.2.1. Региональный код

Современные DVD приводы имеют дурацкое ограничение, называемое региональным кодом. Это — способ заставить DVD приводы воспроизводить DVD диски, созданные для одного из шести различных регионов, на которые разделен мир. Как может группа людей сесть за стол, придумать подобное и при этом ожидать, что мир 21-го века поклонится их воле — это за пределами человеческого понимания.

Приводы, реализующие региональную защиту исключительно при помощи программного обеспечения, известны как RPC-1 приводы, реализующие ее аппаратно — RPC-2. RPC-2 приводы позволяют пять раз изменить код региона, после чего он фиксируется навсегда. В Linux Вы можете воспользоваться утилитой regionset для установки регионального кода Вашего DVD привода.

К счастью, возможна переделка RPC-2 приводов в RPC-1, через обновление прошивки. Укажите модель Вашего DVD привода в Вашем любимом поисковике или посмотрите на форуме и разделах загрузок на "Странице прошивок". Хотя обычные предостережения, касающиеся обновления прошивки, остаются в силе, опыт избавления от региональной защиты в основном положителен.

4.3. Воспроизведение VCD

Полный список возможных опций можно прочитать в man. Синтаксис для обычного Видео-CD (VCD):

mplayer vcd://<дорожка> [-cdrom-device <устройство>]

Пример:

mplayer vcd://2 -cdrom-device /dev/hdc

Устройство VCD по умолчанию — /dev/cdrom. Если Ваши настройки отличаются, создайте символическую ссылку добавьте правильное название в командной строке после опции -cdrom-device.

Замечание

По крайней мере Plextor'ы и некоторые Toshiba SCSI CD-ROM приводы показывают ужасную производительность при чтении VCD'ов. Это объясняется тем, что CDROMREADRAW ioctl на этих приводах реализован не полностью. Если Вы имеете некоторые познания в сфере программирования SCSI, пожалуйста помогите нам в написании поддержки SCSI generic для VCD.

В настоящий момент Вы можете извлечь данные с VCD, используя readvcd, и воспроизвести получившийся файл MPlayer 'ом.

Структура VCD.  VCD составлен из секторов CD-ROM XA, т.е. дорожек CD-ROM mode 2 form 1 и form 2:

  • Первая дорожка записана в mode 2 form 2 формате, что, в частности, означает использование коррекции ошибок L2. Дорожка содержит файловую систему ISO-9660 с секторами по 2048 байт. Там содержатся метаданные VCD, и картинки, часто использующиеся в меню. Здесь также могут храниться фрагменты MPEG для меню, но каждый из них должен быть разбит на кусочки по 150 секторов. Еще файловая система может хранить файлы или программы, не имеющие отношения к работе с VCD.

  • Вторая и остальные дорожки содержат MPEG-поток секторами по 2324 байта, по одному пакету MPEG PS на сектор вместо файловой системы. Это дорожки в формате mode 2 form 1 и хранят больше информации на один сектор за счет потери возможности некоторой коррекции ошибок. После первой дорожки также допустимо присутствие дорожки CD-DA. В некоторых ОС используются различные трюки, чтобы сделать эти не-ISO-9660 дорожки видимыми в файловой системе. Но Linux — это не тот случай (пока). Здесь MPEG данные не могут быть смонтированы. (Вы когда-нибудь монтировали аудио диск для того, чтобы его воспроизвести?) Так как большинство фильмов находится именно на таких дорожках, попробуйте сначала vcd://2.

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

  • Описание стандарта Video CD называется Philips "White Book" и, как правило, недоступна в онлайн, т.к. должна приобретаться у Philips. Более подробная информация о Video CD может быть найдена в документации vcdimager.

Про файлы .DAT.  Файл примерно в 600 мегабайт на первой дорожке не настоящий! Это так называемый ISO-переход, созданный, чтобы позволить Windows обрабатывать эти дорожки (Windows вообще запрещает приложениям использовать прямой доступ к устройствам). Под Linux Вы не можете копировать эти файлы (они выглядят, как мусор). Под Windows это возможно, поскольку там iso9660 эмулирует прямой доступ к дорожкам через этот файл. Чтобы проигрывать .DAT файл Вам нужен драйвер, из Linux версии PowerDVD. Это модифицированный драйвер iso9660 файловой системы (vcdfs/isofs-2.4.X.o), который способен эмулировать прямой доступ к дорожкам через этот файл. Если Вы замонтируете диск, используя их драйвер, Вы можете копировать и даже проигрывать .DAT файлы MPlayer'ом. Но это не будет работать со стандартным драйвером iso9660 из ядра Linux! Используйте вместо этого vcd://. Альтернативами для копирования VCD может послужить новый драйвер cdfs (не входит в официальное ядро) который показывает дорожки[сессии] на диске как файлы образов и cdrdao, приложение для побитового чтения/копирования CD.

Глава 5. TV

5.1. TV вход

В этой секции описывается, как включить просмотр/захват с V4L-совместимого TV тюнера. См. man страницу, для описания TV опций и кнопок управления.

5.1.1. Компиляция

  1. Во-первых, Вам нужно перекомпилировать MPlayer, ./configure автоматически обнаружит заголовки ядра, относящиеся к v4l, и наличие /dev/video* устройств. Если они существуют, будет собрана поддержка TV (см. вывод ./configure).

  2. Убедитесь, что Ваш тюнер работает с другими TV приложениями под Linux, например XawTV.

5.1.2. Советы по использованию

Полный список опций доступен на страницах руководства (man). Вот всего несколько советов:

  • Используйте опцию channels. Пример:

    -tv channels=26-MTV1,23-TV2

    Объяснение: При использовании такой опции, будут использоваться только каналы 26 и 23, и, кроме того, будет приятный OSD текст при переключении между каналами, отображающий название канала. Пробелы в названиях каналов должны быть заменены символом "_".

  • Выберите разумные размеры изображения. Размеры полученного изображения должны делиться на 16.

  • Если Вы захватываете видео с вертикальным разрешением выше половины полного разрешения (т.е. 288 для PAL или 240 для NTSC), то получаемые вами 'кадры' на самом деле будут чередующимися[interleaved] парами полей. В зависимости от того, что вы собираетесь делать с видео, можно оставить их в таком виде, произвести разрушающую (с возможной потерей качества) построчную развёртку, либо разделить пары обратно в отдельные поля.

    Иначе Вы получите фильм с сильными искажениями в сценах с быстрыми движениями, и управление битпотоком, скорее всего, будет даже не в состоянии поддерживать необходимый уровень битпотока, поскольку артефакты чересстрочной развёртки создают огромное количество мелких деталей и поэтому отнимают большую часть полосы пропускания. Вы можете включить преобразование в построчную развёртку, используя -vf pp=DEINT_TYPE. Обычно pp=lb работает хорошо, но это уже субъективное мнение. Другие алгоритмы преобразования в построчную развёртку см. на man-странице и попробуйте их.

  • Обрежьте пустое пространство. Когда вы захватываете видео, зоны по краям, как правило, черны или содержат просто шум. Это опять съедает часть битпотока. Точнее, это не сами чёрные зоны, а контрастный переход от чёрного к более светлому видео, но это сейчас не важно. Прежде чем Вы начнёте захватывать, подстройте аргументы опции crop, чтобы обрезать весь мусор по краям. Ещё раз, не забудьте сохранить получившиеся размеры изображения разумными.

  • Отслеживайте загрузку CPU. Она не должна пересекать 90% границу большую часть времени. Если у Вас большой размер буфера захвата, MEncoder переживёт перегрузку в течение нескольких секунд, но не более того. Лучше отключить 3D OpenGL, хранители экрана и другую подобную гадость.

  • Не меняйте системные часы. MEncoder использует системные часы для A/V синхронизации. Если Вы переведёте системные часы (особенно назад), MEncoder запутается, и Вы начнёте терять кадры. Это особенно важный вопрос, если Вы подключены к сети и используете какие-нибудь программы синхронизации времени, в духе NTP. Вы должны отключить NTP во время захвата, если Вы действительно хотите сделать хорошую запись.

  • Изменяйте значение outfmt только если Вы знаете, что Вы делаете, или Ваши карта/драйвер не поддерживают значение по умолчанию (пространство цветов YV12). В старых версиях MPlayer/ MEncoder было необходимо выставлять нужное значение формата вывода. Эта проблема должна быть решена в текущих версиях и опция outfmt больше не требуется, поскольку значение по умолчанию подходит в большинстве случаев. Например если Вы будете захватывать в DivX, используя libavcodec и укажете outfmt=RGB24 для улучшения качества полученного изображения, то Вы увидите, что в действительности, изображение все равно будет перекодировано в YV12, поэтому все что Вы получите, это огромная загрузка CPU.

  • Чтобы использовать пространство цветов I420 (outfmt=i420), Вы должны указать опцию -vc rawi420 в связи с конфликтом fourcc с видео кодеком Intel Indeo.

  • Есть несколько путей захвата аудио. Вы можете получить звук, либо используя Вашу звуковую карту и внешний кабель, соединяющий видео карту и линейный вход[line-in], либо используя встроенный АЦП на чипе bt878. В этом случае, Вы должны загрузить драйвер btaudio. Читайте файл linux/Documentation/sound/btaudio (в дереве ядра, не MPlayer'а) с некоторыми инструкциями по использованию этого драйвера.

  • Если MEncoder не может открыть аудио устройство, убедитесь, что оно действительно доступно. Возможны некоторые трудности со звуковыми серверами, например arts (KDE) и esd (GNOME). Если у Вас полнодуплексная звуковая карта (почти все современные карты это поддерживают), и Вы используете KDE, попробуйте отметить галочку "full duplex" в меню настроек звукового сервера.

5.1.3. Примеры

Фиктивный вывод, AAlib :)

mplayer -tv driver=dummy:width=640:height=480 -vo aatv://

Ввод со стандартного V4L:

mplayer -tv driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv tv://

Более изощрённый пример. Это заставляет MEncoder захватывать полное PAL изображение, обрезать края и изменить развёртку картинки на построчную, используя алгоритм линейного смешивания. Аудио сжимается до постоянного битпотока 64 кБ/с, используя LAME кодек. Эти установки подходят для захвата фильмов.

mencoder -tv driver=v4l:width=768:height=576 -oac mp3lame -lameopts cbr:br=64\
     -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 \
     -vf crop=720:544:24:16,pp=lb -o output.avi tv://

Здесь, изображение будет дополнительно масштабировано до 384x288 и сжато с битпотоком 350 кБ/с в режиме высокого качества. Опция vqmax даёт волю квантайзеру и позволяет компрессору видео действительно достичь столь низкого битпотока, правда ценой качества. Это может быть полезно для захвата длинных TV серий, где качество не особенно важно.

mencoder -tv driver=v4l:width=768:height=576 \
    -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350:vhq:vqmax=31:keyint=300 \
    -oac mp3lame -lameopts cbr:br=48 -sws 1 -o output.avi \
    -vf crop=720:540:24:18,pp=lb,scale=384:288 tv://

Также возможно указать меньшие размеры изображения в опции -tv и пропустить программное масштабирование, но приведённый подход использует максимальное доступное количество информации и чуть более устойчив к шуму. Чипы bt8x8 из-за аппаратных ограничений могут усреднять пиксели только по горизонтали.

5.2. Телетекст

На данный момент телетекст доступен только в MPlayer для v4l и v4l2 драйверов.

5.2.1. Замечания реализации

MPlayer поддерживает обычный текст, псевдографику и навигационные ссылки. К сожалению, цветные страницы поддерживаются пока не полностью - все страницы отображаются оттенками серого. Страницы с субтитрами (еще известные как Closed Captions) тоже поддерживаются.

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

Замечание: Использование телетекста с -vo xv приводит к появлению странных цветов.

5.2.2. Использование телетекста

Чтобы включить декодирование телетекста, вы должны указать VBI устройство, из которого следует читать данные (обычно /dev/vbi0 в Linux). Это можно сделать, указав tdevice в вашем файле конфигурации:

tv=tdevice=/dev/vbi0

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

tv=tdevice=/dev/vbi0:tlang=-1

Вот пример для Русского:

tv=tdevice=/dev/vbi0:tlang=33

5.2.3. Горячие клавиши телетекста

КлавишаОписание
XВключает/выключает отображение телетекста
CЦиклически переключает режими отрисовки (непрозрачный, прозрачный, инфертированный непрозрачный, инвертированный прозрачный
Left/RightПереходит к предыдущей/следующей странице телетекста
PageUp/PageDownПерходит к следующей/предыдущей дополнительной странице телетекста
ЦифрыВводят номер страницы для перехода к ней

Глава 6. Радио

6.1. Радио вход

В этой секции описывается как включить прослушивание радио при помощи V4L совместимого Радио тюнера. Смотрите man страницу для описания опций и кнопок управления.

6.1.1. Компиляция

  1. Во-первых, вам необходимо перекомпилировать MPlayer при помощи ./configure с указанием опций --enable-radio и (если хотите включить поддержку записи) --enable-radio-capture.

  2. Убедитесь, что ваш тюнер работает с другими приложениями в Linux, например XawTV.

6.1.2. Советы по использованию

Полный список опций доступен на страницах руководства (man). Вот всего несколько советов:

  • Использование channels опции. Пример:

    -radio channels=104.4-Sibir,103.9-Maximum

    Объяснение: при указании этой опции, будут доступны только радиостанции 104.4 и 103.9. Кроме того, будет приятный OSD текст при переключении между каналами, отображающий название канала. Пробелы в названиях каналов должны быть заменены символом "_"

  • Есть несколько путей захвата аудио. Вы можете получить звук, либо используя Вашу звуковую карту и внешний кабель, соединяющий видео карту и линейный вход[line-in], либо используя встроенный ADC на в чипе saa7134. В этом случае, Вы должны загрузить драйвер saa7134-alsa или saa7134-oss.

  • MEncoder не может быть использован для захвата звука, поскольку он требует обязательного наличия видео-потока.Таким образом, вы можете производит захват либо используя программу arecord из проекта ALSA, либо используя -ao pcm:file=file.wav. Во втором случае вы не будете слышать ничего во время захвата (за исключение случая, когда вы используете line-in кабель, и слушаете звук непосредственно с линейного входа).

6.1.3. Примеры

Вход со стандартного V4L (используя line-in кабель, запись отключена.):

mplayer radio://104.4

Вход со стандартного V4L (используя line-in кабель, запись отключена. Используется интерфейс V4Lv1):

mplayer -radio driver=v4l radio://104.4

прослушивание второй радиостанции из списка:

mplayer -radio channels=104.4=Sibir,103.9=Maximm  radio://2

Получение звука через шину pci с внутреннего ADC радио тюнера. В этом примере тюнер используется как вторая звуковая карта (ALSA устройство hw:1,0). Для карт, основанных на saa7134, либо saa7134-alsa, либо saa7134-oss модуль должен быть загружен.

mplayer -rawaudio rate=32000 radio://2/capture \
    -radio adevice=hw=1.0:arate=32000:channels=104.4=Sibir,103.9=Maximm

Замечание

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

Глава 7. Устройства вывода видео

7.1. Настройка MTRR

ОЧЕНЬ важно проверить, правильно ли установлены MTRR регистры, поскольку они могут дать большой прирост производительности.

Выполните cat /proc/mtrr:

--($:~)-- cat /proc/mtrr
reg00: base=0xe4000000 (3648MB), size=  16MB: write-combining, count=9
reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1

Здесь все верно, показана моя Matrox G400 с 16Мб памяти. Я выполнил это из-под XFree 4.x.x, который автоматически устанавливает регистры MTRR.

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

  1. из сообщений запуска X11, например:

    (--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000
    (--) SVGA: Linear framebuffer at 0xD8000000

  2. из /proc/pci (используйте команду lspci -v):

    01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525
    Memory at d8000000 (32-bit, prefetchable)

  3. из сообщений драйвера ядра mga_vid (используйте dmesg):

    mga_mem_base = d8000000

Теперь давайте найдем объем памяти. Это очень просто, просто преобразуйте размер видео памяти в шестнадцатеричный формат, или используйте таблицу:

1 MB0x100000
2 MB0x200000
4 MB0x400000
8 MB0x800000
16 MB0x1000000
32 MB0x2000000

Вы знаете базовый адрес и размер памяти, так давайте настроим регистры MTRR! Например, для вышеуказанной карты Matrox (base=0xd8000000) с 32Мб памяти (size=0x2000000) просто выполните:

echo "base=0xd8000000 size=0x2000000 type=write-combining" > /proc/mtrr

Не все CPU имеют MTRR. Например, старый K6-2 (около 266MHz, степпинг 0) не имеет MTRR, но у степпинга 12 они уже есть (запустите cat /proc/cpuinfo чтобы это проверить).

7.2. Xv

Под XFree86 4.0.2 или новее, вы можете использовать функции работы с YUV[YUV routines] вашей видеокарты, используя расширение XVideo, то, которое используется при указании опциии -vo xv. К тому же этот драйвер поддерживает управление яркостью/контрастностью/цветностью/и т.д. (кроме случая использования старого ,медленного DivX кодека DirectShow, который везде это поддерживает), смотрите страницу man.

Чтобы заставить его работать, убедитесь, что выполняется следующее:

  1. Требуется использовать XFree86 4.0.2 или новее (предыдущие версии не меют XVideo)

  2. Ваша карта действительно поддерживает аппаратное ускорение (современные - да)

  3. X загружают расширение XVideo, это похоже на:

    (II) Loading extension XVideo

    в /var/log/XFree86.0.log

    Замечание

    Это всего лишь загружается расширение XVideo. При нормальной установке оно грузится всегда, это не означает, что загружена аппаратная поддержка XVideo.

  4. Ваша карта имеет поддержку Xv для Linux. Чтобы это проверить, запустите xvinfo, являющуюся частью дистрибутива XFree86. Она должна выдать на экран длинный текст, похожий на этот:

    X-Video Extension version 2.2
    screen #0
      Adaptor #0: "Savage Streams Engine"
        number of ports: 1
        port base: 43
        operations supported: PutImage
        supported visuals:
          depth 16, visualID 0x22
          depth 16, visualID 0x23
        number of attributes: 5
    (...)
        Number of image formats: 7
          id: 0x32595559 (YUY2)
            guid: 59555932-0000-0010-8000-00aa00389b71
            bits per pixel: 16
            number of planes: 1
            type: YUV (packed)
          id: 0x32315659 (YV12)
            guid: 59563132-0000-0010-8000-00aa00389b71
            bits per pixel: 12
            number of planes: 3
            type: YUV (planar)
    (...и т.д....)

    Карта должна поддерживать YUY2 пакованные и YUV12 планарные[planar] форматы пикселов, чтобы быть полезной в MPlayer.

  5. И, наконец, проверьте, что MPlayer собран с поддержкой 'xv'. Выполните mplayer -vo help | grep xv . Если поддержка 'xv' включена, то увидите похожую строку:

      xv      X11/Xv

7.2.1. 3dfx карты

Хорошо известно, что старые 3dfx драйвера имеют проблемы с ускорением XVideo, они не поддерживают ни YUY2 ни YV12, ни т.п. Проверьте, что у вас XFree86 версии 4.2.0 или новее, он может работать с YV12 и YUY2, в то время как предыдущие версии, включая 4.1.0, с YV12 приводят к краху. Если вы столкнулись со странными эффектами при использовании -vo xv, попробуйте SDL (он тоже имеет поддержку XVideo), и посмотрите поможет ли это. Обратитесь к разделу SDL за подробностями.

ИЛИ, попробуйте НОВЫЙ -vo tdfxfb драйвер! Смотрите раздел tdfxfb.

7.2.2. S3 карты

S3 Savage3D, должны прекрасно работать, но для Savage4 используйте XFree86 версии 4.0.3 или выше (в случае проблем с изображением попробуйте 16bpp). По поводу S3 Virge: она поддерживает xv, но карта сама по себе слишком медленная, так что лучше будет ее продать.

Существует родной драйвер фреймбуфера для карт S3 Virge, аналогичный tdfxfb. Настройте ваш фреймбуфер (например, укажите ядру "vga=792 video=vesa:mtrr") и воспользуйтесь -vo s3fb (-vf yuy2 и -dr тоже помогут).

Замечание

Пока не ясно в каких моделях Savage отсутствует поддержка YV12, и преобразование осуществляется драйвером (медленно). Если вы грешите на свою карту, возьмите свежий драйвер иди вежливо спросите в списке рассылки MPlayer-users о драйвере с поддержкой MMX/3DNow!.

7.2.3. nVidia карты

nVidia под Linux - не всегда хороший выбор ... Открытые драйвера XFree86 поддерживают большинство этих карт, но в некоторых случаях придется использовать закрытый бинарный драйвер от nVidia, доступный на сайте nVidia. Этот драйвер также всегда необходим для задействования 3D ускорения.

Карты Riva128 не имеют поддержки XVideo с драйвером nVidia от XFree86 :( Подайте жалобу nVidia.

Тем не менее, MPlayer имеет VIDIX драйвер для большинства карт nVidia. Сейчас он в стадии беты и имеет некоторые недостатки. За подробостями обращайтесь к разделу nVidia VIDIX.

7.2.4. ATI карты

Драйвер GATOS (который стоит использовать, если у вас не Rage128 или Radeon) по-умолчанию имеет включенную опцию VSYNC. Это значит, что скорость декодирования (!) синхронизирована с частотой обновления монитора. Если воспроизведение кажется медленным, попробуйте как-нибудь отключить VSYNC или установите частоту обновления в n*(fps[кадров/с] фильма) Гц.

Radeon VE - если нужен X, используйте XFree86 4.2.0 или новее. Нет поддержки TV-выхода. Конечно, с MPlayer вы можете успешно получить ускоренное отображение, с или без TV-выхода, без каких-либо библиотек X. Читайте раздел VIDIX.

7.2.5. NeoMagic карты

Эти карты можно найти во многих ноутбуках. Вы должны использовать XFree86 4.3.0 или более новый, или использовать Xv-совместимые драйвера. от Stefan Seyfried. Просто выберите подходящий для вашей версии XFree86.

XFree86 4.3.0 включает поддержку Xv, недавно Bohdan Horst отослал небольшой патч для исходников XFree86, ускоряющий операции с фреймбуфером (и XVideo) в четыре раза. Патч был включен в XFree86 CVS и должен быть в следующем релизе после 4.3.0.

Чтобы сделать возможным воспроизведение фильмов DVD разрешения поправьте ваш XF86Config как указано здесь:

Section "Device"
    [...]
    Driver "neomagic"
    Option "OverlayMem" "829440"
    [...]
EndSection

7.2.6. Trident карты

Если хотите использовать Xv с картой Trident, учитывая, что они не работают с 4.1.0, установите XFree 4.2.0. 4.2.0 добавляет поддержку полноэкранного Xv с картой Cyberblade XP.

Другой вариант: MPlayer имеет VIDIX драйвер для карт Cyberblade/i1.

7.2.7. Kyro/PowerVR карты

Если хотите использовать Xv с картами на базе Kyro (например, Hercules Prophet 4000XT), следует скачать драйверы с сайта PowerVR.

7.2.8. Карты Intel

Эти карты можно обнаружить во многих ноутбуках. Рекомендуется Xorg последней версии.

Для воспроизведения контента размера DVD (и более) поправьте ваш XF86Config/xorg.conf как указано здесь:

Section "Device"
    [...]
    Driver "intel"
    Option "LinearAlloc" "6144"
    [...]
EndSection

Отсутствие этой опции скорее всего приведет к появлению ошибки

X11 error: BadAlloc (insufficient resources for operation)

при попытке использовать -vo xv.

7.3. DGA

ПРЕАМБУЛА.  Этот документ пытается сказать несколько слов о том, что такое DGA в целом и что можт сделать DGA драйвер для MPlayer (а что нет).

ЧТО ТАКОЕ DGA.  DGA это сокращение от Direct Graphics Access[Прямой Доступ к Графике] и означает обход программами X сервера и прямое изменение ими памяти фреймбуфера. Говоря техническим языком, это происходит при помощи отображения[mapping] памяти фреймбуфера в адресное пространство вашего процесса. Это позволяется ядром, только если у вас есть привилегии суперпользователя. Вы можете получить их либо войдя в систему под именем root, либо установив SUID бит на исполняемый файл MPlayer (не рекомендуется).

Есть две версии DGA: DGA1 используется XFree 3.x.x и DGA2, появившийся в XFree 4.0.1.

DGA1 предоставляет только прямой доступ в фреймбуферу, как описано выше. Для переключения видеорежимов придется обратиться в расширению XVidMode.

DGA2 объединяет возможности расширения XVidMode и, к тому же, позволяет изменять глубину цвета отображения. Таким образом, вы можете,работая, в основном, в X с 32-х битной глубиной цвета, переключиться на глубину 15 бит и наоборот.

Однако DGA имеет некоторые недостатки. Похоже, оно каким-то образом зависит от используемого графического чипа и реализации видеодрайвера сервера X, управляющего этим чипом. Так что он работает не на всех системах.

УСТАНОВКА ПОДДЕРЖКИ DGA ДЛЯ MPLAYER.  Во-первых, убедитесь, что X загружает расширение DGA, смотрите в /var/log/XFree86.0.log:

(II) Loading extension XFree86-DGA

Смотрите, крайне рекомендуется XFree86 4.0.x или старше! DGA драйвер программы MPlayer определяется автоматически скриптом ./configure, или можете принудительно указать его использование опцией --enable-dga.

Если драйвер не смог переключиться на меньшее разрешение, поэкспериментируйте с опциями -vm (только для X 3.3.x), -fs, -bpp, -zoom чтобы найти видеорежим в который поместиться фильм. Конвертера Пока что нет :(

Получите права root. DGA требует права root для прямой записи в видеопамять. Если хотите запускать от имени обычного пользователя, установите бит SUID на MPlayer:

chown root /usr/local/bin/mplayer
chmod 750 /usr/local/bin/mplayer
chmod +s /usr/local/bin/mplayer

Теперь это работает и под обычным пользователем.

Риск безопасности

В этом заключается большой риск безопасности! Никогда не делайте этого на сервере или комппьютере, к которому имеют доступ другие люди, т.к. они могут получить права root через MPlayer с битом SUID.

Теперь используйте опцию -vo dga, и вперед! (мы надеемся :) Можете попробовать, работает ли у вас опция -vo sdl:driver=dga! Это намного быстрее!

ПЕРЕКЛЮЧЕНИЕ РЕЖИМОВ.  DGA драйвер позволяет переключать режимы (менять разрешение) выходного сигнала. Это позволяет избежать (медленного) программного масштабирования и в то же время предоставить полноэкранное изображение. В идеале следует переключаться в режим с таким же (необязательно с сохранением пропорций) как у видеоданных разрешением, но X сервер позволяет переключаться в режимы, предопределенные в /etc/X11/XF86Config (/etc/X11/XF86Config-4 для XFree 4.X.X соответственно). Они определяются так называемыми моделайнами[modelines] и зависят возможностей вашей видеокарты. X сервер читает этот файл при старте и отключает режимы, недопустимые для вашего оборудования. Вы можете определить какие режимы остались, посмотрев лог файл X11. Он может быть найден в: /var/log/XFree86.0.log.

Вот значения, про которые известно, что они работают с чипом Riva128 при использовании X драйвера nv.o.

Section "Modes"
  Identifier "Modes[0]"
  Modeline "800x600"  40     800 840 968 1056  600 601 605 628
  Modeline "712x600"  35.0   712 740 850 900   400 410 412 425
  Modeline "640x480"  25.175 640 664 760 800   480 491 493 525
  Modeline "400x300"  20     400 416 480 528   300 301 303 314 Doublescan
  Modeline "352x288"  25.10  352 368 416 432   288 296 290 310
  Modeline "352x240"  15.750 352 368 416 432   240 244 246 262 Doublescan
  Modeline "320x240"  12.588 320 336 384 400   240 245 246 262 Doublescan
EndSection

DGA & MPLAYER.  DGA используется программой MPlayer двумя способами: можно указать SDL использовать его (-vo sdl:driver=dga) и с помощью DGA драйвера (-vo dga). Все сказанное выше верно для обоих; в следующих разделах будет рассказано как работает DGA драйвер для MPlayer.

ВОЗМОЖНОСТИ.  DGA запускается указанием -vo dga в командной строке. По-умолчанию, он пытается переключить режим с ближайшим к оригинальному видео разрешением. Он преднамеренно игнорирует опции -vm и -fs (переключение видеорежимов и полноэкранный режим) - он всегда старается занять как можно большую площадь экрана переключением видеорежима, избегая таким образом использования дополнительных тактов CPU для масштабирования изображения. Если выбранный режим вам не нравится, можете принудительно указать использовать разрешение ближайшее к указанному вами опциями -x и -y. При указании опции -v, DGA драйвер выведет, кроме множества других вещей, список всех поддерживаемых режимов, указанных в XF86Config. Имея DGA2 вы также можете указать использование определенной глубины цвета при помощи опции -bpp. Допустимыми значениями являются 15, 16, 24 и 32. Зависит от оборудования, какие значения поддерживаются аппаратно, а для каких необходимо производить (возможно медленное) преобразование.

Если вам повезло иметь достаточно свободной памяти[offscreen memory], чтобы поместить туда изображение целиком, DGA драйвер будет использовать двойную буферизацию, что приведет к более плавному воспроизведению фильма. Он сообщит вам включена ли двойная буферизация или нет.

Двойная буферизация означает, что каждый следующий кадр вашего фильма рисуется в некоторую память[offscreen memory], пока отображается текущий кадр. Когда следующий кадр готов, графическому чипу сообщается его расположение в памяти, и чип просто выбирает оттуда данные для отображения. В это время новыми видео данными заполняется другой участок буфера.

Двойная буферизация может быть задействована опцией -double и отключена при помощи -nodouble. В данный момент двойной буфер по-умолчанию отключен. При использовании DGA драйвера, экранное отображение (OSD) работает только с двойной буферизацией. Однако, включение двойной буферизации может привести к существенному снижению скорости (на моем K6-II+ 525 оно использует дополнительные 20% времени CPU!) в зависимости от реализации DGA для вашего оборудования.

ПРОБЛЕМЫ БЫСТРОДЕЙСТВИЯ.  Проще говоря, DGA доступ к фреймбуферу должен быть настолько быстр, насколько быстр используемый X11 драйвер c дополнительной выгодой[benefit] получения полноэкранного изображения. Процентные значения скорости, выводимые MPlayer, должны интерпретироваться с некоторой осторожностью, например, с драйвером X11 они не включают время, используемое сервером X11 непосредственно для прорисовки. Подключите терминал к последовательному порту и запустите top, чтобы увидеть, что на самом деле происходит.

Проще говоря, ускорение, полученное от использования DGA относительно 'обычного' использования X11, сильно зависит от видео карты и того, насколько хорошо оптимизирован модуль X11 для него.

Если у вас медленная система, лучше использовать глубину 15 или 16 бит, поскольку это потребует половину пропускной способности памяти 32-х битного дисплея.

Использование глубины 24 бита - хорошая идея, даже если ваша карта аппаратно поддерживает только 32 бита, поскольку передается на 25% меньше данных по сравнению с режимом 32/32.

Приходилось видеть, как некоторые AVI файлы воспроизводились на Pentium MMX 266. AMD K6-2 CPU может работать начиная с 400 МГц и выше.

ИЗВЕСТНЫЕ ОШИБКИ.  Ну, по мнению некоторых разработчиков XFree, DGA - это немного монстр. Они говорят, что лучше его не использовать. Его реализация не безупречна для любого существующего драйвера XFree. изъянов.

  • С XFree 4.0.3 и nv.o существует ошибка приводящая к странным цветам.

  • ATI драйвер требует неоднократного переключения режима после завершения использования DGA.

  • Некоторые драйвера просто не в состоянии переключиться обратно в нормальный режим (используйте Ctrl+Alt+Keypad + и Ctrl+Alt+Keypad - для нормального переключения).

  • Некоторые драйвера просто отображают странные цвета.

  • Некоторые драйвера неверно сообщают о количестве памяти, которое они отобразили в адресное пространство процесса, так что vo_dga не будет использовать двойную буферизацию (SIS?).

  • Некоторые драйвера, похоже, не могут сообщить даже об одном верном режиме. В этом случае DGA рухнет, сообщая о невероятном режиме 100000x100000 или о чем-нибудь похожем.

  • OSD работает только с задействованным двойным буфером (иначе он моргает).

7.4. SDL

SDL (Simple Directmedia Layer) - это, в основном, унифицированный видео/аудио интерфейс. Программы, его использующие, знают только про SDL, а не про то, какой видео или аудио драйвер реально используется. Например, порт игры Doom, используя SDL, может запуститься на svgalib, aalib, X, fbdev и других, вам придется только указать (для примера) используемый видеодрайвер при помощи переменной окружения SDL_VIDEODRIVER. Ну, в теории.

Для карт/драйверов, не поддерживающих XVideo, мы использовали в MPlayer собственные возможности программного масштабирования SDL'вских X11 драйверов, пока не написали наш собственный (более быстрый и изящный) программный модуль масштабирования. Также мы использовали его aalib вывод, но теперь у нас есть свой, более удобный. До некоторых пор его DGA режим был лучше нашего. Хотите получить его прямо сейчас ? :)

Он также помогает с некоторыми сбоящими драйверами/картами, если видео прерывается (если это не проблема недостаточного быстродействия), или заикается звук.

SDL видео вывод поддерживает отображения субтитров внизу, на черной полосе (если она есть).

7.5. SVGAlib

УСТАНОВКА.  потребуется установить svgalib и ее пакет разработки, чтобы MPlayer собрал свой SVGAlib драйвер (определяется автоматически, но можко включить принудительно), и отредактировать /etc/vga/libvga.config в соответствии с вашией картой и монитором.

Замечание

Убедитесь, что не используете опцию -fs, поскольку она включает использование программного масштабирования и работает медленно. Если вам действительно это необходимо, используйте опцию -sws 4, которая будет давать плохое качество, но несколько быстрее.

ПОДДЕРЖКА EGA (4BPP).  SVGAlib включает в себя EGAlib, и MPlayer имеет возможность выводить любой фильм в 16-ти цветах. Используется в таких вариантах:

  • EGA карта с EGA монитором: 320x200x4bpp, 640x200x4bpp, 640x350x4bpp

  • EGA карта с CGA монитором: 320x200x4bpp, 640x200x4bpp

Значение bpp (бит на пиксел) должно быть вручную установлено в 4: -bpp 4

Возможно потребуется отмасштабировать фильм, чтобы уместить в размеры EGA режима:

-vf scale=640:350

or

-vf scale=320:200

Для масштабирования требуется быстрый алгоритм с плохим качеством:

-sws 4

Возможно надо отключить автоматическую коррекцию пропорций:

-noaspect

Замечание

Как показывает мой опыт, лучшее качество на EGA экране получается при небольшом уменьшении яркости: -vf eq=-20:0. Мне также пришлось уменьшить частоту дискретизации [samplerate] на моей машине, поскольку звук не работал на 44kГц. -srate 22050.

ВЫ можете включить OSD и субтитры только с плагином expand, смотрите страницу руководства man для точных параметров.

7.6. Вывод во фреймбуфер (FBdev)

Надо ли собирать FBdev автоматически определяется скриптом ./configure. Прочтите документацию на фреймбуйер в исходниках ядра (Documentation/fb/*) для более подробной информации.

Если ваша карта не поддерживает стандарт VBE 2.0 (старые ISA/PCI карты, такие как S3 Trio64), а только VBE 1.2 (или еще старее?): ну, VESAfb все же будет доступна, но вам потребуется загрузить SciTech Display Doctor (она же UniVBE) до загрузки Linux. Используйте загрузочный диск DOS или что либо другое. И не забудьте зарегистрировать ваш UniVBE ;))

Драйвер FBdev вместе с прочими принимает несколько дополнительных параметров:

-fb

указывает какой устройство фреймбуфера использовать (по-умолчанию: /dev/fb0)

-fbmode

название используемого режима (в соответствии с /etc/fb.modes)

-fbmodeconfig

конфигурационный файл с режимами (по-умолчанию: /etc/fb.modes)

-monitor-hfreq, -monitor-vfreq, -monitor-dotclock

важные знаячения, смотрите example.conf

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

mplayer -vm -fbmode название_режима имя_файла

  • -vm в одиночку выберет наиболее подходящий режим из /etc/fb.modes. Также может использоваться совместно с -x и -y. Опция -flip поддерживается, только если формат точки фильма совпадает с форматом точки видеорежима. Обратите внимание на значение bpp, fbdev пытается использовать текущий или указанный вами опцией -bpp.

  • Опция -zoom не поддерживается (используйте -vf scale). Вы не можете использовать режимы с 8bpp (или меньше).

  • Вы, возможно, захотите отключить курсор:

    echo -e '\033[?25l'

    или

    setterm -cursor off

    и хранитель экрана:

    setterm -blank 0

    Чтобы снова включить курсор:

    echo -e '\033[?25h'

    или

    setterm -cursor on

Замечание

Смена режимов FBdev не работает с VESA фреймбуфером. Не просите об этом, т.к. это не ограничения MPlayer.

7.7. Matrox фреймбуфер (mga_vid)

mga_vid - это комбинация драйвера вывода и модуля ядра Linux, использующая модуль видео масштабирования/оверлея Matrox G200/G400/G450/G550 для выполнения YUV->RGB преобразования цветового пространства и произвольного масштабирования. mga_vid имеет аппаратную поддержку VSYNC с тройной буферизацией. Работает как во фреймбуфер консоли, так и под X, но только с Linux 2.4.x.

Версию этого драйверя для Linux 2.6.x ищите на http://attila.kinali.ch/mga/.

Установка:

  1. чтобы использовать его, придется, во-первых, скомпилировать mga_vid.o:

    cd drivers
    make

  2. Затем запустите (под root)

    make install

    что должно установить модуль и создать для Вас файл устройства. Загрузите драйвер:

    insmod mga_vid.o

  3. Вам следует проверить определение размера памяти, используя команду dmesg. Если он неверен, укажите опцию mga_ram_size (но сначала rmmod mga_vid), указав размер памяти в Мб:

    insmod mga_vid.o mga_ram_size=16

  4. чтобы в случае необходимости загружать его автоматической, сначала добавьте следующую строку в конец файла /etc/modules.conf:

    alias char-major-178 mga_vid

  5. Теперь надо (пере)скомпилировать MPlayer, ./configure определит /dev/mga_vid и соберет драйвер 'mga'. Использование его в MPlayer осуществляется опцией -vo mga, если используете консоль matroxfb, или опцией -vo xmga из-под XFree86 3.x.x или 4.x.x.

Драйвер mga_vid работает совместно с Xv.

Из файла устройства /dev/mga_vid можно получать некоторую информацию, например, командой

cat /dev/mga_vid

В него можно писать для изменения яркости:

echo "brightness=120" > /dev/mga_vid

В том же каталоге есть тестовая программа, называющаяся mga_vid_test. Если все работает нормально, она должна рисовать на экране изображения 256x256.

7.8. Поддержка 3Dfx YUV

Этот драйвер использует ядерный драйвер фреймбуфера tdfx для воспроизведения фильмой с YUV ускорением. Вам потребуется ядро с поддержкой tdfxfb и перекомпиляция с

./configure --enable-tdfxfb

7.9. tdfx_vid

Это комбинация модуля Linux ядра и драйвера вывода видео, аналогичный mga_vid. Вам потребуется 2.4.x ядро с драйвером agpgart, поскольку tdfx_vid использует AGP. Укажите configure опцию --enable-tdfxfb для сборки драйвера вывода видео и соберите модуль ядра, как указано далее.

Установка tdfx_vid.o модуля ядра:

  1. Скомпилируйте tdfx_vid.o

    cd drivers
    make

  2. Запустите (от root):

    make install

    что должно установить модуль и создать для Вас файл устройства. Загрузите драйвер:

    insmod tdfx_vid.o

  3. Чтобы сделать его загружающимся/выгружающимся автоматически, сначала вставьте следующую строку в конец /etc/modules.conf:

    alias char-major-178 tdfx_vid

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

7.10. OpenGL вывод

MPlayer поддерживает воспроизведение фильмов через OpenGL, но если ваша платформа/драйвер поддерживает xv, как в случае PC с Linux, лучше используйте xv, производительность OpenGL значительно ниже. Если у вас реализация X11 без поддержки xv, OpenGL жизнеспособная замена.

К сожалению, не все драйвера поддерживают эту возможность. Драйвера Utah-GLX (для XFree86 3.3.6) имеют ее для всех карт. Подробности установки смотрите http://utah-glx.sf.net.

XFree86(DRI) 4.0.3 или новее поддерживает OpenGL с картами Matrox и Radeon, 4.2.0 или более поздние поддерживают и Rage128. Инструкции по закачиванию и установке смотрите на http://dri.sf.net .

Подсказка от одного из наших пользователей: видео вывод GL может использоваться для получения синхронизированного по вертикали TV вывода. Необходимо установить переменную окружения (как минимум для nVidia):

export __GL_SYNC_TO_VBLANK=1

7.11. AAlib - отображение в текстовом режиме

AAlib - это библиотека для отображения графики в текстовом режиме, используя мощный ASCII рендерер[renderer]. Существует множество программ уже поддерживающих ее, такие как Doom, Quake, и т.д. MPlayer содержит очень удобный драйвер для нее. Если ./configure обнаруживает установленную aalib, будет собран libvo драйвер для aalib.

В AA Window можно использовать некоторые клавиши для изменения настроек рендеринга:

КлавишаДействие
1 уменьшить контрастность
2 увеличить контрастность
3 уменьшить яркость
4 увеличить яркость
5 включение/отключение быстрого рендеринга
6 установка режима зашумления[dithering] (отсутствие, распределение ошибки[error distribution], Floyd Steinberg)
7 инвертировать изображение
8 переключение между управлением aa и MPlayer

Могут быть использованы следующие опции командной строки:

-aaosdcolor=V

Смена цвета OSD

-aasubcolor=V

Смена цвета субтитров

где V может быть: 0 (нормальный), 1 (темный), 2 (жирный), 3 (жирный шрифт), 4 (реверсный[reverse]), 5 (специальный).

AAlib сама предоставляет большое количество опций. Вот некоторые из важных::

-aadriver

Установить рекомендуемый aa драйвер (X11, curses, Linux).

-aaextended

Использовать все 256 символов.

-aaeight

Использовать восьмибитную ASCII.

-aahelp

Выводит все опции aalib.

Замечание

Рандеринг очень сильно загружает CPU, особенно при использовании AA-on-X (использование aalib под X), и меньше при использовании стандартной не-фреймбуфер консоли. Используйте SVGATextMode, чтобы настроить большой текстовый режим и наслаждайтесь! (второй выход карт Hercules рулит[secondary head Hercules cards rock] :) ), но, IMHO, вы можете использовать опцию -vf 1bpp, чтобы получить графику на hgafb :)

Используйте опцию -framedrop, если ваш компьютер недостаточно быстр для отрисовки всех кадров!

При воспроизведении на терминале, вы получите лучшую скорость и качество при использовании драйвера Linux, а не curses(-aadriver linux). Но при этом вы долны иметь право записи в /dev/vcsa<терминал>! Это не определяется aalib автоматически, но vo_aa вместо нее пытается определить лучший режим. Смотрите http://aa-project.sf.net/tune для дальнейших задач тюнинга.

7.12. libcaca - Цветная ASCII Art библиотека

Библиотека libcaca - это графическая библиотека, выводящая чекст вместо пикселов, так что она может работать на старых видео картах или текстовых терминалах. Она не такая, как знаменитая AAlib. libcaca требует терминал для своей работы, так что она будет работать на всех unix системах (включая Max OS X), используя библиотеку slang или ncurses, под DOS используя библиотеку conio.h, и под windows, используя либо slang, либо ncurses (через Cygwin эмуляцию), либо conio.h. Если скрипт ./configure определяет libcaca, то caca libvo драйвер будет собран.

Отличия от AAlib следующие:

  • 16 доступных цветов для вывода символов (256 цветовых пар)

  • зашумление[dithering] цветного изображения

Но libcaca также имеет следующие ограничения:

  • нет поддержки яркости, контрастности, гаммы

ВЫ можете использовать следующие клавиши в окне caca для изменения опций рендеринга:

КлавишаДействие
d Перключение методов зашумления[dithering] libcaca.
a Перекллючение сглаживания[antialiasing] libcaca.
b Переключение фона libcaca.

libcaca также анализирует следующие переменные окружения:

CACA_DRIVER

Установить рекомендуемый caca драйвер, например ncurses, slang, x11.

CACA_GEOMETRY (только X11)

Указывает количество строк и столбцов, например, 128x50.

CACA_FONT (только X11)

Указывает используемый шрифт, например, fixed, nexus.

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

7.13. VESA - вывод в VESA BIOS

Этот драйвер был разработатн и представлен как универсальный драйвер для любых карт с VESA VBE 2.0 совместимым BIOS. Другое преимущество этого драйвера заключается в том ,что он пытается принудительно включить TV вывод. VESA BIOS EXTENSION (VBE) Версия 3.0 Дата: 16 сентября, 1998 (Страница 70) гласит:

Dual-Controller Designs.  VBE 3.0 поддерживает дизайн с двумя контроллерами, предполагая, что поскольку оба контроллера обычно имеют одного производителя, и управляются единственной BIOS ROM на той же карте, то возможно скрыть от приложения факт наличия на самом деле двух контроллеров. Это ограничивает их независимое одновременное использование, но позволяет приложениям, выпущенным до VBE 3.0 нормально работать. VBE функция 00h (Вернуть информацию о контроллере) возвращает комбинированную информацию двух контроллеров, включая объединенный список доступных режимов. Когда приложение выбирает режим, активируется соответствующий контроллер. Каждая из остальных VBE функций затем работает с активным контроллером.

Так что у вас ест шанс получить работающий TV выход, используя этот драйвер. (Предполагается, что TV-выход - отдельный контроллер[standalone head] или отдельный выход как минимум.)

ПРЕИМУЩЕСТВА

  • У вас есть шанс смотреть фильмы, даже если Linux не знает ваше видео оборудование.

  • Вам не требуется устанавливать в Linux ничего, относящегося к графике (вроде X11 (он же XFree86), fbdev и т.п.). Этот драйвер может запускаться из текстового режима.

  • У вас есть шанс получить работающий TV-выход. (Это известно как минимум для ATI карт).

  • Этот драйвер вызывает обработчик int 10h, так что это не эмуляция - он вызывает реальные вещи реального BIOS в реальном режиме (на самом деле vm86 режим).

  • С ним вы можете использовать VIDIX, получая ускоренное отображение видео, и TV вывод одновременно! (Рекомендуется для ATI карт.)

  • Если у вас есть VESA VBE 3.0+, и вы где-то указали monitor-hfreq, monitor-vfreq, monitor-dotclock (в файле конфигурации или в командной строке), то получите наибольшую возможную частоту обновления. (Используя General Timing Formula). Чтобы задействовать эту возможность, вы должны указать все опции вашего монитора.

НЕДОСТАТКИ

  • Это работает только на x86 системах.

  • Может использоваться только пользователем root.

  • В данный момент доступно только для Linux.

Важно

Не используйте этот драйвер с GCC 2.96! Он не будет работать!

ОПЦИИ КОМАНДНОЙ СТРОКИ, ДОСТУПНЫЕ ДЛЯ VESA

-vo vesa:опции

данный момент распознаются: dga для включения режима dga и nodga для его отключения. В dga режиме вы можете включить двойную буферизацию опцией -double. Замечание: вы можете опустить эти параметры для автоопределения режима dga.

ИЗВЕСТНЫЕ ПРОБЛЕМЫ И СПОСОБЫ ИХ РЕШЕНИЯ

  • Если вы установили NLS шрифт на вашем Linux и запускаете VESA драйвер из текстового режима, то после завершения MPlayer у вас окажется загруженным ROM шрифт вместо национального. Вы можете загрузить национальный шрифт снова, воспользовавшись утилитой setsysfont из дистрибутива Mandrake/Mandriva, например. (Подсказка: Та же утилита используется для локализации fbdev).

  • Некоторые графические драйверы Linux не обновляют активный BIOS режим в DOS памяти. Таким образом, если у вас подобная проблема - всегда используете VESA драйвер только из текстового режима. Иначе в любом случае будет активирован текстовый режим (#03) и вам придется перезагружать компьютер..

  • Часто после завершения работы VESA драйвера вы получаете черный экран. Чтобы вернуться в обычный режим просто переключитесь на другую консоль (нажав Alt+F<x>) затем переключитесь обратно тем же способом.

  • Для получения работающего TV выхода необходимо, чтобы TV разъем был подключен до включения вашего PC, т.к. видео BIOS инициализирует себя только один раз во время POST процедуры.

7.14. X11

Избегайте, если возможно. Вывод в X11 (используя расширение разделяемой памяти) - без какого-либо ускорения.Поддерживается (MMX/3DNow/SSE ускоренное, но все равно медленное) программное масштабирование, используйте опции -fs -zoom. Большинство карт имеют поддержку масштабирования, для этого используйте вывод -vo xv, или -vo xmga для карт Matrox.

Проблема в том, что большинство драйверов карт не поддерживают аппаратное ускорение на втором мониторе/TV. В этом случае вы увидите окно зеленого/синего цвета вместо изображения, и этот драйвер будет полезным, но требуется мощный CPU для программного масштабирования. Не используйте программный вывод+масштабирование SDL драйвера, он имеет худшее качество картинки!

Программное масштабирование очень медленное, лучше попробуйте вместо этого изменить видео режим. Это очень просто. Смотрите раздел DGA режимы и вставьте соответствующие строки в ваш XF86Config.

  • Если у вас XFree86 4.x.x: используйте -vm опцию. Она переключится в режим с подходящим разрешением. Если нет:

  • C XFree86 3.x.x: циклически переключайтесь между разными разрешениями с помощью клавиш Ctrl+Alt+Доп. клавиша плюс и Ctrl+Alt+Доп. клавиша минус.

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

7.15. VIDIX

ПРЕАМБУЛА.  VIDIX - это аббревиатура для VIDeo Interface for *niX (Видео интерфейс для Unix). VIDIX разработан и введен как интерфейс для быстрых драйверов пространства пользователя[user-space], обеспечивающих такую же производительность, как mga_vid для карт Matrox. Они к тому же хорошо переносимы.

Этот интерфейс был разработан, чтобы уместить существующие интерфейсы ускорения видео (известные как mga_vid, rage128_vid, radeon_vid, pm3_vid) в единую схему. Он предоставляет высокоуровневый интерфейс к чипам, известным как BES (BackEnd scalers) или OV (Video Overlays). Он не предоставляет низкоуровневого интерфейса к вещам, известным как графические серверы (Я не хочу соревноваться с командой X11 в переключении режимов.) Т.е. основная цель интерфейса - ускорить до максимума скорость воспроизведения видео.

ИСПОЛЬЗОВАНИЕ

  • Вы можете использовать отдельный видеодрайвер: -vo xvidix. Этот драйвер был разработан как X11 фронтенд к VIDIX технологии. Он требует X сервер и может работать только под ним. Имейте ввиду, что поскольку этот драйвер напрямую обращается к оборудованию в обход драйвера X, то могут быть повреждены растровые изображения, кешированные в памяти видеокарты. Вы можете предотвратить это, ограничив размер видеопамяти, используемой X, XF86Config опцией "VideoRam" в разделе устройств. Вам следует установить этот параметр в количество установленной видеопамяти минус 4Мб. Если у вас меньше 8Мб видеопамяти, вместо этого можно использовать опцию "XaaNoPixmapCache" в разделе экранов.

  • Существует консольный VIDIX драйвер: -vo cvidix. Для большинства карт требуется работающий и инициализированный фреймбуфер (в противном случае просто испортите изображение на экране), и вы будете иметь тот же эффект, что и с -vo mga или -vo fbdev. Карты nVidia, тем не менее, способны выводить полностью графическое видео в настоящей текстовой консоли. Смотрите раздел nvidia_vid для более подробной информации. Чтобы избавиться от такста на полях и мерцающего курсора попробуйте нечто подобное

    setterm -cursor off > /dev/tty9

    (предполагая, что tty9 ранее не использовался) и затем переключитесь на tty9. С другой стороны, -colorkey 0 должна дать вам видео, работающее "на фоне", однако правильность работы этого зависит от функцинальности colorkey.

  • Вы можете использовать подустройство VIDIX, примененное к различным драйверам видео вывода, например: -vo vesa:vidix (только Linux) и -vo fbdev:vidix.

Это действительно неважно, какой драйвер вывода видео используется с VIDIX.

ТРЕБОВАНИЯ

  • Видеокарта должна находиться в графическом режиме (кроме карт nVidia с драйвером -vo cvidix).

  • Драйвер вывода видео MPlayer должен знать текущий видеорежим и быть способным сообщить VIDIX некоторые видео характеристики сервера.

СПОСОБЫ ИСПОЛЬЗОВАНИЯ.  Когда VIDIX используется в качестве подустройства (-vo vesa:vidix), настройка видеорежима производится драйвером вывода видео (короче говоря vo_server). Следовательно, вы можете передать в командную строку MPlayer те же ключи, что и для vo_server. Дополнительно он понимает ключ -double как глобально видимый параметр. (Я рекомендую использовать этот ключ с VIDIX как минимум для карт ATI). -vo xvidix дополнительно понимает следующие опции: -fs -zoom -x -y -double.

Вы можете напрямую указать VIDIX драйвер третьим параметром к командной строке:

mplayer -vo xvidix:mga_vid.so -fs -zoom -double file.avi

или

mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32 file.avi

Но это опасно, и вам не следует этого делать. В этом случае принудительно запускается указанный драйвер и результат может быть непредсказуемым (он может подвесить ваш компьютер). Вам следует это делать ТОЛЬКО если вы абсолютно уверены, что он работает и MPlayer не использует его автоматически. Пожалуйста, сообщите об этом разработчикам. Правильный путь - использование VIDIX без аргументов для задействования автоопределения драйвера.

Поскольку VIDIX требует прямой доступ к оборудованию, вы можете либо запускать его от имени root, либо установить SUID бит на исполняемый файл MPlayer ((Внимание: Это большой риск безопасности). Как вариант, вы можете использовать специальный модуль ядра, как этот:

  1. Скачайте разрабатываемую версию svgalib (например 1.9.17), ИЛИ версию, созданную Alex специально для использования с MPlayer (она не требует наличия исходников svgalib для компиляции) отсюда.

  2. Скомпилируйте модуль в каталоге svgalib_helper (он может быть найден внутри каталога svgalib-1.9.17/kernel/, если вы скачали исходники с сайта svgalib) и выполните insmod для него.

  3. Для создания необходимых устройств в каталоге /dev, выполните от имени root команду

    make device

    в svgalib_helper.

  4. Переместите каталог svgalib_helper в подкаталог vidix дерева исходных текстов MPlayer.

  5. Удалите комментарий перед строкой CFLAGS, содержащий строку "svgalib_helper" в файле vidix/Makefile.

  6. Перекомпилируйте.

7.15.1. ATI карты

В даный момент для большинства карт ATI, начиная от Mach64 и заканчивая последними Radeon, имеется встроенная поддержка.

Существует два скомпилрованных бинарных файла: radeon_vid для Radeon и rage128_vid для карт Rage 128. Вы можете принудительно использовать один из них или позволить VIDIX автоматически опробовать все доступные драйверы.

7.15.2. Matrox карты

Сообщалось, что работают Matrox G200, G400, G450 и G550.

Драйвер поддерживает видео эквалайзеры и должем быть столь же быстр, как и Matrox фреймбуфер

7.15.3. Trident карты

Существует драйвер для чипсета Trident Cyberblade/i1, который можно найти на материнских платах VIA Epia.

Драйвер написан и поддерживается Alastair M. Robinson.

7.15.4. 3DLabs карты

Хотя драйвер для чипов 3DLabs GLINT R3 и Permedia3 существует, никто его не тестировал, так что отчеты приветствуются.

7.15.5. nVidia карты

Уникальная особенность драйвера nvidia_vid заключается в способности отображать видео в простой, чисто текстовой консоли - без какого бы то ни было фреймбуфера или магии с X. Для этой цели мы будем использовать драйвер вывода видео cvidix, как показывет следующий пример:

mplayer -vo cvidix example.avi

7.15.6. SiS карты

Это, как и nvidia_vid, весьма экспериментальный код.

Он тестировался на SiS 650/651/740 (наиболее распространный чипсет, используемый в SiS версиях байрбонов[barebones] "Shuttle XPC")

Отчеты ожидаются!

7.16. DirectFB

"DirectFB - это графическая библиотека, которая была разработана с учетом особенностей встроенных систем. Она предоставляет максимум производительности при минимуме используемых ресурсов и накладных расходов." - процитировано с http://www.directfb.org

Я исключу описание возможностей DirectFB из этого раздела.

Несмотря на то, что MPlayer не поддерживается в DirectFB как "video провайдер", этот драйвер вывода видео задействует воспроизведение видео через DirectFB. Он будет - конечно - работать с ускорением, на моей Matrox G400 скорость DirectFB такая же как у XVideo.

Всегда старайтесь использовать последнюю версию DirectFB. Вы можете использовать опции DirectFB в командной строке, при помощи -dfbopts. Выбор слоя производится методом подустройства, например.: -vo directfb:2 (по-умолчанию -1: автоопределение)

7.17. DirectFB/Matrox (dfbmga)

Прочтите основной DirectFB раздел для общей информации.

Этот драйвер вывода видео задействует CRTC2 (на втором мониторе[second head]) на картах Matrox G400/G450/G550, отображающий видео независимо от первого монитора[first head].

Ville Syrjala имеет README и HOWTO на своей странице, описывающие как задействовать вывод DirectFB TV на картах Matrox.

Замечание

Первая версия DirectFB, на которой удалось это сделать, была 0.9.17 (имеющая ошибки, требует surfacemanager патч с указанного выше URL). Портирование кода CRTC2 в mga_vid планируется уже несколько лет, патчи приветствуются.

7.18. MPEG декодеры

7.18.1. DVB ввод и вывод

MPlayer поддерживает карты с чипсетом Siemens DVB и таких производителей, как Siemens, Technotrend, Galaxis или Hauppauge. Последние DVB драйверы доступны с сайта Linux TV. Если вы собираетесь делать программное транскодирование, у вас должен быть как минимум 1ГГц CPU.

Скрипт configure должен определить вашу DVB карту. Если нет, принудительно укажите определение с помошью

./configure --enable-dvb

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

./configure --with-extraincdir=каталог исходников DVB/ost/include

Затем компилируйте и устанавливайте как обычно.

ИСПОЛЬЗОВАНИЕ.  Аппаратное декодирование потоков, содержащих MPEG-1/2 видео и/или MPEG аудио, может быть выполнено следующей командой:

mplayer -ao mpegpes -vo mpegpes file.mpg|vob

Декодирование любых других видео потоков требует транскодирования в MPEG-1, поэтому оно медленно и, возможно, не стоит неприятностей, особенно если ваш компьютер медленный. Его можно добиться, используя команду:

mplayer -ao mpegpes -vo mpegpes yourfile.ext
mplayer -ao mpegpes -vo mpegpes -vf expand yourfile.ext

Имейте в виду, что DVB карты поддерживают высоту изображения только 288 и 576 для PAL и 240 и 480 для NTSC. Для других значений высоты вы должны отмасштабировать изображение, добавив scale=ширина:высота к опции -vf с желаемыми значениями ширины и высоты. DVB карты допускают различные значения ширины: 720, 704, 640, 512, 480, 352 и т.д. и производят аппаратное масштабирование по горизонтали, так что в большинстве случаев масштабировать по горизонтали не нужно. Для 512x384 (пропорции 4:3) MPEG-4 (DivX) попробуйте:

Если у вас есть широкоформатный фильм и вы не хотите растягивать его на полную высоту, используйте плагин expand=w:h для добавления черных полос. Чтобы посмотреть 640x384 MPEG-4 (DivX), попробуйте:

mplayer -ao mpegpes -vo mpegpes -vf expand=640:576 file.avi

Если ваш CPU слишком слаб для полноразмерного 720x576 MPEG-4 (DivX), попробуйте уменьшить размер:

mplayer -ao mpegpes -vo mpegpes -vf scale=352:576 file.avi

Если скорость не увеличилась, попробуйте уменьшить размер по вертикали тоже:

mplayer -ao mpegpes -vo mpegpes -vf scale=352:288 file.avi

Для OSD и субтитров используйте возможности OSD плагина expand. Так, вместо expand=w:h или expand=w:h:x:y, используйте expand=w:h:x:y:1 (5-й параметр :1 в конце для включения OSD рендеринга). Вы можете слегка подвинуть изображение вверх, чтобы получить большую черную область для субтитров. Вы также можете переместить субтитры вверх, если они выходят за пределы TV экрана, используйте для этого -subpos <0-100> (-subpos 80 - хороший выбор).

Чтобы воспроизвести не-25fps фильмы на PAL TV или на машине со слабым CPU, добавьте опцию -framedrop.

Для сохранения пропорций MPEG-4 (DivX) файлов и получения оптимальных параметров масштабирования (аппаратное горизонтальное и программное вертикальное масштабирование с сохранением пропорций), используйте плагин dvbscale:

for a  4:3 TV: -vf dvbscale,scale=-1:0,expand=-1:576:-1:-1:1
for a 16:9 TV: -vf dvbscale=1024,scale=-1:0,expand=-1:576:-1:-1:1

Цифровое TV (DVB драйвер ввода ). Вы можете использовать DVB карту для просмотра Цифрового TV.

Вы должны иметь установленные программы scan и szap/tzap/czap/azap; все они входят в пакет драйверов.

Проверьте, что ваши драйверы правильно работают с такими программами, как dvbstream (это основа DVB драйвера ввода).

Теперь вам следует создать файл ~/.mplayer/channels.conf, с понятным szap/tzap/czap/azap синтаксисом, или позволить scan сделать это для вас.

Если у вас несколько разнотипных карт (например, для спутникового TV, наземного , кабельного и ATSC), можете сохранить файлы как ~/.mplayer/channels.conf.sat, ~/.mplayer/channels.conf.ter, ~/.mplayer/channels.conf.cbl, и ~/.mplayer/channels.conf.atsc, соответственно, с тем, чтобы можно было явно указать MPlayer какой файл использовать вместо стандартного ~/.mplayer/channels.conf, и какую карту с ним использовать.

Убедитесь, что в channels.conf находятся каналы !-- FIXME Free to Air --> только для обычного телевидения[Free to Air], иначе MPlayer будет ожидать передачи незашифрованных данных.

В полях аудио и видео вы можете использовать расширенный синтаксис: ...:pid[+pid]:... (в каждом максимум 6 pid'ов); в этом случае MPlayer включит в поток все указанные pid плюс pid 0 (содержащий PAT). В каждую строку всегда следует включать PMT и PCR pid'ы для соответствующего канала (если вы их знаете). Также можно указать 8192, при этом будут выбраны все pid на этой частоте, и Вы сможете потом переключаться между программами при помощи TAB. Это может потребовать большей пропускной способности, однако дешевые карты всегда пересылают все каналы как минимум до ядра, так что в этом случае разница будет небольшой. Другие возможные применения: телетекст pid, второая аудио дорожка, и т.д.

Если MPlayer часто жалуется на

Too many video/audio packets in the buffer

или если вы заметили растущую рассинхронизацию между звуком и видео проверьте наличие PCR pid'а в вашем потоке (требующегося для соблюдения модели буферизации передатчика) и/или попробуйте воспользоваться libavformat MPEG-TS декодером, добавив -demuxer lavf -lavfdopts probesize=128 в командную строку.

Для показа первого из доступных каналов, запустите

mplayer dvb://

Если вы хотите посмотреть определенный канал, например R1, запустите

mplayer dvb://R1

Если у вас больше одной карты, также надо указать номер той, с которой доступен канал:

mplayer dvb://2@R1

Для смены канала, нажимайте клавиши h (следующий) и k (предыдущий), или используйте OSD меню.

Для временного отключения аудио или видео потока скопируйте следующие строки в ~/.mplayer/input.conf:

% set_property  switch_video -2
& step_property switch_video
? set_property  switch_audio -2
^ step_property switch_audio

(Заменяя горячие клавиши по своему усмотрению.) При нажатии на клавишу, соответствующую switch_x -2, поток будет закрыт; при нажатии на клавишу, соответствующую step_x, поток будет открыт снова. Имейте в виду, что этот механизм переключения не будет работать как следует, когда в мультиплексоре присутствует несколько аудио или видео потоков.

Во время воспроизведения (не во время записи) для предотвращения заикания и таких ошибок, как 'Your system is too slow', имеет смысл добавить

-mc 10 -speed 0.97 -af scaletempo

к опциям командной строки, исправив параметры scaletempo по своему усмотрению.

Если ваш ~/.mplayer/menu.conf содержит запись <dvbsel>, как в файле с примерами etc/dvb-menu.conf (можете использовать его чтобы перезаписать ~/.mplayer/menu.conf), главное меню будет отображать подменю, позволяющее вам выбрать один из присутствующих в channels.conf каналов, возможно, с предшествующим ему подменю с DVB выбором карт, доступных MPlayer.

Если хотите записать какую-то программу на диск, используйте

mplayer -dumpfile r1.ts -dumpstream dvb://R1

Если хотите вместо этого записать ее в другом формате (перекодировать), следует использовать такую команду:

mencoder -o r1.avi -ovc xvid -xvidencopts bitrate=800 \
    -oac mp3lame -lameopts cbr:br=128 -pp=ci dvb://R1

Полный список опций для DVB драйвера ввода можно найти на странице руководства man.

БУДУЩЕЕ.  Если у вас есть вопросы, или вы хотите получать сообщения о новых возможностях и принять участие в дискуссиях на эту тему, подпишитесь на список рассылки MPlayer-DVB. Помните, что язык рассылки - Английский.

В будущем вы можете рассчитывать на возможность отображения OSD и субтитров, используя встроенные OSD возможности DVB карт.

7.18.2. DXR2

MPlayer поддерживает аппаратное ускорение воспроизведения с картами Creative DXR2.

Прежде всего вам потребуется правильно установленные DXR2 драйверы. Их и руководство по установке можно найти на сайте Ресурсного Центра DXR2.

ИСПОЛЬЗОВАНИЕ

-vo dxr2

Включить TV выход.

-vo dxr2:x11 or -vo dxr2:xv

Включить вывод через оверлей в X11.

-dxr2 <option1:option2:...>

Эта опция используется для управления драйвером DXR2.

Чипсет оверлея, использовавшийся на DXR2 довольно плохого качества, но с настройками по-умолчанию будет работать у всех. OSD может работать с оверлеем (не на TV), отрисовывая себя в ключевом цвете[colorkey]. С настройками ключевого цвета[colorkey] по-умолчанию, вы можете получить разные результаты, скорее всего увидите ключевой цвет[colorkey] вокруг символов или другие забавные эффекты. Но при правильных настройках, можно получить вполне приемлемый результат.

Смотрите страницу man руководства для списка доступных опций.

7.18.3. DXR3/Hollywood+

MPlayer поддерживает аппаратно ускоренное воспроизведение картами Creative DXR3 и Sigma Designs Hollywood Plus. Обе эти карты используют MPEG декодер на чипе em8300 от Sigma Designs

Прежде всего вам потребуются правильно установленные драйвера DXR3/H+, версии 0.12.0 или выше. Драйверы и инструкции по установке могут быть найдены на сайте DXR3 & Hollywood Plus для Linux configure должен автоматически определить вашу карту, компиляция должна пройти без проблем.

ИСПОЛЬЗОВАНИЕ

-vo dxr3:prebuf:sync:norm=x:device

Опция overlay активирует оверлей вместо TV-out. Для корректной работы она требует его правильной настройки. Самый простой способ правильно его настроить - сначала запустить autocal, затем запустить mplayer с драйвером dxr3 и выключенным оверлеем, потом запустить dxr3view. В dxr3view вы можете менять настройки оверлея и видеть результат в реальном времени, может быть, в будущем эта возможность будет поддерживаться в MPlayer GUI. После того как оверлей правильно настроен, надобность в dxr3view отпадает. Опция prebuf включает пребуферинг. Пребуферинг - это возможность чипа em8300, позволяющая ему хранить более одного кадра видео в каждый момент времени. Это значит, что при включенном пребуферинге MPlayer будет пытаться всегда держать буфер заполненным данными. Если у вас медленная машина, то MPlayer будет забирать практически 100% CPU. Это особенно часто случается, если вы воспроизводите чистые MPEG потоки (DVD, SVCD и т.д.), т.к., поскольку MPlayer не должен перекодировать их в MPEG, то он заполняет буфер очень быстро. С пребуферингом воспроизведение видео значительно меньше зависит от остальных программ, прибирающих к рукам CPU, он не будет терять кадры, кроме случая, когда приложения захватит CPU на довольно длительное время. При запуске без пребуферинга, em8300 намного более чувствителен к загрузке CPU, так что настоятельно рекомендуется включить -framedrop опцию MPlayer для избежания потери синхронизации. sync включит алгоритм синхронизации. Пока что это еще экспериментальная возможность. С включенной sync возможностью будут постоянно проверяться встроенные часы em8300, и если начинается отклонение от часов MPlayer чип будет сброшен, что приведет к пропуску всех запаздывающих кадров.

norm=x установит TV стандарт DXR3 карты без необходимости использования внешних утилит вроде em8300setup. Допустимые стандарты: 5 = NTSC, 4 = PAL-60, 3 = PAL. Специальные стандарты 2 (автонастройка, используя PAL/PAL-60) и 1 (автонастройка используя PAL/NTSC) решают какой стандарт использовать на основе частоты кадров. because they decide which norm to use by looking at the frame rate of the movie. norm = 0 (по-умолчанию) не изменяет текущий стандарт.

device = номер устройства, если их у вас несколько em8300 карт. Любые из этих опций могут быть опущены.

:prebuf:sync, похоже, отлично работает при воспроизведении фильмов MPEG-4 (DivX). Пользователи сообщали о проблемах при использования prebuf опции при воспроизведении файлов MPEG-1/2. Вы можете попробовать запустить программу сначала вообще без указания опций, если же имеете проблемы с синхронизацией или с DVD субтитрами, попытайтесь с :sync.

-ao oss:/dev/em8300_ma-X

Для вывода звука, где X - номер устройства (0, если карта одна).

-af resample=xxxxx

em8300 не может воспроизводить частоты дискретизации ниже 44100Hz. Если частота ниже 44100Hz, выберите либо 44100Hz, либо 48000Hz в зависимости от того, какая частота ближайшая. Т.е. если фильм использует 22050Hz укажите 44100Hz, т.к. 44100 / 2 = 22050, если 24000Hz, используйте 48000Hz, т.к. 48000 / 2 = 24000 и т.д. Это не работает с цифровым выводом звука (-ac hwac3).

-vf lavc

Для просмотра не-MPEG контента на em8300 (напрмер MPEG-4 (DivX) или RealVideo) вы должны указать MPEG-1 видеоплагин, такой как libavcodec (lavc). Дополнительную информацию о -vf lavc смотрите на странице руководства man. На данный момент неизвестно способа установить значение fps для em8300, что означает фиксированную величину, равную 30000/1001 fps, поэтому крайне рекомендуется использовать -vf lavc=quality:25, особенно, если используете пребуферинг. Почему 25, а не 30000/1001? Ну, причина в том, что при использовании 30000/1001 изображение начинает слегка дрожать. Причина нам неизвестна. Если вы ставите это значение где-то между 25 и 27 картинка стабилизируется. Пока что мы можем только принять это как факт

-vf expand=-1:-1:-1:-1:1

Хотя драйвер DXR3 может помещать некоторый OSD в MPEG-1/2/4 видео, он имеет намного более плохое качество, чем традиционный OSD MPlayer, и имеет несколько проблем при обновлении к тому же. Команда, указанная выше, сначала отконвертирует входное видео в MPEG-4 (это обязательно, извините), затем применит плагин expand, который не будет ничего расширять (-1: по-умоляанию), но наложит нормальное OSD на картинку (это все, что делает "1" в конце строки).

-ac hwac3

em8300 поддерживает воспроизведение звука AC-3 (окружающий звук) через цифровой аудио выход карты.Смотрите опцию -ao oss выше, она должна использоваться для указания вывода через DXR3 вместо звуковой карты.

7.19. Другое оборудование вывода видео

7.19.1. Zr

Это видеодрайвер (-vo zr) для некоторого количества MJPEG карт захвата/воспроизведения (тестировался на DC10+ и Buz, но также должен работать для LML33, DC10). Драйвер работает, кодируя кадр в JPEG, и отправляя его карте. Для кодирования JPEG используется и требуется библиотека libavcodec. Со специальным режимом cinerama, вы можете смотреть фильмы на действительно широком экране, который можно получить, иемя два проектора и две MJPEG карты. В зависимости от разрешения и настроек качества, этот драйвер может потребовать существенной мощности CPU, не забывайте указывать -framedrop, если маша машина слишком медленная. Замечание: Мой AMD K6-2 350МГц является (с -framedrop) вполне подходящим для просмотра материала размера VCD, и фильмов с уменьшенным разрешением.

Этот драйвер общается с драйвером ядра, доступном на http://mjpeg.sf.net, так что сначала должен корректно заработать второй. Наличие MJPEG карты автоматически определяется скриптом configure, если этого не происходит, включите принудительное определение при помощи

./configure --enable-zr

Вывод может управляться несколькими опциями, подробные описания можно найти на странице руководства man, короткий список опций получите, выполнив

mplayer -zrhelp

Такие вещи как масштабирование и OSD не осуществляются этим драйвером, но могут быть сделаны, используя видеоплагины. Например, предположим, что вы имеете фильм с разрешением 512x272 и хотите просмотреть эго в полноэкранном режиме на DC10+. Есть три главные возможности: вы можете отмасштабировать фильм до ширины 768, 384 или 192. По причинам производительности и качества я бы выбрал масштабирование до 384x204, используя быстрый билинейный программный модуль. Командная строка:

mplayer -vo zr -sws 0 -vf scale=384:204 movie.avi

Обрезка может быть выполнена плагином crop и самим драйвером. Предполагая, что фильм слишком широк для отображения на Buz, и вы хотите использовать -zrcrop для уменьшения ширины, то необходимо применить следующую команду:

mplayer -vo zr -zrcrop 720x320+80+0 benhur.avi

Если вы хотите использовать плагин crop, выполните

mplayer -vo zr -vf crop=720:320:80:0 benhur.avi

Дополнительное указание -zrcrop активизирует режим cinerama, т.е. вы можете распределить фильм на несколько TV или проекторов для создания большего экрана. Предположим у вас два проектора. Левый подключен к Buz на /dev/video1,а правый подключен к DC10+ на /dev/video0. Фильм имеет разрешение 704x288. Также предположим, что вы хотите выводить на правый проектор в черно-белом цвете, а левый должен иметь JPEG кадры качества 10. в этом случае вы должны указать:

mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \
    -zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10 \
        movie.avi

Можно видеть, что опции, встречающиеся до второго -zrcrop, применяются только к DC10+, а опции после второго применяются только к Buz. Максимальное количество карт для режима cinerama равно четырем, так что вы можете построить 2x2 видеостену.

Наконец важное замечание: Не запускайте и не останавливайте XawTV на устройстве воспроизведения, это может подвесить ваш компьютер. Тем не менее, можно прекрасно СНАЧАЛА запустить XawTV, ЗАТЕМ запустить MPlayer, подождать, пока MPlayer завершит работу и ЗАТЕМ остановить XawTV.

7.19.2. Blinkenlights[Мерцающие огни?]

Этот драйвер способен воспроизводить, используя Blinkenlights UDP протокол. Если не знаете, что такое Blinkenlights или его преемник Arcade, выясните это. Хотя это, возможно, реже всего используемый драйвер, без сомнения, это самая клевая вещь, предлагаемая MPlayer. Просто посмотрите некоторые из видеороликов документации Blinkenlights. На видео Arcade вы можете видеть драйвер видеовывода Blinkenlights в действии в 00:07:50.

7.20. Поддержка TV-выхода

7.20.1. Matrox G400 карты

Под Linux есть два способа получить работающий TV выход на G400:

Важно

инструкции по TV-выходу для Matrox G450/G550, смотрите в следующем разделе!

XFree86

Используя драйвер и HAL модуль, доступный с сайта Matrox. Это даст вам X на TV.

Этот метод на дает ускоренного воспроизведения как под Windows! Второй выход имеет только YUV фреймбуфер, BES (Back End Scaler, модуль YUV масштабирования на картах G200/G400/G450/G550) на нем не работает! Драйвер windows как-то это обходит, возможно используя 3D движок для масштабирования, а YUV фреймбуфер - для вывода отмасштабированного изображения. Если вы действительно хотите использовать X, используйте опции -vo x11 -fs -zoom, но это будет МЕДЛЕННО, и будет иметь включенную защиту от копирования Macrovision (можно "обойти" Macrovision используя этот скрипт на perl).

Framebuffer

Используя модули matroxfb в 2.4 ядрах. 2.2 ядра не имеют в этих модулях возможности работы с TV-out, так что для нашего дела непригодны. Вы должны включить ВСЕ matroxfb-относящиеся возможности во время компиляции (кроме MultiHead), и скомпилировать их в модули! Вам также необходима задействованная I2C.

  1. Войдите в TVout и наберите ./compile.sh. Установите TVout/matroxset/matroxset куда-нидудь в ваши PATH.

  2. Если вы еще не имеете установленного fbset, поместите TVout/fbset/fbset куда-нибуть в ваши PATH.

  3. Еслы con2fb у вас еще не установлен, поместите TVout/con2fb/con2fb куда-нибуть в ваши PATH.

  4. Затем войдите в каталог TVout/ в исходниках MPlayer, и запустите ./modules от имени root. Ваша консоль из текстового режима переключится в режим фреймбуфера (обратно не получится!).

  5. Затем, ОТРЕДАКТИРУЙТЕ и запустите скрипт ./matroxtv. Он покажет вам очень простое меню. Нажмите 2 и Enter. Теперь вы должны иметь одинаковую картинку на мониторе и TV. Если картинка на TV (PAL по-умолчанию) имеет некоторые странные полосы, значит скрипт не смог корректно установить разрешение (на 640x512 по-умолчанию). Попробуйте другие разрешения из меню и/или поэкспериментируйте с fbset.

  6. Йоу. Следующая задача - убрать курсор с tty1 (или где он есть), и выключить гашение экрана. Запустите следующие команды:

    echo -e '\033[?25l'
    setterm -blank 0

    or

    setterm -cursor off
    setterm -blank 0

    Возможно вы захотите поместить вышеуказанное в скрипт, добавив очистку экрана. Чтобы вернуть курсор назад

    echo -e '\033[?25h'

    или

    setterm -cursor on

  7. Готово. Запускайте воспроизведение

    mplayer -vo mga -fs -screenw 640 -screenh 512 filename

    (Если используете X, переключитесь теперь в matroxfb при помощи, например Ctrl+Alt+F1.) Замените 640 и 512, если установили другое разрешение...

  8. Наслаждайтесь супер-быстрым, супер-навороченным выводом Matrox TV (лучше чем Xv)!

Создание кабеля Matrox TV-out.  Никто не дает никаких гарантий и не несет никакой ответственности за возможное нанесение ущерба, вызванное выполнением инструкций, указанныех в этой документации.

Кабель для G400.  Четвертый контакт CRTC2 коннектора - это композитный видео сигнал. Земля - шестой, седьмой и восьмой контакты. (информация получена от Balázs Rácz)

Кабель для G450.  Первый контакт CRTC2 коннектора - это композитный видео сигнал. Земля - пятый, шестой, седьмой и пятнадцатый (5, 6, 7, 15) контакты. (информация получена от Balázs Kerekes)

7.20.2. Matrox G450/G550 карты

Поддержка TV выхода для этих карт была добавлена недавно, и пока отсутствует в основном ядре. В данный момент mga_vid не может быть использован AFAIK, поскольку дрйвер G450/G550 работает только в одной конфигурации: первый чип CRTC (с наибольшим количеством возможностей) на первом экране (мониторе), и второй чип CRTC (без BES - для объяснения, что такое BES, смотрите раздел о G400 выше) на TV. Так что в настоящий момент вы можете использовать только драйвер вывода fbdev программы MPlayer.

Первый CRTC не может быть перенаправлен на второй выход на текущий момент. Автор драйвера ядра matroxfb - Petr Vandrovec - возможно добавит поддержку для этого, отображая вывод первого CRTC одновременно на два выхода, как в данный момент и рекомендуется для G400, смотрите раздел выше.

Необходимый патч для ядра и детальное HOWTO можно скачать с http://www.bglug.ca/matrox_tvout/

7.20.3. ATI карты

ПРЕАМБУЛА.  Сейчас ATI не хочет поддерживать ни один из ее TV-out чипов под Linux, по причине технологии лицензированной ими у Macrovision.

СТАТУС ПОДДЕРЖКИ TV-OUT ДЛЯ КАРТ ATI ПОД LINUX

  • ATI Mach64: поддерживается GATOS.

  • ASIC Radeon VIVO: поддерживается GATOS.

  • Radeon и Rage128: поддерживается MPlayer! Смотрите разделы VESA драйвер и VIDIX.

  • Rage Mobility P/M, Radeon, Rage 128, Mobility M3/M4: поддерживается atitvout.

Для других карт просто используйте VESA драйвер, без VIDIX. Конечно, требуется мощный CPU.

Единственная вещь, которую надо сделать - Иметь TV коннектор подключенным до загрузки вашего PC, поскольку видео BIOS инициализирует себя только один раз во время POST процедуры.

7.20.4. nVidia

Во-первых, вы ДОЛЖНЫ скачать закрытые драйверы с http://nvidia.com. Я не буду описывать процесс установки и настройки, поскольку это выходит за рамки данной документации.

После того, как XFree86, XVideo, и 3D ускорение заработает правильно, отредактируйте раздел Device для вашей карты в файле XF86Config, в соответствии с указанным ниже примером (адаптируйте к вашей карте/TV):

Section "Device"
        Identifier      "GeForce"
        VendorName      "ASUS"
        BoardName       "nVidia GeForce2/MX 400"
        Driver          "nvidia"
        #Option         "NvAGP" "1"
        Option          "NoLogo"
        Option          "CursorShadow"  "on"

        Option          "TwinView"
        Option          "TwinViewOrientation" "Clone"
        Option          "MetaModes" "1024x768,640x480"
        Option          "ConnectedMonitor" "CRT, TV"
        Option          "TVStandard" "PAL-B"
        Option          "TVOutFormat" "Composite"
EndSection

Конечно же важная часть - это TwinView.

7.20.5. NeoMagic

Чип NeoMagic найден на различных ноутбуках, некоторые из которых оснащаются простым аналоговым TV кодером, некоторые имеют более продвинутый.

  • Чип аналогового кодера: Сообщалось, что надежный TV выход можно получить, используя -vo fbdev или -vo fbdev2. Вам требуется иметь vesafb скомпилированный в вашем ядре и передать следующие параметры в командной строке ядра: append="video=vesafb:ywrap,mtrr" vga=791. Вам следует запустить X, затем переключитесь в консольный режим при помощи, например, Ctrl+Alt+F1. Если вы не запустите X до запуска MPlayer в консоли, видео станет медленным и дрожащим[choppy] (объяснения приветствуются). Залогиньтесь в консоли и запустите следующую команду:

    clear; mplayer -vo fbdev -zoom -cache 8192 dvd://

    Теперь вы должны увидеть фильм, запущенный в консольном режиме, заполняющий примерно половину LCD экрана вашего ноутбука. Для переключения в TV нажмите Fn+F5 три раза. Тестировался на Tecra 8000, 2.6.15 ядре с vesafb, ALSA v1.0.10.

  • Chrontel 70xx чип кодирования: Найден на IBM Thinkpad 390E и, возможно, других Thinkpad или ноутбуках.

    Необходимо использовать -vo vesa:neotv_pal для PAL или -vo vesa:neotv_ntsc для NTSC. Это даст TV выход, работающий в следующих 16 bpp и 8 bpp режимах:

    • NTSC 320x240, 640x480 and maybe 800x600 too.

    • PAL 320x240, 400x300, 640x480, 800x600.

    Режим 512x384 не поддерживается в BIOS. Вы должны масштабировать изображение в другое разрешение для задействования TV выхода. Если вы видите изображение на экране в разрешении 640x480 или 800x600, но не 320x240 или другом меньшем разрешении, вам требуется заменить две таблицы в vbelib.c. Смотрите функцию vbeSetTV для подробностей. Пожалуйста, свяжитесь автором в этом случае.

    Известные проблемы: только VESA, не реализованы различные настройки, такие как яркость, контрастность, уровень черного, фильтр дрожания[flickfilter].

Глава 8. Портинг

8.1. Linux

Основная платформа разработки — это Linux на x86, хотя MPlayer работает под многими другими портами Linux. Бинарные пакеты MPlayer'а доступны из нескольких источников. Тем не менее, ни один из этих пакетов не поддерживается. Сообщайте о проблемах их авторам, а не нам.

8.1.1. Debian пакеты

Чтобы создать Debian пакет, выполните следующие команды в каталоге с исходным кодом MPlayer'а:

fakeroot debian/rules binary

Если вы хотите передать дополнительные опции configure, установите соответствующее значение переменной окружения DEB_BUILD_OPTIONS. В частности, если хотите поддержку GUI и OSD, укажите:

DEB_BUILD_OPTIONS="--enable-gui --enable-menu" fakeroot debian/rules binary

Вы также можете передать некоторые переменные в Makefile. Например, если желаете компилировать gcc 3.4 даже если это не основной компилятор:

CC=gcc-3.4 DEB_BUILD_OPTIONS="--enable-gui" fakeroot debian/rules binary

Для очистки дерева исходных текстов воспользуйтесь командой:

fakeroot debian/rules clean

В качестве root'а Вы затем можете установить .deb пакет:

dpkg -i ../mplayer_версия.deb

Какое-то время Christian Marillat собирал неофициальные Debian пакеты с MPlayer, MEncoder и бинарными кодеками, так что вы можете их скачать (выполнить apt-get) с его сайта.

8.1.2. RPM пакеты

Dominik Mierzejewski поддерживает официальные Fedora Core RPM пакеты MPlayer'а. Они доступны в репозитории Livna.

Mandrake/Mandriva RPM пакеты доступны с P.L.F.. SuSE включала искалеченную версию MPlayer'а в дистрибутив. Из последних релизов они убрали эти пакеты. Вы можете взять работающие RPM с links2linux.de.

8.1.3. ARM

MPlayer работает на Linux PDA с ARM процессором, например Sharp Zaurus, Compaq Ipaq. Простейший способ получить MPlayer — это скачать его с пакетных репозиториев OpenZaurus. Если Вы хотите скомпилировать его самостоятельно, обратите внимание на каталоги mplayer и libavcodec в корне сборки дистрибутива OpenZaurus. Там всегда найдутся свежий Makefile и патчи, используемые для сборки SVN MPlayer'а вместе с libavcodec. Если Вам нужен GUI, используйте встроенный в xmms

8.2. *BSD

MPlayer работает на всех известных семействах BSD. Существуют портированные[ports]/пакеты сорцов[pkgsrcs]/fink/ и т.п. версии MPlayer, которые, наверное, проще использовать, чем просто исходный код.

Чтобы собрать MPlayer, Вам понадобится GNU make (gmake — родной BSD make не будет работать) и свежая версия binutils.

Если MPlayer ругается, что он не может найти /dev/cdrom или /dev/dvd, создайте соответствующую ссылку:

ln -s /dev/Ваше_cdrom_устройство /dev/cdrom

Чтобы использовать Win32 DLL'и с MPlayer'ом, Вам необходимо перекомпилировать ядро с "option USER_LDT" (если только у Вас не FreeBSD-CURRENT, где это включено по умолчанию).

8.2.1. FreeBSD

Если Ваш CPU поддерживает SSE, перекомпилируйте ядро с "options CPU_ENABLE_SSE" (необходимо FreeBSD-STABLE или патчи к ядру).

8.2.2. OpenBSD

В связи с ограничениями в различных версиях gas (конфликт настройки адресов и MMX), Вы должны будете компилировать в два шага: сначала убедитесь, что не родной as — первый в Вашем $PATH и выполните gmake -k , затем убедитесь, что будет использоваться родная версия и запустите gmake.

Начиная с OpenBSD 3.4 подобный хак больше не нужен.

8.2.3. Darwin

См. секцию Mac OS.

8.3. Коммерческие Unix

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

8.3.1. Solaris

MPlayer должен работать под Solaris 2.6 и более новыми версиями. Для звука используйте звуковой драйвер SUN с опцией -ao sun.

На UltraSPARC'ах, MPlayer использует преимущество их расширения VIS (эквивалент MMX), но (в настоящий момент) только в libmpeg2, libvo and libavcodec, но не в mp3lib. Вы сможете просматривать VOB'ы на 400MHz CPU. Вам потребуется установленная mLib.

Предостережение:

  • mediaLib в данный момент отключена по умолчанию в MPlayer из-за поломанности. Пользователи SPARC, компилировавшие MPlayer с mediaLib сообщали об изобилии зелёного оттенка в видео, кодируемом и декодируемом libavcodec. Если хотите, можете включить ее:

    $ ./configure --enable-mlib

    Вы делаете это на свой страх и риск, пользователи x86 не жолжны никогда использовать mediaLib, поскольку это очень сильно скажется на производительности MPlayer.

Чтобы собрать программу, Вам потребуется GNU make (gmake, /opt/sfw/gmake), родной Solaris make не будет работать. Типичная ошибка которую Вы будете получать при использовании Solaris make, вместо GNU make:

% /usr/ccs/bin/make
make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen

На Solaris SPARC, Вам потребуется GNU C/C++ Compiler; при этом не имеет значения, был ли GNU C/C++ компилятор сконфигурирован с или без GNU ассемблера.

На Solaris x86, Вам потребуются GNU ассемблер и GNU C/C++ компилятор, сконфигурированный, чтобы использовать GNU ассемблер! На x86 платформах код MPlayer'а использует много MMX, SSE и 3DNOW! инструкций, которые Sun'овский ассемблер /usr/ccs/bin/as не может скомпилировать.

Скрипт configure пытается обнаружить, какой ассемблер используется Вашей командой "gcc" (в том случае, если автоопределение не сработает, используйте опцию --as=/там/где/у/Вас/установлен/gnu-as, чтобы сообщить скрипту configure, где можно обнаружить GNU "as" на Вашей системе).

Решение общих проблем:

  • Сообщения об ошибках configure на Solaris x86 системах при использовании GCC без GNU ассемблера:

    % configure
    ...
    Checking assembler (/usr/ccs/bin/as) ... , failed
    Please upgrade(downgrade) binutils to 2.10.1...

    (Решение: Установите и используйте gcc, сконфигурированный с --with-as=gas)

    Типичная ошибка при сборке GNU C компилятором, который не использует GNU as:

    % gmake
    ...
    gcc -c -Iloader -Ilibvo -O4 -march=i686 -mcpu=i686 -pipe -ffast-math
        -fomit-frame-pointer  -I/usr/local/include   -o mplayer.o mplayer.c
    Assembler: mplayer.c
    "(stdin)", line 3567 : Illegal mnemonic
    "(stdin)", line 3567 : Syntax error
    ... more "Illegal mnemonic" and "Syntax error" errors ...
    

  • MPlayer может сообщить о нарушении сегментации при кодировании и декодировании видео, использующего win32codecs:

    ...
    Trying to force audio codec driver family acm...
    Opening audio decoder: [acm] Win32/ACM decoders
    sysi86(SI86DSCR): Invalid argument
    Couldn't install fs segment, expect segfault
    
    
    MPlayer interrupted by signal 11 in module: init_audio_codec
    ...

    Это из-за изменений в sysi86() в Solaris 10 и пре-Solaris Nevada b31 релизах. Исправлено в Solaris Nevada b32; тем не менее Sun еще следует портировать исправление обратно на Solaris 10. Проект MPlayer осведомил Sun об этой проблеме и патч в данный момент готовится для Solaris 10. Больше информации об этой ошибке ищите на: http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6308413.

  • В связи с ошибками в Solaris 8, Вы не сможете проигрывать DVD диски, размером больше 4 Гб:

    • Под Solaris 8 x86 драйвер sd(7D) содержит ошибку, проявляющуюся при доступе к дискам, размером > 4 Гб на устройствах с логическим размером блока != DEV_BSIZE (например CD-ROM и DVD диски). Из-за целочисленного 32-х битного переполнения, происходит доступ к дисковому адресу по модулю 4 Гб (http://groups.yahoo.com/group/solarisonintel/message/22516). Проблема отсутствует в SPARC версиях Solaris 8.

    • Похожая ошибка существует в коде файловой системы hsfs(7FS) (ISO9660), hsfs может не поддерживать разделы/диски больше 4 Гб, доступ к данным происходит по модулю 4 Гб (http://groups.yahoo.com/group/solarisonintel/message/22592). Проблемы с hsfs могут быть исправлены установкой патча 109764-04 (sparc) / 109765-04 (x86).

8.3.2. HP-UX

Joe Page на своей домашней странице держит подробное HOWTO по MPlayer на HP-UX, написанное Martin Gansser. С этими инструкциями сборка должна работать "прямо из коробки". Следующая информация взята оттуда.

Вам потребуется GCC 3.4.0 или полее поздней версии, GNU make версии 3.80 или новее и SDL 1.2.7 или более новый. HP cc не может создать работоспособную программу, предыдущие версии GCC глючат. Для функционирования OpenGL необходимо установить Mesa, после чего должны заработать драйвера вывода видео gl и gl2, хотя, в зависимости от быстродействия CPU, скорость может быть ужасной. GNU esound является хорошей заменой довольно бедной звуковой системе HP-UX.

Произведите сканирование шины SCSI на предмет наличия DVD устройства:

# ioscan -fn

Class          I            H/W   Path          Driver    S/W State    H/W Type        Description
...
ext_bus 1    8/16/5      c720  CLAIMED INTERFACE  Built-in SCSI
target  3    8/16/5.2    tgt   CLAIMED DEVICE
disk    4    8/16/5.2.0  sdisk CLAIMED DEVICE     PIONEER DVD-ROM DVD-305
                         /dev/dsk/c1t2d0 /dev/rdsk/c1t2d0
target  4    8/16/5.7    tgt   CLAIMED DEVICE
ctl     1    8/16/5.7.0  sctl  CLAIMED DEVICE     Initiator
                         /dev/rscsi/c1t7d0 /dev/rscsi/c1t7l0 /dev/scsi/c1t7l0
...

Вывод показывает, что по адресу 2 шины SCSI находится Pioneer DVD-ROM. Экземпляр карты для аппаратного пути 8/16 равен 1.

Создайте ссылку от сырого устройства к DVD устройству.

ln -s /dev/rdsk/c<SCSI bus instance>t<SCSI target ID>d<LUN> /dev/<device>

Пример:

ln -s /dev/rdsk/c1t2d0 /dev/dvd

Далее следуют решения некоторых общих проблем:

  • Крах при запуске с таким сообщением об ошибке:

    /usr/lib/dld.sl: Unresolved symbol: finite (code) from /usr/local/lib/gcc-lib/hppa2.0n-hp-hpux11.00/3.2/../../../libGL.sl

    Это значит, что функция .finite(). недоступна в стандартной математической библиотеке HP-UX. Вместо этого используйте .isfinite().. Решение: Используйте последнюю версию Mesa из репозитория.

  • Крах при воспроизведении со следующей ошибкой:

    /usr/lib/dld.sl: Unresolved symbol: sem_init (code) from /usr/local/lib/libSDL-1.2.sl.0

    Решение: Используйте опцию extralibdir программы configure --with-extralibdir="/usr/lib -lrt"

  • MPlayer вылетает с нарушением сегментации и сообщением вроде этого:

    Pid 10166 received a SIGSEGV for stack growth failure.
    Possible causes: insufficient memory or swap space, or stack size exceeded maxssiz.
    Segmentation fault

    Решение: Ядро HP-UX по-умолчанию для каждого процесса имеет размер стека равный 8MB(?). (11.0 и новые патчи для 10.20 позволяют вам увеличить maxssiz вплоть до 350MB для 32-х битных программ). Вы должны расширить maxssiz и перекомпилировать ядро (и перезагрузиться). Чтобы сделать это, можно использовать SAM. (Находясь в нем, проверьте параметр maxdsiz на предмет максимального количества данных, которые могут использоваться программами. 64 Мб по умолчанию может хватить или не хватить в зависимости от Ваших приложений.)

8.3.3. AIX

MPlayer успешно собирается на AIX 5.1, 5.2, и 5.3, используя GCC 3.3 или новее. Сборка MPlayer не проверена на AIX 4.3.3 и более ранних. Крайне рекомендуется собирать MPlayer используя GCC 3.4 или старше, и, как минимум, GCC 4.0, если собираете на POWER5.

Убедитесь, что используете GNU make (/opt/freeware/bin/gmake) для сборки MPlayer, поскольку столкнетесь с проблемами при использовании /usr/ccs/bin/make.

По-прежнему ведется работа над кодом определения CPU. Проверены следующие архитектуры:

  • 604e

  • POWER3

  • POWER4

На следующих архитектурах не проверялось, но должно работать:

  • POWER

  • POWER2

  • POWER5

Вывод звука через Ultimedia Services не поддерживается, т.к. Ultimedia была убрана из AIX 5.1; таким образом, остается единственный вариант: использовать драйвер AIX Open Sound system (OSS) от 4Front Technologies с http://www.opensound.com/aix.html. Для некоммерческого использования 4Front Technologies распространяет драйвер OSS под AIX 5.1 бесплатно; несмотря на это, на текущий день нет драйверов вывода звука для AIX 5.2 или 5.3. drivers for AIX 5.2 or 5.3. Это означает, что сейчас AIX 5.2 и 5.3 несовместимы с выводом звука MPlayer.

Решения для общих проблем:

  • Если вы столкнулись с такой ошибкой configure:

    $ ./configure
    ...
    Checking for iconv program ... no
    No working iconv program found, use
    --charset=US-ASCII to continue anyway.
    Messages in the GTK-2 interface will be broken then.

    Это из-за того, что AIX использует нестандартные имена кодировок; поэтому перекодировка сообщений в данный момент не работает. Решение - использовать:

    $ ./configure --charset=noconv

8.3.4. QNX

Вам нужно скачать и установить SDL для QNX. Затем запустите MPlayer с опциями -vo sdl:photon и -ao sdl:nto, и все будет работать быстро.

Вывод -vo x11 будет ещё медленнее, чем под Linux, поскольку под QNX X'ы эмулируются, что ОЧЕНЬ медленно.

8.4. Windows

Да, MPlayer работает под Windows под Cygwin и MinGW. Пока ещё нет официального GUI, но версия командной строки полностью функциональна. Обратитесь к списку рассылки MPlayer-cygwin за помощью и дополнительной информацией. Официальные бинарники под Windows могут быть найдены на странице загрузки. Пакеты установки и простые GUI фронтенды доступны из внешних источников, мы собрали их в разделе Windows на нашей странице проектов.

При нежелании использовать командную строку поможет простой трюк: поместите на рабочий стол ссылку, со следующим содержимым в секции execute:

c:\путь\к\mplayer.exe %1

Это позволит MPlayer воспроизводить любой фильм, который вы перетащите на созданный ярлык. Добавьте -fs для полноэкранного режима.

Лучшие результаты получаются при использовании родного DirectX видео вывода (-vo directx). Альтернативой является использование OpenGL или SDL, но производительность OpenGL сильно зависит от машины, а SDL на некоторых системах искажает видео или вылетает. Если изображение искажено, попробуйте отключить аппаратное ускорение, указав -vo directx:noaccel. Скачайте файлы заголовков DirectX 7, чтобы скомпилировать видео драйвер DirectX. Кроме того, вам потребуется установленный DirectX 7, чтобы работал DirectX видеодрайвер.

VIDIX теперь доступен и под Windows, как -vo winvidix, хотя это ещё экспериментально и требует небольшой ручной установки. Скачайте dhahelper.sys или dhahelper.sys (с поддержкой MTRR) и скопируйте его в каталог vidix/dhahelperwin в Вашем дереве исходного кода MPlayer'а. Откройте консоль и перейдите в этот каталог. Теперь наберите

gcc -o dhasetup.exe dhasetup.c

и запустите

dhasetup.exe install

под Администратором. Теперь Вам нужно перезагрузить машину.

Для получения наилучших результатов, MPlayer должен использовать пространство цветов, аппаратно поддерживаемое Вашей видеокартой. К сожалению, многие графические драйверы под Windows ошибочно сообщают, что некоторые пространства цветов поддерживаются аппаратно. Чтобы найти какие именно, попробуйте

mplayer -benchmark -nosound -frames 100 -vf format=colorspace movie

, где colorspace может быть любым пространством цветов из вывода опции -vf format=fmt=help. Если Вы найдёте пространство цветов, которое Ваша карта особенно плохо поддерживает, опция -vf noformat=colorspace помешает его использованию. Добавьте это в ваш конфигурационный файл, чтобы это пространство цветов больше никогда не использовалось.

Существуют специальные пакеты кодеков для Windows, доступные на нашей странице загрузки, позволяющие воспроизводить форматы, для которых пока нет родной поддержки. Поместите их куда-нибудь в пути или укажите configure опцию --codecsdir=c:/path/to/your/codecs (или --codecsdir=/path/to/your/codecs, но только под Cygwin). У нас были сообщения о том, что Real DLL должны быть доступны пользователю, запускающему MPlayer, для записи, но только на некоторых системах (NT4). Если у Вас проблемы с ними, попробуйте сделать их доступными на запись.

Вы можете воспроизводить VCD, проигрывая .DAT или .MPG файлы, которые Windows показывает на VCD. Вот как это работает (указывайте букву диска Вашего CD-ROM):

mplayer d:/mpegav/avseq01.dat

В качестве альтернативы вы можете напрямую воспроизводить VCD дорожки, указав:

mplayer vcd://<дорожка> -cdrom-device d:

DVDs также работают, укажите -dvd-device с буквой Вашего DVD-ROM:

mplayer dvd://<title> -dvd-device d::

Консоль Cygwin/MinGW весьма медленная. Перенаправление вывода или использование опции -quiet улучшает производительность на некоторых системах. Прямой рендеринг (-dr) также может помочь. Если воспроизведение прерывисто, попробуйте -autosync 100. Если какие-то из этих опций Вам помогут, стоит поместить их в конфигурационный файл.

Замечание

Если у Вас Pentium 4 и Вы заметили крахи при использовании кодеков RealPlayer, попробуйте отключить hyperthreading.

8.4.1. Cygwin

Для компиляции MPlayer требуется запустить Cygwin версии 1.5.0 или старше.

Файлы заголовков DirectX надо распаковать в /usr/include/ или /usr/local/include/.

Вы можете найти инструкции и файлы для запуска SDL под Cygwin на сайте libsdl.

8.4.2. MinGW

Прежде, установка версии MinGW, способной скомпилировать MPlayer, была сложновата, но сейчас все работает с самого начала. Просто установите MinGW 3.1.0 или более новый и MSYS 1.0.9 или старше и укажите постустановщику MSYS, что MinGW установлен.

Распакуйте файлы заголовков DirectX в /mingw/include/.

Для поддержки сжатых заголовкоав MOV необходима zlib, которую MinGW по умолчанию не предоставляет. Сконфигурируйте её, указав --prefix=/mingw и установите её до компиляции MPlayer'а.

Полные инструкции по сборке MPlayer и необходимых библиотек могут быть найдены на странице MPlayer MinGW HOWTO.

8.5. Mac OS

MPlayer не работает на Mac OS версий меньше 10, но компилируется "из коробки" на Mac OS X 10.2 и старше. Предпочитаемым компилятором является версия Apple GCC 3.x или более позднего. Вы можете получить начальное окружение для компиляции, установив Apple'овский Xcode. Если у вас Mac OS X 10.3.9 или выше и QuickTime 7, можете использовать драйвер видео вывода corevideo.

К сожалению, основное окружение не позволяет получить преимущество от всех приятных возможностей MPlayer. В частности, чтобы иметь включенную поддержку OSD, потребуются установленные в системе библиотеки fontconfig и freetype. В отличие от остальных Unix'ов, таких как Linux и клоны BSD, OS X не имеет поставляющейся с ОС систему управления пакетами.

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

В частности для компиляции MPlayer с поддержкой OSD:

sudo port install pkgconfig

Это установит pkg-config, который является системой управления флагами компиляции/сборки библиотек. Скрипт configure программы MPlayer использует его для правильного обнаружения библиотек. Тем же способом можно установить fontconfig:

sudo port install fontconfig

Затем можно продолжить, запустив MPlayer'овский configure скрипт (задайте переменные окружения PKG_CONFIG_PATH и PATH так, чтобы configure мог найти библиотеки, установленные при помощи MacPorts):

PKG_CONFIG_PATH=/opt/local/lib/pkgconfig/ PATH=$PATH:/opt/local/bin/ ./configure

8.5.1. MPlayer OS X GUI

Вы можете получить родной GUI для MPlayer вместе с предкомпилированными бинарниками MPlayer для Mac OS X из проекта MPlayerOSX, но предупреждаем: этот проект давно не развивается.

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

Чтобы самостоятельно собрать MPlayerOSX из исходный текстов, вам потребуется mplayerosx, main и копию main SVN модуля, называющегося main_noaltivec. mplayerosx - это GUI frontend, main - это MPlayer, а main_noaltivec - это MPlayer собранный без поддержки AltiVec.

Для извлечения модулей из SVN:

svn checkout svn://svn.mplayerhq.hu/mplayerosx/trunk/ mplayerosx
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk/ main

Чтобы собрать MPlayerOSX потребуется настроить что-то вроде этого:

MPlayer_source_directory
   |
   |--->main           (MPlayer Subversion исходники)
   |
   |--->main_noaltivec (MPlayer Subversion исходники, сконфигурированные с --disable-altivec)
   |
   \--->mplayerosx     (MPlayer OS X Subversion исходники)

Сначала надо собрать main и main_noaltivec.

Для начала, чтобы добиться максимальной обратной совместимости, установите переменную окружения:

export MACOSX_DEPLOYMENT_TARGET=10.3

Затем сконфигурируйте:

Если конфигурируете для G4 или более позднего CPU с поддержкой AltiVec, делайте так:

./configure --disable-gl --disable-x11

Если конфигурируете для машины c G3 без AltiVec, используйте:

./configure --disable-gl --disable-x11 --disable-altivec

Вам может потребоваться отредактировать config.mak и изменить -mcpu и -mtune с 74XX на G3.

Продолжайте с

make

после чего идите в каталог mplayerosx и там наберите:

make dist

Это создаст сжатый архив .dmg с котовым к использованию бинарником.

Также можно использовать проект Xcode 2.1; более старый Xcode 1.x больше не работает.

Глава 9. Основы использования MEncoder

Полный список доступных опций MEncoder и примеры смотрите на странице руководства man. Ряд наглядных примеров и подробные руководства по использованию отдельных параметров кодирования, можно узнать прочтя советы по кодированию, которые мы собрали из отдельных нитей[threads] рассылки MPlayer-users. В архивах здесь и, особенно по поводу старых вещей, здесь найдется множество дискуссий, посвященных всех аспектам и проблемам кодирования при помощи MEncoder.

9.1. Выбор кодеков и формата файлов

Аудио и видео кодеки для кодирования выбираются опциями -oac и -ovc, соответственно. Наберите для примера:

mencoder -ovc help

чтобы получить список всех видео кодеков поддерживаемых версией MEncoder, установленной на вашей машине. Доступны следующие варианты:

Аудио кодеки:

Название кодекаОписание
mp3lameКодируйте в VBR, ABR или CBR MP3 с LAME
lavcИспользуйте один из кодеков библиотеки libavcodec
faacFAAC AAC аудио кодер
toolameMPEG Audio Layer 2 кодер
twolameMPEG Audio Layer 2 кодер, основанный на tooLAME
pcmНесжатый PCM звук
copyНе перекодировать, просто копировать сжатые кадры

Видео кодеки:

Название кодекаОписание
lavcИспользуйте один из кодеков библиотеки libavcodec
xvidXvid, MPEG-4 Advanced Simple Profile (ASP) кодек
x264x264, MPEG-4 Advanced Video Coding (AVC), AKA[он же] H.264 кодек
nuvnuppel видео, используемое некоторыми приложениями реального времени
rawНесжатые видео кадры
copyНе перекодировать, просто скопировать сжатые кадры
framenoИспользовался для 3-х проходного кодирования (не рекомендуется)

Формат выходных файлов выбирается опцией -of. Наберите:

mencoder -of help

чтобы получить список всех форматов, поддерживаемых версией MEncoder, установленного на вашей машине. Доступны следующие варианты:

Форматы файлов:

Название форматаОписание
lavfОдин из форматов, поддерживаемых библиотекой libavformat
avi'Слоеное' Аудио-Видео
mpegMPEG-1 и MPEG-2 PS
rawvideoсырой видео поток (без мультиплексирования - только видео поток)
rawaudioсырой аудио поток (без мультиплексирования - только аудио поток)

AVI является родным форматом для MEncoder, что означает наилучшую его поддержку, MEncoder изначально разрабатывался для этого формата. Как замечено выше, другие форматы тоже пригодны, но вы можете столкнуться с проблемами при их использовании.

форматы файлов библиотеки libavformat:

Если вы выбрали libavformat для мультиплексирования выходного файла (используя -of lavf), подходящий формат файла будет определен по расширению выходного файла. Вы можете заставить использовать конкретный формат опцией format библиотеки libavformat.

название формата libavformatОписание
mpgMPEG-1 и MPEG-2 PS
asfAdvanced Streaming Format
avi'Слоеное' Аудио-Видео
wavWaveform Аудио
swfMacromedia Flash
flvMacromedia Flash видео
rmRealMedia
auSUN AU
nut открытый формат NUT (экспериментальный и пока не полностью соответствующий спецификации)
movQuickTime
mp4MPEG-4 формат
dvSony Digital Видео формат
mkvОткрытый аудио/видео контейнер Matroska

Как видите, libavformat позволяет MEncoder мультиплексировать во множество форматов. К сожалению, поскольку MEncoder изначально не разрабатывался для поддержки форматов, отличных от AVI, вам следует относиться к результирующему файлу с определенной долей паранойи. Убедитесь, что в порядке Аудио/видео синхронизация, и файл воспроизводится не только в MPlayer.

Пример 9.1. Кодирование в формат Macromedia Flash

Создание видео Macromedia Flash, подходящего для воспроизведения в веб браузере плагином Macromedia Flash:

mencoder input.avi -o output.flv -of lavf \
    -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc \
    -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3


9.2. Выбор входного файла или устройства

MEncoder может кодировать из файлов или непосредственно с DVD или VCD диска. Просто укажите имя файла в командной строке для кодирования из файла, или dvd://номер_ролика или vcd://номер_дорожки для кодирования DVD ролика или VCD дорожки. Если вы уже скопировали DVD на жесткий диск (може воспользоваться утилитой вроде dvdbackup, доступной на многих системах), и желаете кодировать из копии, вледует по-прежнему использовать dvd:// синтаксис, вместе с -dvd-device с последующим путек к корню копии DVD. Опции -dvd-device и -cdrom-device также могут быть использованы для переопределения путей к файлам устройств для чтения прямо с диска, если значения по-умолчанию /dev/dvd и /dev/cdrom не подходят для вашей системы.

При кодировании с DVD, часто бывает желательно выбрать раздел или диапазон разделов для кодирования. для этой цели можно использовать опцию -chapter. Например, -chapter 1-4 будет кодировать только разделы DVD с 1-го по 4-й. Это особенно полезно при кодировании 1400Мб с целью уместить их на 2 CD, так как вы можете разбить фильм точно на границе раздела, вместо середины некоторой сцены.

Если у вас есть поддерживаемая карта TV захвата, вы также можете кодировать с TV входа. Используйте tv://номер_канала в качестве имени файла, и опцию -tv для настройки различный параметров захвата. DVB вход работает аналогично.

9.3. Двухпроходное кодирование MPEG-4 ("DivX")

Название происходит из того факта, что кодирование файла производится дважды. Первое кодирование (дублирующий проход) создает несколько временных файлов (*.log) размером в несколько мегабайт, не удаляйте их пока (вы можете удалить AVI или вообще не создавать видеофайл, перенаправив его в /dev/null). На втором проходе, с использованием данных о битпотоке из временных файлов, формируется готовый выходной. Получившийся файл будет иметь намного лучшее качество картинки. Если слышите об этом в первый раз, обратитесь к руководствам, которые можно найти в интернет.

Пример 9.2. копирование звуковой дорожки

Кодирование (двухпроходное) второй дорожки DVD в MPEG-4 ("DivX") AVI с копированием звуковой дорожки.

mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o /dev/null
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
    -oac copy -o output.avi


Пример 9.3. кодирование звуковой дорожки

Кодирование (в два прохода) DVD в MPEG-4 ("DivX") AVI с кодированием звуковой дорожки в MP3. Будьте аккуратны, используя этот метод, так как в некоторых случаях это может привести к рассинхронизации аудио/видео.

mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \
    -oac mp3lame -lameopts vbr=3 -o /dev/null
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
    -oac mp3lame -lameopts vbr=3 -o output.avi


9.4. Кодирование в Sony PSP видео формат

MEncoder поддерживает кодирование в видео формат Sony PSP, но, в зависимости от ревизии программного обеспечения PSP, с различными ограничениями. Можете не беспокоиться, если не будете нарушать следующие ограничения:

  • Битовый поток: не должен превышать 1500кбит/с, тем не менее, последние версии очень хорошо поддерживали любой битрейт, пока заголовок не требовал черезчур большого значения.

  • Размеры: ширина и высота PSP видео должна быть кратна 16, а произведение ширина * высота не должно превышать 64000. В некоторых случаях возможно воспроизведение видео большего размера.

  • Звук: частота дискретизации должна быть 24кГц для MPEG-4, и 48кГц для H.264.

Пример 9.4. Кодирование для PSP

mencoder -ofps 30000/1001 -af lavcresample=24000 -vf harddup -of lavf \
    -oac lavc -ovc lavc -lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:acodec=aac \
    -lavfopts format=psp \
input.video -o output.psp

Заметьте, что можно задать заголовок видео опцией -info name=Заголовок_Фильма.


9.5. Кодирование в MPEG формат

MEncoder может создавать файлы формата MPEG (MPEG-PS). MPEG-1 или MPEG-2 обычно используют по причине кодирования в более ограниченные форматы, такие как SVCD, VCD или DVD. Особые требования для этих форматов описаны в руководстве по созданию VCD и DVD section.

Чтобы сменить формат выходного файла MEncoder, используйте опцию -of mpeg.

Пример:

mencoder input.avi -of mpeg -ovc lavc -lavcopts
vcodec=mpeg1video \
    -oac copy other_options -o output.mpg

Создается файл MPEG-1 пригодный для воспроизведения на системах с минимальной поддержкой мультимедиа, таких как только что установленные Windows:

mencoder input.avi -of mpeg -mpegopts format=mpeg1:tsaf:muxrate=2000 \
    -o output.mpg -oac lavc -lavcopts acodec=mp2:abitrate=224 -ovc lavc \
    -lavcopts vcodec=mpeg1video:vbitrate=1152:keyint=15:mbd=2:aspect=4/3

То же, но используя libavformat MPEG мультиплексор:

mencoder input.avi -o VCD.mpg -ofps 25 -vf scale=352:288,harddup -of lavf \
    -lavfopts format=mpg -oac lavc -lavcopts acodec=mp2:abitrate=224 -ovc lavc \
    -lavcopts vcodec=mpeg1video:vrc_buf_size=327:keyint=15:vrc_maxrate=1152:vbitrate=1152:vmax_b_frames=0

Подсказка:

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

9.6. Масштабирование фильмов

Часто возникает потребность изменить размер изображения у фильма. Причин может быть много: уменьшение размера файла, пропускная способность сети, и т.д. Большинство производят масштабирование даже при конвертации DVD или SVCD в AVI. Если есть желание провести масштабирование, прочтите раздел Сохранение пропорций.

Процесс масштабирование осуществляется плагином scale: -vf scale=ширина:высота. Качество может быть установлено опцией -sws. Если не указано, MEncoder будет использовать 2: бикубическое.

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

mencoder input.mpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell \
    -vf scale=640:480 -o output.avi

9.7. копирование потока

MEncoder может обрабатывать входные потоки двумя способами: кодировать или копировать их. Этот раздел о копировании.

  • Видео поток (опция -ovc copy): можно делать классные вещи :) Вроде помещения (не преобразования!) FLI или VIVO или MPEG-1 видео в AVI файл! Конечно, проиграть такие файлы сможет только MPlayer :) И, возможно, никакого реальной пользы в этом нет. Реально: копирование видеопотока может быть полезно, если надо кодировать только аудио поток (например, несжатый PCM в MP3).

  • Аудио поток (опция -oac copy): straightforward. Возможно взять внешний файл (MP3, WAV) и уплотнить[mux] его в выходной поток. Воспользуйтесь опцией -audiofile имя_файла, чтобы сделать это.

Использование -oac copy для копирования из одного формата в другой может потребовать указания -fafmttag для сохранения тэга аудио формата из оригинального файла. Например, если вы преобразовываете NSV файл со звуком AAC в формат AVI, аудио формат будет неверен и должен быть изменен. Чтобы получить список тэгов аудио формата проверьте codecs.conf.

Пример:

mencoder input.nsv -oac copy -fafmttag 0x706D \
    -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -o output.avi

9.8. Кодирование из нескольких входных файлов изображений (JPEG, PNG, TGA, SGI)

MEncoder может создавать фильмы из одного или более JPEG, PNG, TGA или других файлов изображений. Простым копированием кадров он может создавать MJPEG (Motion JPEG), MPNG (Motion PNG) или MTGA (Motion TGA) файлы.

Разъяснение процесса:

  1. MEncoder декодирует изображение(я) с помощью libjpeg (при декодировании PNG, он будет использовать libpng).

  2. MEncoder затем скармливает декодированное изображение выбранному видео компрессору (DivX4, Xvid, FFmpeg msmpeg4, и .т.д).

примеры.  The explanation of the -mf option is in the man page.

Создание файла MPEG-4 из всех JPEG файлов текущего каталога:

mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc lavc \
    -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o output.avi

Создание файла MPEG-4 из некоторых JPEG файлов текущего каталога:

mencoder mf://frame001.jpg,frame002.jpg -mf w=800:h=600:fps=25:type=jpg \
    -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o output.avi

Создание файла MPEG-4 из явного списка JPEG файлов (list.txt в текущем каталоге содержит список файлов, используемых в качестве источника, по одному в строке):

mencoder mf://@list.txt -mf w=800:h=600:fps=25:type=jpg \
    -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o output.avi

Вы можете смешивать различные типы изображений независимо от используемого метода — отдельные файлы, маска или файл со списком — при условии, конечно, что они имеют одинаковое разрешение. Так что вы можете, например, взять титульный кадр из PNG файла, а затем поместить слайдшоу из JPEG фотографий.

Создание файла Motion JPEG (MJPEG) из всех JPEG файлов текущего каталога:

mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc copy -oac copy -o output.avi

Создание несжатого файла из всех PNG файлов текущего каталога:

mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc raw -oac copy -o output.avi

Замечание

Ширина должна быть целым числом, кратным 4, это ограничение формата RAW RGB AVI.

Создание файла Motion PNG (MPNG) из всех PNG файлов текущего каталога:

mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc copy -oac copy -o output.avi

Создание файла Motion TGA (MTGA) из всех TGA файлов текущего каталога:

mencoder mf://*.tga -mf w=800:h=600:fps=25:type=tga -ovc copy -oac copy -o output.avi

9.9. Извлечение DVD субтитров в файл VOBsub

MEncoder способен извлекать субтитры из DVD в файлы формата VOBsub. Они состоят из пары файлов, оканчивающихся на .idx и .sub и обычно упакованы в один .rar архив. MPlayer может воспроизводить из при помощи опций -vobsub и -vobsubid.

Вы указываете базовое имя (т.е. без расширения .idx или .sub) выходных файлов с помощью -vobsubout и индекс этих субтитров в результирующем файле при помощи -vobsuboutindex.

Если источником является не DVD следует использовать -ifo для указания указания файла .ifo, необходимого для создания результирующего .idx файла.

Если источником является не DVD и у вас нет .ifo файла, используйте опцию -vobsubid для указания, какой ид языка следует записать в .idx файл.

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

Пример 9.5. копирование двух субтитров из DVD при выполнении двухпроходного кодирования

rm subtitles.idx subtitles.sub
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \
    -vobsubout subtitles -vobsuboutindex 0 -sid 2
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
    -vobsubout subtitles -vobsuboutindex 1 -sid 5

Пример 9.6. Копирование французских субтитров из MPEG файла

rm subtitles.idx subtitles.sub
mencoder movie.mpg -ifo movie.ifo -vobsubout subtitles -vobsuboutindex 0 \
    -vobsuboutid fr -sid 1 -nosound -ovc copy

9.10. Сохранение пропорций

DVD и SVCD (т.е. MPEG-1/2) файлы содержат информацию о пропорции, которая описывает как проигрыватель должен масштабировать видео поток, чтобы люди не становились яйцеголовыми. (напр.: 480x480 + 4:3 = 640x480). Хотя при кодировании в AVI (DivX) файлы вы избавлены от этой проблемы, т.к. заголовки AVI не содержат это значение. Масштабирование изображения отвратительно и расточительно, есть лучший путь!

There is

MPEG-4 имеет уникальную возможность: видео поток может хранить требуемые ему пропорции. Да, в точности как MPEG-1/2 (DVD, SVCD) и H.263 файлы. К сожалению, немного проигрывателей кроме MPlayer поддерживают этот MPEG-4 атрибут.

Эта возможность может использоваться только с libavcodec'овским mpeg4 кодеком. Имейте в виду: хотя MPlayer корректно воспроизведет файл, другие проигрыватели могут использовать неверные пропорции.

Вы серьезно должны обрезать черные полосы выше и ниже изображения. Смотрите страницу руководства man по использованию cropdetect и crop плагинов.

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

mencoder sample-svcd.mpg -vf crop=714:548:0:14 -oac copy -ovc lavc \
    -lavcopts vcodec=mpeg4:mbd=2:trell:autoaspect -o output.avi

Глава 10. Кодирование с MEncoder

10.1. Создание высококачественного MPEG-4 ("DivX") рипа из DVD фильма
10.1.1. Подготовка к кодированию: Идентификация исходного материала и кадровой частоты
10.1.1.1. Определение кадровой частоты источника
10.1.1.2. Идентификация исходного материала
10.1.2. Постоянный квантователь в сравнении с многопроходностью
10.1.3. Ограничения для эффективного кодирования
10.1.4. Усечение и масштабирование
10.1.5. Выбор разрешения и битпотока
10.1.5.1. Расчёт разрешения
10.1.6. Фильтрация
10.1.7. Чересстрочная развёртка и телесин
10.1.8. Кодирование чересстрочного видео
10.1.9. Замечания об аудио/видео синхронизации
10.1.10. Выбор видеокодека
10.1.11. Аудио
10.1.12. Мультиплексирование
10.1.12.1. Улучшение мультиплексирования и надёжности A/V синхронизации
10.1.12.2. Ограничения контейнера AVI
10.1.12.3. Мультиплексирование в контейнер Matroska (Матрёшка)
10.2. Как работать с телесином и чересстрочной развёрткой на NTSC DVD
10.2.1. Введение
10.2.2. Как распознать тип Вашего видео
10.2.2.1. Построчная развёртка
10.2.2.2. Телесин
10.2.2.3. Чересстрочная развертка
10.2.2.4. Смешанные построчная развертка и телесин
10.2.2.5. Смешанные построчная и чересстрочная развертки
10.2.3. Как кодировать каждую категорию
10.2.3.1. Построчная развертка
10.2.3.2. Телесин
10.2.3.3. Чересстрочная развертка
10.2.3.4. Смешанные построчная развертка и телесин
10.2.3.5. Смешанные построчная и чересстрочная развертки
10.2.4. Примечания
10.3. Кодирование семейством кодеков libavcodec
10.3.1. Видео кодеки libavcodec
10.3.2. Аудио кодеки libavcodec
10.3.2.1. Дополнительная таблица PCM/ADPCM форматов
10.3.3. Опции кодирования libavcodec
10.3.4. Примеры настроек кодирования
10.3.5. Нестандартные inter/intra матрицы
10.3.6. Пример
10.4. Кодирование кодеком Xvid
10.4.1. Какие опции следует использовать для получения лучших результатов?
10.4.2. Опции кодирования Xvid
10.4.3. Профили кодирования
10.4.4. Примеры настроек кодирования
10.5. Кодирование кодеком x264
10.5.1. Опции кодирования x264
10.5.1.1. Введение
10.5.1.2. Опции, затрагивающие, в основном, скорость и качество
10.5.1.3. Опции, относящиеся к различным предпочтениям
10.5.2. Примеры настроек кодирования
10.6. Кодирование семейством кодеков Video For Windows
10.6.1. Поддерживаемые кодеки Video for Windows
10.6.2. Использование vfw2menc для создания файла настроек кодека.
10.7. Использование MEncoder для создания совместимых с QuickTime файлов
10.7.1. Зачем необходимо создавать совместимые с QuickTime файлы?
10.7.2. Ограничения QuickTime 7
10.7.3. Обрезание
10.7.4. Масштабирование
10.7.5. A/V синхронизация
10.7.6. Битпоток
10.7.7. Пример кодирования
10.7.8. Ремультиплексирование в MP4
10.7.9. Добавление тегов метаданных
10.8. Использование MEncoder для создания VCD/SVCD/DVD-совместимых файлов.
10.8.1. Ограничения формата
10.8.1.1. Ограничения форматов
10.8.1.2. Ограничения на размер GOP
10.8.1.3. Ограничения на битпоток
10.8.2. Опции вывода
10.8.2.1. Пропорции
10.8.2.2. Сохранение A/V синхронизации
10.8.2.3. Преобразование частоты дискретизации
10.8.3. Использование libavcodec для VCD/SVCD/DVD кодирования
10.8.3.1. Введение
10.8.3.2. lavcopts
10.8.3.3. Примеры
10.8.3.4. Расширенные опции
10.8.4. Кодирование звука
10.8.4.1. toolame
10.8.4.2. twolame
10.8.4.3. libavcodec
10.8.5. Собирая все вместе
10.8.5.1. PAL DVD
10.8.5.2. NTSC DVD
10.8.5.3. PAL AVI, содержащий AC-3 звук, в DVD
10.8.5.4. NTSC AVI, содержащий AC-3 звук, в DVD
10.8.5.5. PAL SVCD
10.8.5.6. NTSC SVCD
10.8.5.7. PAL VCD
10.8.5.8. NTSC VCD

10.1. Создание высококачественного MPEG-4 ("DivX") рипа из DVD фильма

Одним часто задаваемым вопросом является "Как мне сделать рип самого высокого качества для заданного размера?". Другой вопрос "Как мне создать DVD рип с самым высоким возможным качеством? Я не беспокоюсь о размере файла, мне нужно лишь наилучшее качество.".

Последний вопрос, похоже, отчасти неверно сформулирован. В конце концов, если Вы не беспокоитесь о размере файла, почему бы просто не скопировать весь MPEG-2 видео поток с DVD? Конечно, Ваш AVI файл будет занимать около 5GB, но если Вы желаете наилучшее качество и не волнуетесь о размере, то это, несомненно, лучшее решение.

В действительности, причиной, по которой Вы хотите перекодировать DVD в MPEG-4, является именно Ваше беспокойство о размере файла.

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

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

10.1.1. Подготовка к кодированию: Идентификация исходного материала и кадровой частоты

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

Первым и наиболее важным шагом перед кодированием должно быть определение типа содержимого, с которым Вы работаете. Если источником Ваших исходных материалов является DVD или широковещательное/кабельное/спутниковое TV, оно будет содержаться в одном из двух форматов: NTSC для Северной Америки и Японии, PAL для Европы и т.д.. Однако, важно понимать, что это только форматирование для показа на телевидении, и оно часто не соответствует исходному формату фильма. Опыт показывает, что NTSC материал существенно более сложен для кодирования, т.к. в нём содержится больше элементов, которые нужно идентифицировать. Для проведения удачного кодирования, Вам необходимо знать исходный формат. Отказ от принятия этого во внимание приведёт к различным дефектам в Вашем кодировании, включая безобразные гребешки (артефакты чересстрочной развёртки) и повторяющиеся или даже потерянные кадры. Кроме ухудшения картинки, артефакты так же уменьшают эффективность кодирования: Вы получите худшее качество на единицу битпотока.

10.1.1.1. Определение кадровой частоты источника

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

  • Стандартный фильм: Производятся для театральных показов на 24 fps [кадр/сек].

  • PAL видео: Записывается с помощью PAL видеокамеры при 50 полях в секунду. Поле состоит только из чётных или нечётных линий кадра. Телевидение было разработано для обновления этих полей попеременно, что используется как вид дешёвого аналогового сжатия. Человеческий глаз, предположительно, компенсирует это, но однажды поняв чересстрочную развёртку, Вы научитесь видеть её и на TV и Вам больше никогда не понравится телевидение. Два поля не составляют целый кадр, поскольку они снимаются с задержкой в 1/50 секунды и, следовательно, не формируют одно изображение, за исключением случая полного отсутствия движения.

  • NTSC видео: Записывается с помощью NTSC видеокамеры при 60000/1001 полях в секунду, или 60 полях в секунду в эпоху чёрно-белого TV. В других отношениях аналогично PAL.

  • Анимация: Обычно рисуется на 24 fps, но также существуют разновидности со смешанной кадровой частотой.

  • Компьютерная графика (CG): Может быть с любой частотой кадров, но некоторые встречаются чаще остальных; 24 и 30 кадров в секунду типичны для NTSC, и 25 fps типично для PAL.

  • Старый фильм: Различные низкие кадровые частоты.

10.1.1.2. Идентификация исходного материала

Фильмы, состоящие из кадров, называются фильмами с построчной (или прогрессивной) развёрткой, а состоящие из независимых полей — фильмами с чересстрочной развёрткой или просто видео; однако, последний термин двусмысленный.

Из-за дальнейших усложнений, некоторые фильмы будут смесью нескольких, указанных выше.

Наиболее важным различием между всеми этими форматами является то, что одни из них основаны на кадрах, а другие — на полях. Любой фильм, подготовленный для просмотра на телевидении (включая DVD), преобразуется в формат, основанный на полях. Различные методы, с помощью которых это может быть сделано, совокупно называются "телесин" (англ. telecine), одним из вариантов которого является отвратительный NTSC "3:2 пулдаун" (англ. pulldown). За исключением случаев, когда формат исходного материала был также основан на полях (и с такой же частотой полей), Вы получите фильм в формате отличном от исходного.

Существует несколько общих типов пулдауна:

  • PAL 2:2 пулдаун: Наилучший из всех. Каждый кадр показывается за время длительности двух полей путем извлечения чётных и нечётных строк и их попеременного показа. Если в исходном материале 24 fps, то это ускоряет воспроизведение фильма на 4%.

  • PAL 2:2:2:2:2:2:2:2:2:2:2:3 пулдаун: Каждый 12-й кадр показывается за время длительности трёх полей, вместо двух. Это помогает избежать проблемы 4%-го ускорения, но делает обращение процесса существенно более сложным. Такие вещи обычно наблюдаются в музыкальных произведениях, где изменение скорости на 4% существенно повредит музыкальную партитуру.

  • NTSC 3:2 телесин: Кадры показываются попеременно за время длительности 3-х полей или 2-х полей. Это даёт частоту полей в 2.5 раза больше исходной частоты кадров. Результат также очень незначительно замедляется от 60 до 60000/1001 полей в секунду для поддержания частоты полей NTSC.

  • NTSC 2:2 пулдаун: Используется для отображения материала с 30 fps на NTSC. Так же мил, как и 2:2 PAL пулдаун.

Так же существуют методы для преобразования между NTSC и PAL видео, но подобные темы выходят за рамки данного руководства. Если Вам попался такой фильм, и Вы хотите кодировать его, лучшим решением будет найти копию в исходном формате. Преобразование между этими двумя форматами вносит большие потери и не может быть точно обращено, так что Ваше кодирование существенно пострадает, если оно делается из преобразованного источника.

Когда видео находится на DVD, последовательные пары полей группируются как кадр, даже если они не предназначены для одновременного отображения. Стандарт MPEG-2, используемый на DVD и цифровом TV предоставляет возможность одновременно кодировать исходные кадры с построчной развёрткой и сохранять число полей, в течении которых кадр должен быть показан, в его заголовке. Если был использован такой метод, фильм часто будет называться как "мягкий телесин", т.к. процесс только указывает DVD-плееру о необходимости применения пулдауна к фильму, не изменяя при этом сам фильм. Этот случай существенно предпочтителен, т.к. он может быть легко обращён (в действительности, проигнорирован) кодером и т.к. он сохраняет максимальное качество. Однако, многие широковещательные и DVD студии не используют надлежащую технологию кодирования и вместо этого производят фильмы с "жёстким телесином", где поля в действительности повторяются в кодированном MPEG-2.

Порядок действия в таких случаях будет описан позже в данном руководстве. Сейчас мы дадим Вам несколько советов по идентификации типа материала, с которым Вы работаете:

Регионы NTSC:

  • Если при просмотре Вашего фильма MPlayer выводит, что частота кадров была изменена до 24000/1001 и она никогда не меняется обратно, то это почти наверняка содержимое с построчной развёрткой, которое было подвергнуто "мягкому телесину".

  • Если MPlayer отображает попеременные переключения частоты кадров между 24000/1001 и 30000/1001, и Вы иногда видите "гребешки", есть несколько возможностей. Сегменты с 24000/1001 fps почти наверняка являются "мягко телесиненным" содержимым с построчной развёрткой, но части с 30000/1001 fps могут быть как "жёстко телесиненым" содержимым с 24000/1001 fps, так и NTSC видео с 60000/1001 полями в секунду. Используйте два нижеследующих руководства для определения того, с каким случаем Вы имеете дело.

  • Если MPlayer никогда не показывает изменения кадровой частоты и каждый отдельный кадр, где есть движение, оказывается гребёнкой, Ваш фильм есть NTSC видео с 60000/1001 полями в секунду.

  • Если MPlayer никогда не показывает изменения кадровой частоты и два кадра из каждых пяти оказываются гребёнкой, Ваш фильм представляет собой "жёстко телесиненное" содержимое с 24000/1001 fps.

Регионы PAL:

  • Если Вы не видите никакой гребёнки, Ваш фильм есть 2:2 пулдаун.

  • Если Вы видите попеременную гребёнку каждые полсекунды, Ваш фильм представляет собой 2:2:2:2:2:2:2:2:2:2:2:3 пулдаун.

  • Если Вы всегда видите гребёнки во время движения, значит Ваш фильм является PAL видео с 50 полями в секунду.

Подсказка:

MPlayer может замедлить воспроизведение фильма с опцией -speed или воспроизводить его покадрово. Попробуйте использовать опцию -speed 0.2 для очень медленного просмотра фильма или нажимайте клавишу "." для воспроизведения одного кадра за раз и идетнифицируйте образец, если не можете его увидеть на полной скорости.

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

Возможно кодировать Ваш фильм, широко варьируя качество. С современными видеокодерами и небольшим сжатием перед кодированием (уменьшением размера и шумов) возможно достичь очень хорошего качества при размере 700 МБ для 90-110-минутного широкоэкранного фильма. Более того, всё, кроме самых длинных фильмов, может быть кодировано с почти безупречным качеством на 1400 МБ.

Есть три подхода при кодировании видео: постоянный битпоток (CBR), постоянный квантователь и многопроходность (ABR или усреднённый битпоток).

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

Замечание:

Большинство кодеков, поддерживающих ABR кодирование, поддерживают только двупроходный режим, в то время как некоторые другие, такие как x264, Xvid и libavcodec поддерживают многопроходность, несколько улучшающую качество на каждом проходе, однако, это улучшение не измеримо и не заметно после 4-го прохода или около того. Поэтому, в данном разделе дву- и многопроходность будут использоваться взаимозаменяемо.

В каждом из этих режимов видеокодек (такой как libavcodec) разбивает видеокадр на макроблоки размером 16х16 пикселей и потом применяет квантователь к каждому макроблоку. Чем меньше квантоваль, тем лучше качество и выше битпоток. Метод, используемый видео кодером для определения того, какой квантователь использовать для данного макроблока, варьируется и подлежит тонкой настройке. (Это крайнее упрощение реального процесса, но основная концепция полезна для понимания.)

Когда Вы указываете постоянный битпоток, видеокодек будет кодировать видео, отбрасывая детали столько, сколько необходимо и настолько мало, насколько это возможно с целью оставаться ниже заданного битпотока. Если Вас действительно не волнует размер файла, Вы можете также использовать CBR и указать бесконечный битпоток. (На практике это означает значение, достаточно большое для обозначения отсутствия предела, например, 10000 Кбит.) В результате, без реального ограничения битпотока, кодек использует наименьший возможный квантователь для каждого макроблока (как указано опцией vqmin для libavcodec, равной 2 по умолчанию). Как только Вы укажите настолько низкий битпоток, что кодек будет вынужден использовать более высокий квантователь, Вы почти наверняка испортите качество Вашего видео. Чтобы избежать этого, Вам, вероятно, придётся уменьшить размеры Вашего видео, согласно методу, описанному далее в этом руководстве. В общем, Вам следует избегать CBR совсем, если Вы заботитесь о качестве.

С постоянным квантователем кодек использует для всех макроблоков один и тот же квантователь, указанный в опции vqscale (для libavcodec). Если Вы хотите рип наивысшего возможного качества, снова не взирая на битпоток, Вы можете использовать vqscale=2. Это приведёт к тому же битпотоку и PSNR (пику отношения сигнала к шуму), что и CBR с vbitrate=бесконечности и значением по умолчанию vqmin, равным 2.

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

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

Если Вы используете vqscale=2, то Вы теряете биты. Если Вы используете vqscale=3, то Вы не получаете рип наивысшего качества. Предположим, Вы делаете рип DVD, используя vqscale=3, результат получается 1800 Кбит. Если Вы сделаете двупроходное кодирование с vbitrate=1800, получившееся видео будет обладать лучшим качеством для того же битпотока.

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

Если размер не важен, хорошей отправной точкой для рипа очень высокого качества будет 2000 Кбит +/- 200 Кбит. Для видеоматериала с быстрым движением или высокой детализацией или просто если у Вас очень разборчивый глаз, Вы можете использовать 2400 или 2600. Для некоторых DVD Вы не заметите разницы на 1400 Кбит. Хорошей идеей является экспериментирование со сценами на разных битпотоках, чтобы почувствовать разницу.

Если Вашей целью является определённый размер, Вам нужно как-нибудь вычислить битпоток. Но перед этим, Вам нужно знать, сколько места нужно зарезервировать по аудио дорожку(и), так что Вам необходимо сперва извлечь их. Вы можете рассчитать битпоток с помощью следующей формулы: битпоток = (конечный_размер_в_МБайт - размер_звука_в_МБайт) * 1024 * 1024 / длительность_в_секундах * 8 / 1000. Например, для сжатия двухчасового фильма в 702 МБ CD, с 60 МБ аудио дорожкой, битпоток видео должен составлять: (702 - 60) * 1024 * 1024 / (120*60) * 8 / 1000 = 740 кбит/сек.

10.1.3. Ограничения для эффективного кодирования

Из-за особенностей MPEG-подобного сжатия, существуют различные ограничения, которым Вы должны следовать для достижения максимального качества. MPEG разбивает видео на квадраты 16х16, называемые макроблоками. Каждый макроблок состоит из 4 блоков 8х8 с информацией о люме (интенсивности) и двух блоков 8х8 с информацией о хроме (цвете) половинного разрешения (один для красно-бирюзовой оси и другой для жёлто-голубой оси). Даже если ширина и высота Вашего фильма не кратны 16, кодер всё равно использует нужное количество макроблоков 16х16 для покрытия всей области картинки, дополнительная область будет впустую потрачена. Так что в интересах максимизации качества при фиксированном размере файла, не стоит использовать размеры, не кратные 16.

У большинства DVD также есть определённое подобие чёрных полос на краях. Если Вы их оставите, это может сильно повредить качество несколькими путями.

  1. MPEG-подобное сжатие очень чувствительно к преобразованиям частотных интервалов, в частности, к дискретному косинусному преобразованию (DCT), которое аналогично преобразованию Фурье. Этот вид сжатия эффективен для представления образов и сглаженных переходов, но у него возникают проблемы с острыми краями. Для кодирования последних Вам нужно гораздо больше битов, а иначе у Вас появится артефакт, известный как ореолы.

    Частотные преобразования (DCT) выполняются независимо для каждого макроблока (на самом деле, для каждого блока), так что эта проблема возникает только в случае попадания острого края внутрь блока. Если Ваши чёрные поля возникают точно на границах, кратных 16 пикселям, это не проблема. Однако, чёрные полосы на DVD редко хорошо расположены, так что на практике Вам всегда придётся усекать стороны для избежания этих проблем.

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

  1. Для каждого макроблока MPEG-подобное сжатие сохраняет вектор, определяющий какая часть предыдущего кадра должна быть скопирована в этот макроблок как основа для предсказания следующего кадра. Кодированию подлежит только оставшаяся разность. Если макроблок простирается до края картинки и содержит часть чёрной полосы, то векторы движения других частей картинки перепишут чёрную полосу. Это означает, что много битов нужно потратить либо на повторное чернение переписанной полосы, либо (что более вероятно) вектор движения не будет использован вовсе и все изменения для этого макроблока будут явно кодированы. Так или иначе, эффективность кодирования существенно уменьшается.

    Ещё раз, эта проблема возникает только в случае, если чёрные полосы не укладываются в границы, кратные 16.

  2. Наконец, предположим, что у нас есть находящийся внутри картинки макроблок и объект движется в этот блок от края изображения. MPEG-подобное кодирование не может сказать "скопируй ту часть, что внутри картинки, но не чёрную полосу". Так что чёрная полоса также будет скопирована внутрь, в результате чего масса битов будет потрачена на кодирование части изображения, которое должно быть на месте полосы.

    Для случаев, когда всё изображение движется к краю кодируемой области, у MPEG есть специальные оптимизации для повторяющегося копирования пикселей к краю картинки, когда вектор движения идёт извне области кодирования. Эта возможность становится бесполезной, если у фильма есть чёрные полосы. В отличии от случаев 1 и 2, выравнивание границ до кратности 16 здесь не поможет.

  3. Несмотря на то, что границы полностью чёрные и никогда не изменяются, существуют, как минимум, определённые накладные расходы, связанные с наличием большего числа макроблоков.

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

10.1.4. Усечение и масштабирование

Вспомните из предыдущего раздела, что конечный размер картинки, подлежащей кодированию, должен быть кратен 16 (как высота, так и ширина). Это может быть достигнуто усечением, масштабированием или комбинацией того и другого.

Есть несколько рекомендаций для усечения, которым необходимо следовать для избежания повреждения фильма. Обычный формат YUV, 4:2:0, сохраняет цветность (информацию о цвете) половинной дискретизации, т.е. цветность сохраняется в два раза реже в каждом направлении, чем яркостность (информация об интенсивности). Рассмотрите следующую диаграмму, где L обозначает точки дискретизации яркостности и C — цветности.

LLLLLLLL
CCCC
LLLLLLLL
LLLLLLLL
CCCC
LLLLLLLL

Как Вы видите, строки и столбцы изображения естественным образом идут в парах. Поэтому смещения и размеры усечения должны быть чётными числами. Иначе цветность перестанет правильно соответствовать яркостности. Теоретически возможно усечение с нечётными смещениями, но оно потребует переквантования цветности, что потенциально является операцией с потерей качества и не поддерживается фильтром усечения сторон crop.

Более того, видео с чересстрочной развёрткой дискретизируется следующим образом:

Верхнее полеНижнее поле
LLLLLLLL        
CCCC        
        LLLLLLLL
LLLLLLLL        
        CCCC
        LLLLLLLL
LLLLLLLL        
CCCC        
        LLLLLLLL
LLLLLLLL        
        CCCC
        LLLLLLLL

Как Вы видите, структура повторяется только после 4 строк. Так что для чересстрочного видео Ваше y-смещение и высота усечения должны быть кратны 4.

Естественные разрешения DVD составляют 720x480 для NTSC и 720x576 для PAL, но существует флаг соотношения сторон, который указывает является ли видео полноэкранным (4:3) или широкоэкранным (16:9). Многие (если не большинство) широкоэкранных DVD не точно соответствуют формату 16:9 и могут быть как 1.85:1, так и 2.35:1 (кинематографический формат). Это означает, что в видео будут чёрные полосы, которые нужно усечь.

MPlayer предоставляет фильтр обнаружения усечения, который определяет прямоугольник, до которго нужно усечь (-vf cropdetect). Запустите MPlayer с -vf cropdetect и он выдаст настройки усечения для удаления полей. С целью получения точных параметров усечения, Вы должны проигрывать фильм достаточно долго для того, чтоб была использована вся область изображения.

Затем проверьте значения, полученные с помощью MPlayer, используя командную строку, выведенную cropdetect, и подстройте прямоугольник при необходимости. Фильтр rectangle может быть полезен, позволив Вам интерактивно менять прямоугольник усечения для Вашего фильма. Не забывайте следовать указанным выше руководствам по делимости, чтобы не испортить выравнивание цветности.

В ряде случаев масштабирование может быть нежелательным. Масштабирование по вертикальному направлению затруднено для чересстрочного видео, и если Вы хотите сохранить чересстрочность, Вам, как правило, будет необходимо воздерживаться от масштабирования. Если Вы не будете масштабировать, но всё ещё желаете размеры, кратные 16, то Вам придётся проводить излишнее усечение. Не проводите неполное усечение, поскольку чёрные полосы очень плохи для кодирования!

Поскольку MPEG-4 использует макроблоки 16х16, Вы должны убедиться, что каждое измерение кодируемого видео кратно 16; иначе Вы ухудшите качество, особенно на малых битпотоках. Вы можете сделать это, округлив ширину и высоту прямоугольника усечения до ближайшего меньшего целого, кратного 16. Как указано выше, при усечении Вам необходимо увеличить смещение по Y на половину разности старой и новой высоты, так что полученное видео будет браться из центра кадра. И из-за способа дискретизации DVD видео, убедитесь, что смещение есть чётное число. (Фактически, возьмите за правило никогда не использовать нечётные величины для любых параметров усечения или масштабирования видео.) Если Вы беспокоитесь из-за нескольких излишне отброшенных битов, возможно, Вы предпочтёте взамен масштабировать видео. Мы рассмотрим это ниже в нашем примере. В действительности, Вы можете доверить фильтру cropdetect сделать для Вас всё вышеупомянутое, т.к. у него есть необязательный параметр округления round, равный 16 по умолчанию.

Также будьте осторожны с "полутёмными" пикселями на краях. Убедитесь, что они тоже отрезаются, иначе Вы будете тратить биты, которым есть лучшее применение.

После всего выше сказанного и сделанного, Вы, вероятно, получите видео не точно формата 1:85.1 или 2.35:1, а с чем-то близким к этому. Вы можете вычислить новый коэффициент соотношения сторон вручную, но MEncoder предоставляет опцию для libavcodec, называемую autoaspect, которая сделает это для Вас. Ни в коем случае не увеличивайте размер этого видео с целью квадратизации пикселей, если Вы не желаете впустую потратить место на жёстком диске. Масштабирование должно выполняться при воспроизведении, и плеер использует коэффициент соотношения сторон, сохранённый в AVI, для определения правильного разрешения. К сожалению, не все плееры используют эту информацию автомасштабирования, поэтому Вам всё ещё может быть необходимо перемасштабирование.

10.1.5. Выбор разрешения и битпотока

Если Вы не собираетесь кодировать в режиме постоянного квантователя, Вам нужно выбрать битпоток. Понятие битпотока очень просто: это среднее число битов, которые будут использованы для сохранения Вашего фильма, в секунду. Обычно битпоток измеряется в килобитах (1000 бит) в секунду. Размер Вашего фильма на диске есть битпоток, умноженный на длительность фильма, плюс небольшие накладные расходы (см. раздел контейнер AVI для примера). Остальные параметры, такие как масштабирование, усечение и т.п. не изменят размер файла, пока Вы также не измените битпоток!

Битпоток изменяется не пропорционально разрешению. То есть файл разрешением 320х240 с 200 кбит/сек не будет того же качества, что этот же фильм разрешением 640х480 и 800 кбит/сек! Для этого есть две причины:

  1. Восприятие: Вы сильнее замечаете MPEG артефакты, если они больше! Артефакты возникают на масштабе блоков (8х8). Ваш глаз не увидит ошибки в 4800 маленьких блоков так же легко, как и в 1200 больших блоков (предполагая масштабирование обоих фильмов на полный экран).

  2. Теоретическая: Когда Вы уменьшаете размер изображения, но продолжаете использовать блоки того же размера (8х8) для пространственных частотных преобразований, Вы перемещаете больше данных в высокочастотные полосы. Грубо говоря, каждый пиксель содержит больше деталей, чем раньше. Так что несмотря на то, что Ваша картинка с уменьшенным масштабом содержит 1/4 информации в пространственных направлениях, она всё ещё может содержать большУю часть информации в частотных интервалах (предполагая, что высокие частоты были не использованы в оригинальном 640х480 изображении).

Последние руководства рекомендовали выбор битпотока и разрешения, основываясь на приближении "бит на пиксель", но это обычно не верно из-за упомянутых выше причин. Похоже, лучшей оценкой является рост битпотока пропорционально квадратному корню разрешения, так что 320х240 и 400 кбит/сек должно быть сравнимо с 640х480 и 800 кбит/сек. Однако, это не было строго проверено теоретически или эмпирически. Кроме того, из-за существенного отличия фильмов по уровню шума, деталей, количества движения и т.п., тщетно давать общие рекомендации для "битов на длину диагонали" (аналог битов на пиксель, используя квадратный корень).

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

10.1.5.1. Расчёт разрешения

Следующие шаги помогут Вам рассчитать разрешение для Вашего кодирования без слишком сильного искажения видео, учитывая несколько видов информации об исходном видео. Прежде всего, Вам необходимо рассчитать коэффициент соотношения сторон для кодированного видео: ARc = (Wc x (ARa / PRdvd )) / Hc

где:

  • Wc и Hc — ширина и высота усечённого видео,

  • ARa — коэффициент соотношения сторон изображения, обычно 4/3 или 16/9,

  • PRdvd — отношение пикселей DVD, что равно 1.25=(720/576) для PAL DVD и 1.5=(720/480) для NTSC DVD.

Затем Вы можете рассчитать разрешение по X и Y, согласно определённому фактору качества сжатия (CQ): ResY = INT(SQRT( 1000*Битпоток/25/ARc/CQ )/16) * 16 и ResX = INT( ResY * ARc / 16) * 16.

Хорошо, но что такое CQ? CQ соответствует числу битов на пиксель и на кадр для кодирования. Грубо говоря, чем больше CQ, тем меньше вероятность увидеть артефакты кодирования. Однако, если у Вас есть заданный размер для Вашего фильма (например, 1 или 2 CD), есть ограниченное общее число битов, которые Вы можете потратить; поэтому важно найти хороший компромисс между сжимаемостью и качеством.

CQ зависит от битпотока, эффективности видеокодека и разрешения фильма. Обычно, в целях увеличения CQ, Вам нужно будет уменьшить размер фильма, при условии, что битпоток, вычисленный как функция конечного размера, и длина фильма постоянны. С MPEG-4 ASP кодеками, такими как Xvid и libavcodec, CQ меньше 0.18 обычно приводит к изображению с большим числом сегментов "квадратиками", из-за недостаточного числа битов для кодирования информации в каждом макроблоке. (MPEG4, как и многие другие кодеки, группирует пиксели в блоки по несколько пикселей для сжатия изображения; если битов не хватает, границы этих блоков заметны.) Следовательно, благоразумно выбрать CQ в диапазоне от 0.20 до 0.22 для рипа на 1 CD и 0.26-0.28 для рипа на 2 CD при использовании стандартных опций кодирования. Более продвинутые опции кодирования, такие как указанные для libavcodec и Xvid должны сделать возможным получение того же качества с CQ в диапазоне от 0.18 до 0.20 для рипа на 1 CD и 0.24-0.26 для рипа на 2 CD. Используя MPEG-4 AVC кодеки, такие как x264, Вы можете использовать CQ в диапазоне от 0.14 до 0.16 со стандартными опциями кодирования и должны суметь достичь таких низких значений, как 0.10 — 0.12 с помощью продвинутых опций кодирования x264.

Пожалуйста, обратите внимание, что CQ — лишь показательная величина, т.к. она зависит от кодируемого содержимого; CQ 0.18 может хорошо смотреться для Бергмана (Bergman), в отличии от такого фильма как Матрица (The Matrix), содержащего много сцен с быстрым движением. С другой стороны, бесполезно увеличивать CQ выше 0.30, т.к. Вы будете тратить биты без заметного увеличения качества. Так же обратите внимание, что, как было указано выше в данном руководстве, фильмам с низким разрешением (например, по сравнению с DVD) необходим более высокий CQ для того, чтоб они выглядели хорошо.

10.1.6. Фильтрация

Изучение использования видео фильтров MEncoder важно для получения хороших результатов кодирования. Вся обработка видео выполняется посредством фильтров: усечение, масштабирование, подстройка цвета, удаление шума, увеличение чёткости, деинтерлейс (преобразование видео из чересстрочной развёртки в построчную), телесин, обратный телесин и удаление блочной сегментации — и это лишь некоторые из них. Вместе с огромным количеством поддерживаемых входных форматов, разнообразие фильтров, доступных в MEncoder, является одним из его основных достоинств над другими аналогичными программами.

Фильтры загружаются в цепочку с помощью опции -vf:

-vf фильтр1=опции,фильтр2=опции,...

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

Фильтры действуют на видео в порядке их загрузки. Например, следующая цепочка:

-vf crop=688:464:12:4,scale=640:464

сперва усечёт область изображения до 688х464 с верхним левым углом (12,4), а затем масштабирует результат до 640х464.

Некоторые фильтры нужно загружать в начале цепочки фильтров (или рядом с ним) с целью получения преимущества от использования информации после видеодекодера, которая будет потеряна или искажена другими фильтрами. Важнейшими примерами являются: pp (постобработка, только при выполнении операций удаления блочной сегментации (deblocking) или увеличения чёткости краёв (deringing)), spp (другой фильтр постобработки, служащий для удаления артефактов MPEG), pullup (обратный телесин), и softpulldown (для преобразования мягкого телесина в жёсткий).

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

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

Однако, есть одна вещь, которую Вы, быть может, захотите сделать — это пропустить видео через очень слабый фильтр удаления шумов, такой как -vf hqdn3d=2:1:2. Ещё раз, причиной этому является то, что этим битам можно найти лучшее применение: зачем тратить их, кодируя шум, если Вы просто можете вернуть этот шум в процессе воспроизведения? Увеличение параметров для hqdn3d дополнительно улучшит сжимаемость, но увеличив значения слишком сильно, Вы рискуете ухудшить различимость изображения. Рекомендованные выше значения (2:1:2) слегка консервативны; не бойтесь экспериментировать с более высокими значениями и самостоятельно оценивать результаты.

10.1.7. Чересстрочная развёртка и телесин

Почти все фильмы снимаются при 24 fps [кадр/сек]. Поскольку в NTSC используется 30000/1001 fps, нужно выполнить некоторую обработку для такого 24 fps видео, чтобы оно корректно воспроизводилось при кадровой частоте NTSC. Этот процесс называется 3:2 пулдаун, обычно называемый телесин (поскольку пулдаун часто применяется в процессе показа телевизионного фильма, англ. telecine); и в упрощенном описании это работает путём замедления фильма до 24000/1001 fps и повтора каждого четвёртого кадра.

Однако, никакой специальной обработки не выполняется для видео на PAL DVD, которое воспроизводится при 25 fps. (Технически PAL может быть подверженным телесину, называемому 2:2 пулдаун, но на практике это не применяется). 24 fps фильм просто проигрывается на 25 fps. В результате фильм воспроизводится слегка быстрее, но если Вы не пришелец, то, вероятно, не заметите разницы. У большинства PAL DVD аудио скорректировано по высоте звука так, что, воспроизводясь при 25 fps, оно звучит нормально, несмотря на то, что аудиодорожка (и, следовательно, весь фильм) проигрываются на 4% быстрее, чем NTSC DVD.

Поскольку видео на PAL DVD не переделывается, Вам не стоит беспокоится о частоте кадров. У источника 25 fps и у Вашего рипа будет 25 fps. Однако, если Вы делаете рип NTSC DVD фильма, Вам, быть может, придётся выполнить обратный телесин.

Для фильмов, снятых на 24 fps, видео на NTSC DVD идёт либо с телесином 30000/1001, либо с построчной развёрткой 24000/1001 fps и предназначается для телесина на лету с помощью DVD плеера. С другой стороны, TV сериалы идут обычно только с чересстрочной развёрткой, но без телесина. Это не строгое правило: есть сериалы с чересстрочной развёрткой (например, Баффи, Убийца Вампиров [Buffy the Vampire Slayer]), в то время как другие представляют собой смесь построчной и чересстрочной развёртки (такие как Ангел [Angel] или 24).

Настоятельно рекомендуется прочитать раздел о работе с телесином и чересстрочной развёрткой в NTSC DVD для изучения способов обработки в разных ситуациях.

Однако, если Вы преимущественно делаете рипы фильмов, Вы, скорее всего, имеете дело с 24 fps видео либо с построчной развёрткой, либо с подвергнутым телесину; в последнем случае Вы можете использовать pullup фильтр: -vf pullup,softskip.

10.1.8. Кодирование чересстрочного видео

Если Вы желаете кодировать фильм с чересстрочной развёрткой (NTSC или PAL видео), Вам нужно решить, будете ли Вы его преобразовывать в построчную развёртку или нет. Хотя такое преобразование (деинтерлейс) сделает Ваш фильм пригодным для дисплеев с построчной развёрткой, таких как компьютерные мониторы и проекторы, это будет иметь свою цену: частота полей уменьшится вдвое от 50 или 60000/1001 до 25 или 30000/1001 поля в секунду, и примерно половина информации в Вашем фильме будет потеряна в сценах со значительным движением.

Поэтому, если Вы кодируете для высококачественных архивных целей, не рекомендуется делать деинтерлейс. Вы всегда можете преобразовать развёртку фильма в процессе воспроизведения (при воспроизведении на устройствах с построчной развёрткой). Мощность современных компьютеров вынуждает плееры использовать фильтр деинтерлейса, что слегка ухудшает качество изображения. Но плееры будущего будут способны имитировать дисплей TV с чересстрочной развёрткой, выполняя деинтерлейс на полной частоте полей и интерполируя 50 или 60000/1001 кадров в секунду для чересстрочного видео.

С чересстрочным видео нужно работать особым образом:

  1. Высота усечения и смещение по оси y должны быть кратны 4.

  2. Любое вертикальное масштабирование должно выполняться в режиме чересстрочной развёртки.

  3. Фильтры постобработки и удаления шума могут не работать как ожидается, только если Вы особо не позаботитесь об их применении к одному полю за раз, иначе они могут повредить видео при неверном использовании.

Учитывая вышесказанное, вот наш первый пример:

mencoder захват.avi -mc 0 -oac lavc -ovc lavc -lavcopts \
vcodec=mpeg2video:vbitrate=6000:ilme:ildct:acodec=mp2:abitrate=224

Обратите внимание на опции ilme и ildct.

10.1.9. Замечания об аудио/видео синхронизации

Алгоритмы аудио/видео (A/V) синхронизации MEncoder были разработаны с целью восстановления файлов с повреждённой синхронизацией. Однако, в ряде случаев они могут привести к ненужному пропуску или повторению кадров и, возможно, к лёгкой A/V рассинхронизации корректных входных данных (конечно, проблемы A/V синхронизации возникают только при обработке или копировании аудиотрека при кодировании видео, что настоятельно рекомендуется). Поэтому Вы можете переключиться на базовую A/V синхронизацию с помощью опции -mc 0 или разместить это в конфигурационном файле ~/.mplayer/mencoder, если Вы работаете только с хорошими источниками (DVD, TV-захват, высококачественные MPEG-4 рипы и т.п.), а не с повреждёнными файлами ASF/RM/MOV.

Если Вы хотите дополнительно защититься от странных пропусков и повторений кадров, Вы можете одновременно использовать опции -mc 0 и -noskip. Это предотвратит любую A/V коррекцию, и будет копировать кадры один в один, так что Вы не сможете это использовать, если будете применять какие-либо фильтры, которые непредсказуемо добавляют или отбрасывают кадры, либо если у Вашего входного файла переменный битопоток! Поэтому использование -noskip в общем случае не рекомендуется.

Сообщалось о том, что так называемое трёхпроходное аудиокодирование, поддерживаемое MEncoder, вызывало A/V рассинхронизацию. Это наверняка произойдёт при использовании совместно с некоторыми фильтрами, поэтому сейчас не рекомендуется использовать трёхпроходный аудио режим. Эта возможность оставлена только для совместимости и для опытных пользователей, понимающих когда это безопасно, а когда нет. Если Вы ранее никогда не слышали о трёхпроходном режиме, забудьте даже о том, что мы его упоминали!

Также были сообщения об A/V рассинхронизации при кодировании со стандартного ввода (stdin) с помощью MEncoder. Не делайте этого! Всегда взамен используйте файл или CD/DVD и т.п. устройство.

10.1.10. Выбор видеокодека

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

  • Эффективность сжатия: Достаточно очевидно, что большинство кодеков нового поколения разработаны для увеличения качества и степени сжатия. Поэтому, авторы данного руководства и многие другие люди полагают, что Вы не можете ошибиться [1], выбирая MPEG-4 AVC кодеки (например, x264) вместо таких MPEG-4 ASP кодеков, как libavcodec MPEG-4 или Xvid. (Опытные разработчики кодеков могут быть заинтересованы в ознакомлении с точкой зрения Михаэля Нидермайера (Michael Niedermayer) "почему MPEG4-ASP отстой".) Аналогично, Вы должны получить лучшее качество с MPEG-4 ASP, по сравнению с MPEG-2 кодеками.

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

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

  • Аппаратная совместимость: Обычно необходимо длительное время для включения поддержки последних видеокодеков в автономные видеоплееры. В итоге, большинство поддерживает только MPEG-1 (наподобие VCD, XVCD и KVCD), MPEG-2 (например, DVD, SVCD и KVCD) и MPEG-4 ASP (например, DivX, libavcodec LMP4 и Xvid) (Осторожно: обычно поддерживаются не все возможности MPEG-4 ASP). Пожалуйста, обратитесь к технической спецификации Вашего плеера (если она доступна) или к гугл (google) для детальной информации.

  • Лучшее соотношение качества и времени кодирования: Кодеки, уже использующиеся определённое время (например, libavcodec MPEG-4 и Xvid) обычно сильно оптимизированы всевозможными остроумными алгоритмами и ассемблерным SIMD кодом. Поэтому они обладают тенденцией достижения лучшего соотношения качества к времени кодирования. Однако, у них могут быть некоторые очень продвинутые опции, которые, будучи включенными, сделают кодирование очень медленным ради несущественного выигрыша.

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

    Вы так же можете рассмотреть вариант использования многопоточного кодека, хотя это полезно только для пользователей машин с несколькими процессорами. libavcodec MPEG-4 позволяет это, но выигрыш в скорости ограничен и есть небольшой отрицательный эффект для качества картинки. Многопоточное кодирование Xvid, включаемое опцией threads, может использоваться для ускорения кодирования (на примерно 40-60% в типичных случаях) с небольшим ухудшением картинки или вообще без него. x264 также позволяет многопоточное кодирование, что обычно ускоряет процесс на 94% для каждого CPU ядра с уменьшением PSNR от 0.005 дБ до 0.01 дБ при типичных настройках.

  • Личные предпочтения: Здесь всё становится почти неразумным: из-за тех же причин, по которым одни придерживаются DivX 3 в течении лет, в то время как новые кодеки уже творят чудеса, другие люди предпочитают Xvid или libavcodec MPEG-4 использованию x264.

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

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

10.1.11. Аудио

Аудио — это гораздо более простая проблема: если Вы беспокоитесь о качестве, просто оставьте всё как есть. Даже потоки AC-3 5.1 не более чем 448 Кбит/с и они стоят каждого бита. Вы можете соблазниться перекодированием аудио в высококачественный Vorbis (он же ogg формат), но лишь то, что у Вас сегодня нет A/V приёмника для пропускания AC-3, не означает, что у Вас не будет его завтра. Для жизнеспособности Ваших DVD рипов в будущем, сохраняйте поток AC-3. Вы можете сохранить поток AC-3, копируя его непосредственно в видеопоток в процессе кодирования. Вы также можете извлечь AC-3 поток с целью мультиплексирования его в контейнеры наподобие NUT или Matroska (Матрёшка).

mplayer файл_источника.vob -aid 129 -dumpaudio -dumpfile звук.ac3

сохранит в файл звук.ac3 аудиодорожку с номером 129 из файла файл_источника.vob (Обратите внимание: DVD VOB файлы обычно используют нумерацию аудио, отличную от стандартной, что означает, что аудиодорожка VOB 129 — это вторая аудиодорожка файла).

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

Не используйте -nosound при кодировании файла с аудио, даже если позже Вы будете отдельно кодировать и мультеплексировать аудио. Хотя это может работать в идеальных случаях, использование -nosound обычно скрывает ряд проблем в Ваших настройках кодирования в командной строке. Другими словами, наличие звуковой дорожки в процессе кодирования гарантирует Вам, что в случае отсутствия сообщений, подобных «Слишком много аудиопакетов в буфере», у Вас будет получена правильная синхронизация.

Вам необходимо обработать звук с помощью MEncoder. Например, Вы можете копировать исходную звуковую дорожку в процессе кодирования с помощью -oac copy или преобразовать её в "лёгкий" 4 кГц моно WAV PCM с помощью -oac pcm -channels 1 -srate 4000. Иначе, в ряде случаев, будет создаваться видео файл, рассинхронизированный с аудио. Такие случаи происходят, когда число кадров видео исходного файла не совпадает с полной длиной кадров аудио, или когда были разрывы/сшивания потока, где появились пропущенные или излишние аудиокадры. Правильным решением подобных проблем является вставка тишины или усечение аудио в таких точках. Однако, MPlayer