13 - Мультимедиа

13.1 - Как настроить моё аудио-устройство?



В OpenBSD к аудиоустройствам относятся /dev/audio, /dev/sound, /dev/audioctl и /dev/mixer. Хороший обзор уровня звукового драйвера есть в документации audio(4)


Драйвера всех поддерживаемых аудио-устройств уже включены в ядро GENERIC, так что драйвера не нужно устанавливать или настраивать дополнительно. Чтобы выяснить опции для конкретного звукового чипа, нужно знать, какой именно чип используется. Список поддерживаемых чипов можно анйти на странице аппаратной совместимости для данной платформы. Когда OpenBSD уже исполняется, поищем информацию о драйвере звука в результатах dmesg(1) - потом можно выяснить подробности в документации к распознанному устройству. Например, dmesg сообщает нам о микросхеме обработки звука следующее:


auich0 at pci0 dev 31 function 5 "Intel 82801BA AC97" rev 0x04: irq 10, ICH2 AC97
ac97: codec id 0x41445360 (Analog Devices AD1885)
ac97: codec features headphone, Analog Devices Phat Stereo
audio0 at auich0


Проверить, работет ли звуковое устройство, можно отправив в него какой-нибудь звуковой файл (обычно, с расширением .au). Если такого файла нет в наличии, то можно отправить любой текстовый или двоичный файл:


$ cat filename > /dev/audio


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

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

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

    посланный файл слишком маленький. Повторите попытку с файлом как минимум 10 кб.
    чип распознан и настроен корректно, но звук выключен (muted) и должен быть включен чтобы его услышать, см. ниже
    чип распознан но корректно не настроен. Возможно у вас старая ISA карта, которой требуется настройка с другими адресами ввода-вывода и значением IRQ, чтобы избежать конфиликтов с другим оборудованием. Можете попробовать различные комбинации с помощью User Kernel Configuration (UKC).
    Карта/чипсет не полностью поддерживаются

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

    Найти информацию о вашем звуковом устройстве. Используйте документацию или поиск в интернет для нахождения его спецификации. Это может действительно помочь в установлении причины проблемы.
    Выключите все заглушающие звук опции (mute) на всех выходах (см. ниже) перед тем, как сообщить о проблеме. Иногда указанные выходы на звуковом устройстве не соответствуют действительности. Например, телефонный выход может быть перепутан с линейным выходом.
    Возможно, используемый вами драйвер звукового устройства не очень хорошо работает с данным устройством, и лучший результат можно получить, используя другой драйвер. Это, конечно, не так просто определить. Надо внимательно изучить вывод dmesg(1), и найти строки, относящиеся к подключению звукового драйвера. Если вы видите, что подключаются несколько драйверов (или есть попытки подключения), перепробуйте их по одному, используя User Kernel Configuration (UKC).
    Вы имеете устройство, работающее только с фиксированной частотой дискретизации. В данном случае есть некоторые аудиоутилиты, поддерживающие изменение частоты дискретизации, как описывается в разделе Воспроизведение различных аудиоформатов.

Для настройки параметров аудиоустройства, вроде частоты дискретизации, вы можете использовать audioctl(1). Для настройки громкости и других параметров микшера, вы можете использовать mixerctl(1). Обе утилиты - часть базовой системы.

К примеру, для установки в 200 значения громкости левого и правого каналов, используется, к примеру (смотрите примечание 2 ниже)


  $ mixerctl outputs.master=200,200
  outputs.master: 255,255 -> 207,207


Заметьте, значение стало 207. причина этого в том, что используется кодек AC'97, шаг регулировки громкости у которого 5 бит, таким образом допустимо всего 32 значения. Очевидно, другие устройства будут иметь другой шаг.

Для выключения заглушения звука (unmute) используем


  $ mixerctl outputs.master.mute=off
  outputs.master.mute: on -> off



Для сохранения значений редактируйте /etc/mixerctl.conf, к примеру:


  $ cat /etc/mixerctl.conf
  outputs.master=200,200
  outputs.master.mute=off
  outputs.headphones=160,160
  outputs.headphones.mute=off



   Примечание 1: Вы можете выдеть больше входов/выходов, чем есть на вашей звуковой или материнской плате. Потому, что аудиоконтроллеры сейчас стоят дешевле разъемов, поэтому не все входы/выходы имеются на вашей плате и не все функции аудиоконтроллера используются.

   Примечание 2: Выходы вашего аудиоустройства могут быть маркированы по-разному. К примеру, у вас может не быть "outputs.master" как в указанном примере, а вам необходимо настроить "outputs.output" или что-нибудь в этом роде. Это зависит от аудиоустройства, и вы легко можете эти обозначения посмотреть, выполнив


  $ mixerctl -a




13.2 - Воспроизведение различных аудиоформатов




Цифровое аудио



Звуковые форматы без потери качества (AU, PCM, WAV, FLAC, TTA)

Некоторые из звуковых форматов без потери качества можно воспроизвести без применения программ сторонних производителей, при условии, что они содержат несжатые цифровые фрагменты в виде наборов байтов. Это форматы Sun audio (AU), "сырой" PCM (без заголовков) и RIFF WAV.

Для воспроизведения такого файла нужно знать его параметры: тип кодирования, количество каналов, частота дискретизации, бит/сэмпл. Их можно определить с помощью утилиты file(1):


  $ file music.au
  music.au:  Sun/NeXT audio data: 16-bit linear PCM, stereo, 44100 Hz
  $ file music.wav
  music.wav: Microsoft RIFF, WAVE audio data, 16 bit, stereo 44100 Hz



Единственное, что в данных примерах надо узнать - что они используют остроконечный (little-endian) порядок байт и линейное квантование с сохранением знака (например, для 8-битных сэмплов диапазон значений от -128 до 127). Вы можете выяснить это выведя заголовок с помощью hexdump(1). Если файл без заголовка (raw), необходимо перед воспроизведением знать его параметры. Установите эти параметры используя audioctl(1).


  play.encoding=slinear_le
  play.rate=44100
  play.channels=2
  play.precision=16



Затем отправляем звуквой файл на аудиоустройство:


  $ cat music.au > /dev/sound


Если установлены нужные параметры, вы услышите ожидаемое.

Примечание: всегда используйте /dev/sound, не /dev/audio, если вы хотите, чтобы использовались параметры, установленные audioctl.

Можно использовать и другие утилиты, типа aucat(1), audio/waveplay из пакетов или портов. Конечно, популярные программы типа XMMS также могут воспроизводить эти файлы, как и файлы других аудиоформатов.

Наряду с вышеупомянутыми, есть аудиоформаты, применяющие сжатие без потерь. Это, например, Free Lossless Audio Codec (FLAC) или TTA. FLAC implementation портирована в OpenBSD и может быть найдена в audio/flac в пакетах или портах.


Аудиоформаты со сжатием с потерей данных (Ogg Vorbis, MP3, WMA, AAC)



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

Хорошим примером является бесплатный, открытый и незапатентованный формат Ogg Vorbis. Для проигрывания файлов Ogg Vorbis можно использовать программу ogg123, входящую в состав пакета audio/vorbis-tools Например:


  $ ogg123 music.ogg

  Audio Device:   Sun audio driver output

  Playing: music.ogg
  Ogg Vorbis stream: 2 channel, 44100 Hz
  Time: 00:02.95 [02:21.45] of 02:24.40  (133.1 kbps)  Output Buffer  87.5%


Конечно, надстройки для воспроизведения Ogg Vorbis существуют для многих программ, работающих со звуком.

Другой пример - очень популярная система кодирования MPEG-1 Audio Layer 3 (MP3), которая имеет некоторые сложности с патентованием и передачей лицензии. Многие программы могут воспроизводить файлы mp3 - стоит только в раздел audio системы портов/пакетов и выбрать то, что приглянётся.

Как насчёт патентованного формата Windows Media Audio (WMA)? Файлы в этом формате умеет воспроизводить x11/mplayer, который использует FFmpeg.

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


Как управиться со звуковыми устройствами с фиксированной частотой дискретизации



Некоторые звуковые устройства могут воспроизводить звук только с фиксированной частотой дискретизации. Например, можно пытаться воспроизвести файл с частотой дискретизации 22050 Гц на устройстве, которое понимает только 48000 Гц.

Есть программы для работы со звуком среди пакетов и портов, которые обходят эту проблему через повторную дискретизацию. Например, у x11/mplayer есть ключ "-srate" для указания желаемой частоты дискретизации на выходе. Можно установить его в значение, подходящее для устройства. artsd из KDE и некоторые игры поддерживают похожие возможности. Поддерживает ли определённое приложение повторную дискретизацию, можно узнать из документации.


Синтезированный звук




MIDI



Протокол Musical Instrument Digital Interface (MIDI) предоставляет стандартизованные и эффективные средства представления музыкальной информации в электронном виде. MIDI-файл может быть намного меньше, сравнивая с оцифрованным звуком потому что он содержит только команды для синтезатора, необходимые для воспроизведения звука.

Две технологии широко используются в синтезировании звука:

    Синтез с использованием частотной модуляции (Frequency Modulation (FM) Synthesis): старый метод аппроксимации сигнала каждого инструмента с использованием набора параметров, плоховатого качества, недорогой в реализации и, потому, используемый во многих звуковых картах.
    Таблично-волновой синтез (Wavetable Synthesis): метод поновее, использует маленькие оцифрованные фрагменты звучания настоящих инструментов, качество получше, требует наличия памяти на звуковой карте и встречается только на дорогих звуковых картах.

Большинство необходимой информации о MIDI на OpenBSD можно найти в руководстве midi(4).

Основным инструментом стандартной поддержки MIDI-файлов является midiplay(1). Список доступных MIDI-устройств можно получить следующим образом:


  $ midiplay -l
  0: SB MIDI UART
  1: SB Yamaha OPL3
  2: PC speaker



В этом примере есть выход UART, к которому можно подключить внешнее MIDI-устройство, встроенный синтезатор Yamaha OPL3 FM и простой динамик.

Примечание: Не у всех звуковых карт есть встроенный MIDI-синтезатор, может оказаться, что будут видны только выход UART и динамик.

Восвпроизведение стандартного MIDI-файла в данном примере через синтезатор OPL3 легко как:


  $ midiplay -d 1 file.mid



Заметим, что явно задаётся номер 1 MIDI-устройства потому что по умолчанию используется устройство номер 0.

Больше информации можно найти здесь.

MOD

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

Самым простым способом проигрывания MOD-файлов под OpenBSD является использования программы XMMS, имеющейся в портах и пакетах. Нужно устанавливать суб-пакет -mikmod для XMMS для использования библиотеки MikMod, которая поддерживает форматы MOD, S3M, IT и XM.

Можно найти много разных "трекеров" ("trackers") в разделе audio системы портов и пакетов, например, tracker, sountracker. Они позволяют не только проигрывать, но и создавать свои модули. Однако, не все форматы трекеров поддерживаются инструментами из портов. Предложить порт своего любимого трекера - всегда пожалуйста.


13.3 - Как можно воспроизвести аудио CD в OpenBSD?



Для воспроизведения аудио CD используя аналоговый выход CD привода вы можете

    Использовать выход головных телефонов, обычно размещенный на передней панели привода.
    Подключиться к аудиовыходу вашей звуковой карты. Да, будет необходим дополнительный аудиокабель от привода к карте кроме шины данных (SCSI/IDE) и кабеля питания.

Замечательная CLI-утилита cdio(1) включена в базовую систему. Запущенная без ключей она будет работать в интерактивно. Для немедленного проигрывания CD можно выполнить


  $ cdio play



Чтение в данном случае будет выполнено по умолчанию с первого CD привода (например, /dev/rcd0c). Так как по умолчанию с этого устройства могут читать только root и члены группы operator, для удобства можно добавить пользователя в группу operator, изменив соответствующую строку в /etc/groups/, или изенить нужным образом права доступа к устройству.

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


$ mixerctl inputs.cd.mute=off


Если предпочитаете изящный графический интерфейс, есть множество CD проигрывателей под X11 в пакетах и коллекции портов. Загляните в секцию audio.


13.4 - Возможно ли использование OpenBSD для записи аудио?



Да, для этого вы должны использовать /dev/sound или /dev/audio как устройство ввода.

Для начала установите соответствующие параметры записи audioctl(1), например


 record.encoding=mulaw
 record.rate=8000
 record.channels=1
 record.precision=8


Здесь используется нелинейное квантование по алгоритму mu-law, один канал, частота дискретизации 8000 Гц глубиной 8 бит. Mu-law и A-law особенно пригодятся при оцифровке речи как достигающие высокой эффективности кодирования. Это означает, что качество обрабатываемой речи будет выше при данной глубине, или меньшая глубина потребуется для достижения данного качества.

Ели вы решили последовать этим условиям (БУКВАЛЬНО эти), можете использовать устройство /dev/audio, которое использует их как значения по умолчанию - нет необходости указывать их явно.

Далее, ледует убедиться, что выбрано правильное устройство для записи и что вход не заблокирован. Нужные параметры могут быть установлены mixerctl(1). Например:


 inputs.mic.mute=on
 inputs.mic.preamp=on
 inputs.mic.source=mic0
 record.source=mic
 record.volume=255,255
 record.volume.mute=off
 record.mic=0
 record.mic.mute=off


В этом примере запись ведётся с микрофона. Предусиление включено, иначе записанный звук будет достаточно тихим. Чтобы начать, собственно, запись, используем cat(1) или dd(1):


 $ dd if=/dev/audio of=myvoice.raw


Для окончания записи можно нажать [CTRL]-C. Получим "сырую" последовательность байтов. Этот звук может быть воспроизведён так, как описано в разделе 13.2.
Для быстрой проверки правильности установки аудиопараметров:


  $ dd if=myvoice.raw of=/dev/audio


При установке других параметров захвата лучше использовать устройство /dev/sound - другой пример установки параметров оцифровки:


  record.encoding=slinear_le
  record.rate=22050
  record.channels=2
  record.precision=8


Это даст PCM с линейным квантованием, сохранённое с "остроконечным" порядком в байте с частотой дискретизации 22050 Гц, стерео, 8 бит на сэмпл (2^8=256 уровней квантования)

Кстати - наверное возникнет желание перевести эту запись из "сырого" (без заголовков) формата во что-нибудь поудобнее. Читайте раздел 13.8.


13.5 - Расскажите мне об Ogg Vorbis и кодировании MP3?



Эти форматы уже упоминались, в этой секции кратко рассмотрим кодирование таких файлов. Если вам интересно, как работают эти кодеки, читайте статьи о Vorbis и MP3 в Wikipediи.


Ogg Vorbis



Кодирование "сырого" аудиоформата, WAV или AIFF в Ogg Vorbis можно осуществить с помощью утилиты oggenc, которая находится в разделе audio/vorbis-tools системы портов и пакетов OpenBSD.

Допустим, у вас есть несколько WAV файлов, готовых к кодированию, например, ваш любимый альбом, который вы только что извлекли с CD. Чтобы перекодировать все эти файлы, используя битрейт, приблизительно в 192 kbps, можете использовать команду


  $ oggenc *.wav -b 192


Когда программа завершит свою работу, вы получите несколько файлов .ogg в текущей директории. Более обширные примеры, как и опции кодирования, можно найти в страницах руководства oggenc.


MPEG-1 Audio Layer 3 (MP3)


Если по какой-либо причине вы хотите использовать формат MP3, то можете воспользоваться "Lame ain't an MP3 encoder" (LAME) – учебная программа, которая может быть использована для кодирования в формате MP3. Lame включен в дерево портов OpenBSD. Заметьте, что из-за патентов на MP3, вы не найдете этот пакет на официальном CD.

Ниже приведен простой пример кодирования WAV файла с битрейтом в 192 kbps:


  $ lame -b 192 track01.wav track01.mp3


Для получения информации обо всех опциях и прочими подробностями, обращайтесь к страницам руководства, которые идут вместе с lame.

13.6 - Как я могу воспроизвести видео DVD в OpenBSD?



OpenBSD поддерживает DVD на файловой системе ISO 9660, которая используется в CD-ROM’ах, и, начиная с OpenBSD 3.8 также поддерживает новую файловую систему Universal Disk Format (UDF), которая используется в некоторых DVD. Однако почти все DVD-Video и диски DVD-ROM используют формат UDF bridge, который является комбинацией файловых систем DVD MicroUDF (производное от UDF 1.02) и ISO 9660. Этот формат используется для обратной совместимости.

Так как большинство компьютеров с устройствами DVD-ROM используют программное раскодирование (software decoding) формата, рекомендуется иметь процессор с частотой как минимум Pentium II 350 МГц для получения качественного воспроизведения.

Некоторые популярные утилиты для проигрывания DVD были портированы в OpenBSD. Например, ogle, mplayer, xine, и kaffeine. Пожалуйста, прочитайте инструкции по их установке, которые идут вместе с этими пакетами, т. к. такие программы могут требовать специфической настройки. С помощью этих утилит можно проигрывать DVD, обращаясь прямо к устройству. Конечно, можно также монтировать DVD, используя mount_cd9660(8), и проигрывать файлы на примонтированной или любой другой файловой системе.

Замечания:

    Почти все DVD, которые вы купили в магазине, закодированы с помощью системы Content Scrambling System (CSS). Чтобы проигрывать такие DVD, можно использовать библиотеку libdvd, которая также доступна в системе портов и пакетов.
    Знайте, что на вашем(их) DVD-диске(ах) может присутствовать код региона. Это не должно создавать особых проблем при проигрывании DVD на компьютере.



13.7 - Как мне произвести запись CD и DVD?




13.7.1 - Введение и базовые настройки



Первоначально необходимо удостовериться, что ваш CD/DVD распознан и правильно отконфигурирован ядром. Большинство SCSI устройств поддерживается. IDE/ATAPI и USB устройства поддерживаются через эмуляцию SCSI. Вы быстро сможете найти ваше устройство в выводе dmesg(8). Просто ищите строки, начинающиеся "cd", к примеру


  cd0 at scsibus0 targ 0 lun 0: <TOSHIBA, CD-ROM XM-5702B, 2826> SCSI0 5/cdrom removable
  cd1 at scsibus1 targ 4 lun 0: <PLEXTOR, CD-R PX-R412C, 1.04> SCSI2 5/cdrom removable





Но ведь cdrecord -scanbus не работает!



Да. OpenBSD использует другое обозначение устройств, нежели ОС, для которых cdrecord написан. Все отконфигурированные устройства присутствуют в выводе dmesg, как сказано выше. Здесь же информация, которая вам нужна.


Error: mount_cd9660: /dev/cd2c on /mnt/cdrom: No such file or directory


По умолчанию, установщик OpenBSD создает только два cd device nodes, cd0 и cd1. Для использования устройства cd2, вы должны создать для него device nodes. Рекомендуемый способ - с использованием скрипта MAKEDEV(8) (выберите вашу конкретную платформу):


  # cd /dev
  # ./MAKEDEV cd2



В дальнейшем мы главным образом будем обращаться к приводу CD/DVD как raw character устройству, не block устройство.


Проверка функционирования записывающего CD/DVD



Рекомендуется проверить правильность функционирования CD/DVD. В данном примере я использую записывающий DVD USB 2.0:


  cd2 at scsibus2 targ 1 lun 0: <LITE-ON, DVDRW LDW-851S, GS0C> SCSI0 5/cdrom removable



Попробуйте примонтировать имеющийся CD/DVD. Если хотите, также можете проверить скорость передачи данных при копировапнии на жесткий диск. Команда time(1) будет вам в этом помощником.

Если что-то неправильно, либо появляются ошибки на этом этапе, будет правильным решить эти проблемы еще до записи CD/DVD.


Я уже хочу записать CD! Приступим?



Перед тем как продолжить, неплохо запомнить эти советы:

    Не выполняйте никаких задач, интенсивно работающих с дисками во время записит CD/DVD. Этим вы понизите производительность записи на вашем CD/DVD. Если производительность понижается до значения, когда устройство записи долго ожидает данных, его буфер опустошается. Этот эффект также известен как "buffer underrun".
    Избегайте ударов в процессе записи, ибо это приведет к отклонению луча лазера от дорожки. Это может привести к ошибкам на диске.
    Не каждый DVD привод поддерживает все форматы DVD, см. ниже.



13.7.2 - Запись CD




Создание CD с данными



Сначала надо создать файловую систему ISO 9660 для записи CD. Для этого можно использовать утилиту базовой системы mkhybrid(8) или утилиту mkisofs, входящую в состав пакета cdrtools, которая лучше работает при создании больших деревьев файловой системы. В следующих примерах будем использовать mkisofs, использование mkhybrid во многом аналогично.

В данном примере я хочу создать ISO 9660 образ, содержащий исходное дерево ядра OpenBSD:


$ mkhybrid -R -o sys.iso /usr/src/sys

Using ALTQ_RMC.000;1 for  /usr/src/sys/altq/altq_rmclass_debug.h (altq_rmclass.h)
...
Using IEEE8021.00H;1 for  /usr/src/sys/net80211/ieee80211_amrr.c (ieee80211.c)
10.89% done, estimate finish Sat Nov  3 08:01:23 2007
21.78% done, estimate finish Sat Nov  3 08:01:28 2007
...
87.12% done, estimate finish Sat Nov  3 08:01:31 2007
98.01% done, estimate finish Sat Nov  3 08:01:32 2007
Total translation table size: 0
Total rockridge attributes bytes: 896209
Total directory bytes: 2586624
Path table size(bytes): 11886
Max brk space used 0
45919 extents written (89 Mb)



Ключ -R указывает mkisofs использовать расширение Rock Ridge в образе ISO 9660. Rock Ridge Interchange Protocol создан для поддержки POSIX-совместимой семантики в файловой системе ISO 9660, как то: длинные имена файлов, владельцы, права, file links, soft links, device nodes, deep file hierarchies (более 8 уровней вложения поддиректорий) и т.д.

Если вы хотите, чтобы длинные имена файлов читались на CD в системах Windows или DOS, необходимо также добавить ключ -J для включения расширения Joliet в образ ISO 9660.

Вы можете после создания образа ISO 9660 вы можете его проверить, смонтировав ISO-образ. Если все нормально, мы готовы к прожигу CD-R(W). Самый простой способ  - использовать утилиту cdio(1).

Если вы используете многоразовые CD-RW, вы можете их очистить перед записью.


   # cdio -f cd1c blank


Если вы готовы к записи образа на чистый CD-R(W), можно выполнить команду:


   # cdio -f cd1c tao sys.iso



Указанными ключами мы указываем cdio использовать второй CD-привод для записи.

Для проверки записанного CD мы можем его смонтировать и проверить наличие данных. Для монтирования файловой системы мы должны использовать CD устройство как block device, в качестве которого используется тот же записывающий CD привод:


  # mount /dev/cd1c /mnt/cdrom





Создание аудио CD



Для записи аудио CD вы можете использовать cdio(1) с ключом tao -a.

К примеру, я делаю резервную копию одного из моих CD с музыкой. Это делается в два этапа:

    1. Получить аудиотреки с оригинального CD. Наример:


      # cdio -f cd1c cdrip



Эта команда извлечет WAV файлы с вашего второго CD привода на ваш диск.

    2. Записать аудиотреки на диск CD, пример:


      # cdio -f cd1c tao -a *.wav




13.7.2 - Запись DVD



Есть несколько важных моментов о DVD, которые следует знать, прежде чем приступать непосредственно к процессу записи ваших DVD.

Важные замечания:

    Если вы действительно хотите знать все о DVD, советуем вам для начала прочитать обширный FAQ по DVD.
    Эта секция не прошла строгого тестирования, и различные комбинации приводов и носителей не проверены. Однако мы имеем информацию или слыхали об успешном использовании со всеми описанными ниже форматами DVD. Пожалуйста, сообщайте нам об успешном/неуспешном использовании.



Различные форматы DVD



Существует несколько разных DVD форматов. Чаще всего используются DVD-R, DVD-RW, DVD+R и DVD+RW форматы (R означает возможность записи один раз, RW может быть перезаписан несколько тысяч раз). В значительной степени эти форматы конкурируют.

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

Большое значение имеют носители, которые вы используете для записи своими приводами. Если вы желаете совместимости ваших носителей с другими DVD проигрывателями, прочитайте эту секцию DVD FAQ.


Скорость записи DVD



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


+----------------------------------------------------------------------------+
|DVD read/write speed|Transfer rate (MB/s)|  Equivalent CD-R(W) read/write   |
|                    |                    |              speed               |
|--------------------+--------------------+----------------------------------|
|         1x         |        1.32        |                9x                |
|--------------------+--------------------+----------------------------------|
|         2x         |        2.64        |               18x                |
|--------------------+--------------------+----------------------------------|
|         4x         |        5.28        |               36x                |
|--------------------+--------------------+----------------------------------|
|         8x         |       10.57        |               72x                |
+----------------------------------------------------------------------------+


Как видно из таблицы, скорости передачи данных относительно высоки и вы должны проверить сможет ли ваша шина (SCSI, (E)IDE/ATAPI, USB), отрегулировать пропускную способность. Особенно старые интерфейсы USB 1.0 и 1.1 имеют низкую пропускную способность (максимум 1.5 Mbit/s и 12 Mbit/s соответственно). Это означает, что максимальная пропускная способность USB 1.0 составляет 178.8 kByte/s, а максимальная пропускная способность USB 1.1 - 1.43 MB/s. USB 2.0 намного быстрее: 480 Mbit/s или 57.2 MB/s. Ну, а скоростей SCSI и (E)IDE/ATAPI должно быть вполне достаточно.


Запись DVD



В основном, этот процесс очень похож на запись CD-R(W). Используемое программное обеспечение, однако, другое. На данный момент, лучший вариант – это growisofs из пакета sysutils/dvd+rw-tools. Утилита записывает образ ISO 9660 на DVD. Все форматы записи поддерживаются dvd+rw-tools.

В случае если вы хотите найти больше информации о вашем пишущем DVD приводе (например, если вы потеряли все его инструкции и наклейки, или вы такой же дезорганизованный как я), то можете использовать утилиту dvd+rw-mediainfo. Есть два способа записи DVD:

    Предварительное создание образа ваших данных в ISO 9660, сохранив его на жестком диске и, затем, записав его на DVD.
    Запись ISO 9660 с вашими данными непосредственно на DVD.

Я создал предварительный образ CVS-модулей OpenBSD (src, XF4, ports и www), содержащихся в директории /cvs на моем диске. Использовал я следующие команды, которые выглядят очень похожими на то, что мы делали при записи образа CD-ROM немного выше.


$ mkisofs -R -o cvs.iso /cvs


Если хотите, можно проверить файловую систему ISO 9660, примонтировав образ. Записать этот образ (около 2 GB) на пустой DVD диск, можно так:


  # growisofs -dvd-compat -Z /dev/rcd2c=cvs.iso
  Executing 'builtin_dd if=cvs.iso of=/dev/rcd2c obs=32k seek=0'
  /dev/rcd2c: pre-formatting blank DVD+RW...
  /dev/rcd2c: "Current Write Speed" is 4.1x1385KBps.
    23822336/1545832448 ( 1.5%) @3.9x, remaining 5:19
    42172416/1545832448 ( 2.7%) @3.9x, remaining 5:20
    60522496/1545832448 ( 3.9%) @3.9x, remaining 4:54
  ...
  1504706560/1545832448 (97.3%) @3.9x, remaining 0:07
  1523318784/1545832448 (98.5%) @3.9x, remaining 0:04
  1541898240/1545832448 (99.7%) @3.9x, remaining 0:00
  /dev/rcd2c: flushing cache
  /dev/rcd2c: writing lead-out
  /dev/rcd2c: reloading tray


Аргумент –z говорит growisofs инициализировать сессию записи на устройство, в частности на мой DVD привод, подключенный как cd2. Аргумент -dvd-compat «закрывает» диск. Это означает, что больше ничего записывать с помощью этого устройства мы не будем. Это должно обеспечить лучшую совместимость с DVD видеопроигрывателями и некоторыми старыми DVD-ROM’ами.

Обратите внимание, как growisofs показывает скорость записи, в нашем случае на скорости 3.9x DVD, что можно ожидать от комбинации чтения и записи, полученной благодаря dvd+rw-mediainfo.

Если у вас мало дискового пространства, и вы не можете сохранить DVD образ ISO 9660, то можно записать информацию прямо на DVD носитель. Давайте сперва попробуем сделать «сухой» запуск (dry run), который симулирует создание файловой системы.


  # growisofs -dry-run -Z /dev/rcd2c -R /cvs


Если все прошло успешно, просто уберите опцию -dry-run и начинайте запись DVD.


  # growisofs -Z /dev/rcd2c -R /cvs


Также возможна «дозапись» информации на DVD, уже содержащий данные. Это достигается путем использования аргумента –M, который позволяет слить новую сессию записи с уже существующей:


  # growisofs -M /dev/rcd2c -R /mydata


Для получения более подробной информации о growisofs, читайте станицы руководства этого приложения.

Когда вы закончили запись DVD, примонтируйте его и посмотрите, действительно ли вы получили то, что ожидали.


Почему, после записи, я получаю вовсе не то, что ожидаю?



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


     4784128/1545832448 ( 0.3%) @0.7x, remaining 26:50
     7929856/1545832448 ( 0.5%) @0.7x, remaining 29:05
    14123008/1545832448 ( 0.9%) @0.7x, remaining 27:06
  ...


что гораздо медленнее. Это означает, что пропускной способности шины вашего DVD привода недостаточно. В вышеуказанном примере, USB DVD привод был подключен к машине с помощью драйвера ehci(4), используемого контроллерами USB 2.0 и не смог правильно инициализироваться. Как обычно, приглашаем вас писать патчи и тестировать результаты. DVD привод использует медленный интерфейс USB 1.1, который приводит к плохой пропускной способности. USB 1.1 ограничен в пропускной способности до 12 Mbit/s, что равно 1.43 MB/s или 1.08x при записи DVD. Для того, чтобы уменьшить риск буферных «недогрузок», DVD привод использует более низкий темп записи, чем позволяет устройство.


13.8 - Но я хочу иметь свои мультимедиа файлы в формате FOO.




Конвертирование между различными звуковыми форматами.



Предположим, мы хотим обработать звуковую запись из FAQ 13 - Запись Звука. Эта запись храниться в формате raw (сыром). Было бы полезно сконвертировать его, потому что формат raw не включает заголовков и все параметры записи необходимо указывать при каждом использовании файла.

Одна из утилит конвертации звука - audio/sox, доступно через пакетную систему и порты. sox поддерживает AIFF, AU, MP3, Ogg Vorbis, RIFF WAV и raw форматы, так же как и большее число более экзотичных форматов звука, существующих в природе.


$ sox -U -c 1 -r 8000 -b myvoice.raw myvoice.wav



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

Внимание: не рекомендуется проводить преобразования между разными форматами с потерями. Например, кодеки MP3 и Vorbis выбрасывают разные части оригинального (несжатого) звука, таким образом, если сконвертировать файл MP3 в Ogg Vorbis, конечный результат будет менее качественен, чем оригинальная MP3.


Преобразование между различными форматами видео.



Важно чётко понимать разницу между

    форматом файла-контейнера, популярные варианты - MP4, OGG, MPEG, MOV, AVI, ASF
    видео-кодеком - например, MPEG-1, MPEG-2, MPEG-4 совместимые кодеки (вроде Xvid и DivX), FFmpeg, WMV, ... - если хотите знать больше - почитайте статью Wikipedia.

В OpenBSD поддержка MPEG и AVI контейнеров практически зрелая на нынешний момент. Ни одна утилита из дерева портов не может создавать потоки в контейнерах MP4.

Две популярные утилиты, например, - mutimedia/transcode и mencoder (входит в x11/mplayer). Они могут использовать библиотеку libavcodec (часть порта graphics/ffmpeg), которая генерирует вполне качественное изображение. Конечно, вы можете исользовать и ffmpeg напрямую. Должно быть также возможно исользование кодировщика XviD из mutimedia/xvidcore.

Документация, поставляемая с этими пакетами в виде страниц руководства или документов HTML, хранимых в /usr/local/share/doc, содержит множество примеров, так что НАСТОЯТЕЛЬНО рекомендуется прочитать их.


13.9 - Возможно ли вомпроизведение потокового мультимедиа в OpenBSD?



Да, это возможно. Многие аудио и видео вещания будут хорошо работать, но на ограниченном количестве платформ. На некоторых платформах работать не будет.

Мы не будем подробно освещать вопросы поддержки всех возможных форматов на любых платформах. Возможно, вы захотите узнать больше о потоковом медиа. Немного устаревшей, но все-таки очень хорошей отправной точкой о потоковом вещании может стать раздел о потоковом вещании книги издательства O'Reilly - Designing Web Audio.

Первое, что следует понимать, это существование ряда различных протоколов потокового вещания. Протоколы определяют, каким образом будет осуществляться передача потока через сеть. Они были разработаны для эффективной передачи звука и/или изображения в реальном времени через сеть интернет. Как правило, потоковый протокол является протоколом уровня приложения (7 уровень сетевого взаимодействия), который использует для трансмиссии протокол UDP или TCP (4 уровень). User Datagram Protocol (UDP) весьма хорошо подходит для подобных приложений, поскольку он не совершает никаких ретрансмиссий и не передает никаких дополнительных данных или заголовков. Было разработано некоторое количество специализированных, но проприетарных протоколов, таких как Microsoft Media Services (MMS) или Real Time Streaming Protocol (RTSP). Как мы можем видеть, HTTP (использующий TCP) вполне может быть иногда использован, несмотря на то, что он не позволяет использовать steady bitrate как UDP, RTSP или MMS.

Также имеются потоковые форматы, которые также могут передавать аудио/видео данные. Наиболее широкое распространение получили MP3, Real Audio (RA, RM) и Windows Media (ASF), они также являются проприетарными. Иногда также используется открытый Ogg Vorbis.

Для примера мы расскажем, как пошагово настроить прослушивание Radio 1, одной из национальных бельгийских радиостанций. Для OpenBSD недоступны подобные приложения для браузера, таким образом это отнюдь не будет рассказом как "кликнуть и слушать".

    Определитесь с потоковым протоколом и форматом. Обычно это указывается на сайте, обеспечивающем доступ к потоковому медиа. При нажатии на ссылку  "Живое вещание" вы скорее всего получите сообщение, что данная операционная система не поддерживается. Замечательно, что есть возможность прослушивания MP3 потока без встроенного Flash player. Помимо этого есть списки со ссылками на национальные радиостанции, что позволит нам перейти к следующему шагу. Замечу, что я использовал браузер с включенным JavaScript.

    Выяснить точный URL. Многие сайты имеют ссылки на контейнер файла или плейлиста (например, M3U, ASX, RAM), содержащий актуальные адреса самого вещания. Сохраните этот файл контейнера и получите URL из него. В моем случае:


$ ftp http://internetradio.vrt.be/dab/hoeluisteren/pc/help/gebruiksvoorwaarden/stream_11.m3U
$ cat stream_11.m3U
http://mp3.streampower.be/radio1-mid.mp3
http://mp3.streampower.be/radio1-low.mp3
http://mp3.streampower.be/radio1-high.mp3



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

    Для воспроизведения потока лучше использовать x11/mplayer из коллекции пакетов или портов. О поддерживает большинство потоковых форматов и протоколов,  работает на платформах amd64, i386, powerpc и sparc64. Есть и альтернативные варианты: ogg123 из audio/vorbis-tools (для Ogg Vorbis), audio/mpg123 и audio/mpg321 (для MP3), XMMS из audio/xmms и Videolan Client в x11/vlc. Приведем примеры:


$ mplayer http://mp3.streampower.be/radio1-mid.mp3


    Упростить использование можно используя псевдонимы в .profile:


alias radio1='mplayer http://mp3.streampower.be/radio1-mid.mp3'


Windows Media (ASF) вещание часто работает, несмотря на использование разных форматов, поддерживаемых graphics/win32-codecs, работающий только на i386 ('pkg_info win32-codecs' выведет список кодеков). Некоторые Real Audio будут работать на i386 используя mplayer в связке с graphics/win32-codecs и  emulators/fedora/base (смотрите эту ветку в рассылке о портах).


13.10 - Где я могу получить Java плагин для моего веб браузера? (i386 & amd64 only)



Java plugin - часть Java Development Toolkit (JDK). В связи с лицензионной политикой OpenBSD не может включать бинарный пакет с JDK. Вам придется собирать его из портов. Дополнительная информация по сборке JDK имеется в FAQ 8 - Языки программирования. По окончании сборки JDK вы можете инсталлировать либо полный JDK или просто Java Runtime Environment (JRE) как subpackage содержащий плагин к браузеру.

После установки будет выведена инструкция по использованию Java plugin с Firefox или Seamonkey. Создайте как рекомендуется символическую ссылку, и вы увидите Java plugin введя "about:plugins" в адресной строке.

В случае KDE Konqueror бинарник java должен быть в PATH, либо должен быть задан абсолютный путь в Settings -> Configure Konqueror -> Java & JavaScript. По умолчанию исполняемый java находится в /usr/local/jre-version/bin/ или /usr/local/jdk-version/bin/, в зависимости от установки JRE либо JDK.

Внимание: поддержка Java протестирована только для браузеров Firefox, Seamonkey и Konqueror. Если она хорошо дружит с другим вашим браузером, известите нас.



13.11 - Поддерживается ли Flash в моем браузере? (только i386)



Flash Adobe распространяется только в бинарном виде. Adobe не поддерживает нативный OpenBSD plugin, однако есть Linux plugin запускаемый в режиме эмуляции  Linux. Этот plugin доступен только для i386.

Хорошей идеей перед продолжением будет ознакомиться с эмуляцией Linux  на странице compat_linux(8) manual page и FAQ 9 - Запуск исполняемых файлов Linux в  OpenBSD.

Если вы разобрались с этим, но не установили еще нужные файлы, просто установите пакет fedora. Думаем, что переменная PKG_PATH у вас задана (читайте FAQ 15),

   # pkg_add -i fedora_base

Это автоматом изменит значение kern.emul.linux=1, но не перманентно. Если нужна постоянная эмуляция Linux, редактируйте /etc/sysctl.conf, как описано в FAQ 9 - Запуск исполняемых файлов в OpenBSD.

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

Один из вариантов - Opera, доступный в дереве портов. OpenBSD не может включить его в пакеты, ибо лицензия Opera не дает четкого определения понятии редистрибуции. Однако, в случае установки проще, поскольку браузер  распространяется в бинарном виде Opera Software. После этого установите Flash plugin из дерева портов.

   # cd /usr/ports/www/opera
   # make install
   # cd /usr/ports/www/opera-flashplugin
   # make install

Примечание: Для выполнения всего вышеописанного достаточно и одного последнего шага, поскольку система портов удовлетворит все зависимости автоматически. Мы привели пошагово этот процесс для упрощения понимания.

Если вы следовали нашим рекомендациям, плагин должен быть виден при вводе в адресной строке браузера "about:plugins".

Перевод соответствует $OpenBSD: faq13.html,v 1.122 2008/05/01 16:58:15 steven Exp $