Глава 9. Мультимедиа

Этот перевод может быть устаревшим. Для того, чтобы помочь с переводом, пожалуйста, обратитесь к Сервер переводов FreeBSD.

9.1. Обзор

Глава о мультимедиа предоставляет обзор поддержки мультимедиа в FreeBSD. Мультимедийные приложения и технологии стали неотъемлемой частью современных вычислений, и FreeBSD обеспечивает надёжную и стабильную поддержку широкого спектра мультимедийного оборудования и программного обеспечения. В этой главе рассматриваются различные мультимедийные компоненты, такие как аудио, видео и обработка изображений. Также обсуждаются различные медиаформаты и кодеки, а также инструменты и приложения для создания и воспроизведения мультимедиа. Дополнительно глава охватывает настройку мультимедийной системы, устранение неполадок и оптимизацию. FreeBSD предлагает надёжную платформу для мультимедийной работы и энтузиастам мультимедиа, и профессиональным создателям контента. Эта глава призвана помочь максимально использовать мультимедийные возможности FreeBSD, предоставляя полезную информацию и практические примеры для начала работы.

9.2. Настройка звуковой карты

По умолчанию FreeBSD автоматически определяет звуковую карту, используемую в системе. FreeBSD поддерживает широкий спектр звуковых карт. Список поддерживаемых звуковых карт можно найти в sound(4).

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

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

# kldload snd_driver

В качестве альтернативы, для загрузки драйвера как модуля во время загрузки, добавьте следующую строку в /boot/loader.conf:

snd_driver_load="YES"

9.2.1. Тестирование звука

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

% dmesg | grep pcm

Вывод должен быть похож на следующий:

pcm0: <Conexant CX20561 (Hermosa) (Analog 2.0+HP/2.0)> at nid 26,22 and 24 on hdaa0
pcm1: <Conexant CX20561 (Hermosa) (Internal Analog Mic)> at nid 29 on hdaa0

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

# cat /dev/sndstat

Вывод должен быть похож на следующий:

Installed devices:
pcm0: <Conexant CX20561 (Hermosa) (Analog 2.0+HP/2.0)> (play/rec) default
pcm1: <Conexant CX20561 (Hermosa) (Internal Analog Mic)> (rec)

Если в списке нет устройств pcm, проверьте, что загружен правильный драйвер устройства. Если всё в порядке, звуковая карта должна теперь работать в FreeBSD.

beep(1) может использоваться для создания звука, подтверждающего, что звуковая карта работает:

% beep

9.2.2. Микшер

В FreeBSD существуют различные утилиты для установки и отображения значений микшера звуковой карты, работающие на основе FreeBSD Sound System:

Таблица 1. Поддерживаемые пакеты микшера
ИмяЛицензияПакетToolkit

mixer(8)

BSD-2

Включено в базовую систему

CLI

dsbmixer

BSD-2

audio/dsbmixer

Qt

Виджет аудио KDE Plasma

GPL 2.0

audio/plasma6-plasma-pa

Qt

mixertui

BSD-2

audio/mixertui

TUI

9.2.3. Звук графической карты

Графические карты часто оснащены собственными встроенными звуковыми устройствами, и может быть неясно, какое из них используется по умолчанию. Чтобы это проверить, выполните команду dmesg и найдите записи pcm, чтобы определить, как система перечисляет выходы. Выполните следующую команду:

% dmesg | grep pcm

Вывод выглядит примерно так:

pcm0: <HDA NVIDIA (Unknown) PCM #0 DisplayPort> at cad 0 nid 1 on hdac0
pcm1: <HDA NVIDIA (Unknown) PCM #0 DisplayPort> at cad 1 nid 1 on hdac0
pcm2: <HDA NVIDIA (Unknown) PCM #0 DisplayPort> at cad 2 nid 1 on hdac0
pcm3: <HDA NVIDIA (Unknown) PCM #0 DisplayPort> at cad 3 nid 1 on hdac0
hdac1: HDA Codec #2: Realtek ALC889
pcm4: <HDA Realtek ALC889 PCM #0 Analog> at cad 2 nid 1 on hdac1
pcm5: <HDA Realtek ALC889 PCM #1 Analog> at cad 2 nid 1 on hdac1
pcm6: <HDA Realtek ALC889 PCM #2 Digital> at cad 2 nid 1 on hdac1
pcm7: <HDA Realtek ALC889 PCM #3 Digital> at cad 2 nid 1 on hdac1

Графическая карта (NVIDIA®) была перечислена до звуковой карты (Realtek®), при этом звуковая карта отображается как pcm4. Систему можно настроить на использование звуковой карты в качестве устройства по умолчанию, выполнив следующую команду:

# sysctl hw.snd.default_unit=4

Чтобы сделать это изменение постоянным, добавьте следующую строку в /etc/sysctl.conf:

hw.snd.default_unit=4

9.2.4. Автоматическое переключение на наушники

Некоторые системы могут испытывать трудности при переключении между аудиовыходами, но, к счастью, FreeBSD позволяет настроить автоматическое переключение в device.hints.

Определите, как система перечисляет аудиовыходы, выполнив следующую команду:

% dmesg | grep pcm

Вывод выглядит примерно так:

pcm0: <Realtek ALC892 Analog> at nid 23 and 26 on hdaa0
pcm1: <Realtek ALC892 Right Analog Headphones> at nid 22 on hdaa0

Добавьте следующие строки в файл /boot/device.hints:

hint.hdac.0.cad0.nid22.config="as=1 seq=15 device=Headphones"
hint.hdac.0.cad0.nid26.config="as=2 seq=0 device=speakers"

Имейте в виду, что эти значения приведены для указанного выше примера. Они могут отличаться в зависимости от системы.

9.2.5. Качество ресемплинга

Процесс изменения частоты дискретизации аудиопотока называется ресемплингом.

Обычно это происходит автоматически в таких ситуациях, как запись звука через DI (цифровой интерфейс) или просто при воспроизведении аудиофайлов с очень низким разрешением.

Пример: DI использует 192000 кГц, а приложение принимает только 48000 кГц (или наоборот).

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

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

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

Для достижения максимально возможного качества передискретизации выполните следующую команду:

# sysctl hw.snd.feeder_rate_quality=4(1)
# sysctl hw.snd.feeder_rate_round=0(2)
1100 дБ в полосе задерживания, 164 отвода и 97% полосы пропускания
2Крупные простые деления для высокой точности

Чтобы сохранить эти значения после перезагрузки, их можно добавить в /etc/sysctl.conf.

Важно помнить, что изменение качества ресемплинга влияет на использование процессора и задержку.

Более подробную информацию о ресемплинге можно найти в sound(4)

9.2.6. Устранение неполадок со звуком

Некоторые распространённые сообщения об ошибках и их решения:

Таблица 2. Общие сообщения об ошибках
ОшибкаРешение

xxx: can’t open /dev/dsp!

Наберите fstat | grep dsp для проверки, удерживает ли другое приложение устройство открытым. Основные источники проблем — это esound и поддержка звука в KDE.

Программы, использующие audio/pulseaudio, могут потребовать перезапуска демона audio/pulseaudio для применения изменений в hw.snd.default_unit. В качестве альтернативы, настройки audio/pulseaudio можно изменить на лету. pacmd(1) открывает командное соединение с демоном audio/pulseaudio:

# pacmd
Welcome to PulseAudio 14.2! Use "help" for usage information.
>>>

Следующая команда изменяет устройство вывода по умолчанию на карту номер 4, как в предыдущем примере:

set-default-sink 4

Не используйте команду exit для выхода из интерфейса командной строки. Это приведёт к завершению работы демона audio/pulseaudio. Вместо этого используйте Ctrl+D.

9.3. Аудиоплееры

В этом разделе представлено некоторое программное обеспечение из Коллекции портов FreeBSD, которое можно использовать для воспроизведения аудио.

Таблица 3. Пакеты аудиоплееров
ИмяЛицензияПакетToolkit

Elisa

LGPL 3.0

audio/elisa

Qt

GNOME Music

GPL 2.0

audio/gnome-music

GTK+

Audacious

BSD-2

multimedia/audacious

Qt

cmus — C* музыкальный проигрыватель

GPL 2.0

audio/cmus

TUI

9.3.1. Elisa

Elisa — это музыкальный проигрыватель, разработанный сообществом KDE, который стремится быть простым и приятным в использовании.

Для установки Elisa выполните:

# pkg install elisa

9.3.2. GNOME Music

GNOME Music - это новое приложение для воспроизведения музыки в среде GNOME. Оно сочетает в себе элегантный и захватывающий интерфейс для просмотра музыки с простым и интуитивно понятным управлением.

Для установки GNOME Music выполните:

# pkg install gnome-music

9.3.3. Audacious

Audacious — это аудиоплеер с открытым исходным кодом. Потомок XMMS, он воспроизводит музыку так эффективно используя ресурсы компьютера.

Для установки Audacious выполните:

# pkg install audacious-qt6 audacious-plugins-qt6

Audacious изначально поддерживает OSS, но его необходимо настроить в параметрах на вкладке Audio.

9.3.4. cmus — C* музыкальный проигрыватель

cmus — это небольшой, быстрый и мощный консольный музыкальный плеер для Unix-подобных операционных систем.

Помимо различных плагинов ввода и вывода, он поддерживает CUE-листы, использует Unicode, поддерживает скробблинг (например, last.fm или libre.fm), может запускать внешние программы для выбранных файлов, такие как редакторы тегов, управляется через UNIX-сокеты и многое другое.

Для установки cmus выполните:

# pkg install cmus

9.4. Видеоплееры

В этом разделе представлено некоторое программное обеспечение из Коллекции портов FreeBSD, которое можно использовать для воспроизведения видео.

Таблица 4. Пакеты видеоплееров
ИмяЛицензияПакетToolkit

mpv

GPL 2.0

multimedia/mpv

CLI

SMPlayer

GPL 2.0

multimedia/smplayer

Qt

VLC media player

GPL 2.0

multimedia/vlc

Qt

Kodi (XBMC)

GPL 2.0

multimedia/kodi

X11

9.4.1. mpv

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

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

Она также поддерживает высококачественное преобразование HDR в SDR с тонкой настройкой управления, позволяя каждому наслаждаться HDR-контентом на любом дисплее.

Для установки mpv выполните:

# pkg install mpv

Вот короткий пример ~/.config/mpv/mpv.conf

vo=gpu-next(1)
gpu-context=wayland(2)
hwdec=auto(3)
screenshot-jpeg-quality=100
scale=ewa_lanczos4sharpest(4)
dscale=ewa_lanczos4sharpest

[TTRPG](5)
profile-cond=path:find('ttrpg')(6)
profile=fast(7)
save-position-on-quit=yes

[hdr](8)
scale=bilinear
dscale=bilinear
dither=no
correct-downscaling=no
linear-downscaling=no
sigmoid-upscaling=no
hdr-compute-peak=yes
hdr-peak-percentile=99.995
hdr-contrast-recovery=0.30
1Использует новый видеовыход gpu-next. Многие функции требуют этого и/или обеспечивают более высокое качество, если этот параметр включен
2Пользователи Wayland должны вручную установить это при появлении графических сбоев или возникновении сбоев программы
3Автоматически определяет доступность аппаратного декодирования GPU и использует его
4Наилучший алгоритм масштабирования. Отключите, если ваше оборудование недостаточно быстрое и видео начинает пропускать кадры
5Пример профиля для длинных видео записанных сессий TTRPG
6Применяется только в том случае, если путь содержит ttrpg
7Использует встроенный быстрый профиль для минимально возможного использования CPU/GPU
8Пример профиля для пользователей с медленной встроенной графикой (iGPU), которые всё таки хотят наслаждаться HDR-контентом

Используя эту примерную конфигурацию, профиль TTRPG автоматически применяется, если выполняется условие "Path contains ttrpg".

Чтобы просмотреть HDR-видео на iGPU, вручную укажите профиль с помощью следующей команды:

$ mpv --profile=hdr hdr_video.mkv

За дополнительными примерами использования mpv обращайтесь к справочному руководству mpv.

9.4.2. SMPlayer

SMPlayer предназначен быть полноценным фронтендом для MPlayer, начиная с базовых функций, таких как воспроизведение видео, DVD и VCD, до более продвинутых возможностей, включая поддержку фильтров MPlayer и многое другое.

Для установки SMPlayer выполните:

# pkg install smplayer

9.4.3. VLC media player

VLC media player — это высокопортативный мультимедийный проигрыватель, поддерживающий различные аудио- и видеоформаты (MPEG-1, MPEG-2, MPEG-4, DivX, mp3, ogg и другие), а также DVD, VCD и различные протоколы потокового вещания. Он также может использоваться в качестве сервера для трансляции в режиме unicast или multicast по IPv4 или IPv6 в высокоскоростных сетях. VLC также умеет транскодировать медиафайлы на лету для потоковой передачи или сохранения на диск.

Для установки VLC выполните:

# pkg install vlc

9.4.4. Kodi (XBMC)

Kodi (ранее известный как XBMC) — это бесплатный и открытый кроссплатформенный медиаплеер и развлекательный центр. Он позволяет пользователям воспроизводить и просматривать большинство видео, музыки, подкастов и других цифровых медиафайлов с локальных и сетевых носителей, а также из интернета.

Для установки Kodi выполните:

# pkg install kodi

9.5. Конференции и встречи

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

9.5.1. Настройка веб-камеры

Для предоставления FreeBSD доступа к веб-камере и её настройки необходимо установить определённые утилиты:

  • multimedia/webcamd — это демон, который обеспечивает работу сотен различных USB-вебкамер и DVB USB-устройств.

  • multimedia/pwcview — это приложение, которое можно использовать для просмотра видеопотока с веб-камеры.

Для установки необходимых утилит выполните:

# pkg install webcamd pwcview

Включите службу webcamd(8) в /etc/rc.conf, чтобы она запускалась при загрузке системы:

# sysrc webcamd_enable=YES

Пользователь должен состоять в группе webcamd. Чтобы добавить пользователя в группу webcamd, выполните следующую команду:

# pw groupmod webcamd -m username

Поскольку multimedia/webcamd требует модуль cuse(3), этот модуль должен быть загружен выполнением следующей команды:

# kldload cuse

Чтобы загрузить cuse(3) при запуске системы, выполните команду:

# sysrc kld_list+=cuse

После установки утилит список доступных веб-камер можно просмотреть с помощью webcamd(8):

# webcamd -l

Вывод должен быть похож на следующий:

webcamd [-d ugen0.2] -N SunplusIT-Inc-HP-TrueVision-HD-Camera -S unknown -M 0 (1)
webcamd [-d ugen1.3] -N Realtek-802-11n-WLAN-Adapter -S 00e04c000001 -M 0
1Доступные веб-камеры

Настройте доступную веб-камеру, выполнив следующую команду:

# sysrc webcamd_0_flags="-N SunplusIT-Inc-HP-TrueVision-HD-Camera" (1)

Обратите внимание, что если это веб-камера с поддержкой plug-and-play USB, то изменение USB-порта, к которому она подключена, приведёт к изменению вывода команды webcamd -l, а именно, идентификатора устройства, и запись в rc.conf может потребовать обновления. Для ноутбуков со встроенными USB-веб-камерами это не должно быть проблемой. Чтобы избежать такой ситуации, или используйте имя устройства (опция -N), или/и определяйте соответствие устройства по серийному номеру, если он известен (опция -S) и отображается в выводе команды webcamd -l. Для статических устройств, например, интегрированных видеокамер ноутбуков, вы можете использовать идентификатор устройства (опция -d).

Сервис webcamd(8) должен быть запущен выполнением следующей команды:

# service webcamd start

Вывод должен быть похож на следующий:

Starting webcamd.
webcamd 1616 - - Attached to ugen0.2[0]

multimedia/pwcview можно использовать для проверки правильной работы веб-камеры. Следующая команда может быть использована для запуска multimedia/pwcview:

% pwcview -f 30 -s vga

Тогда multimedia/pwcview отобразит изображение с веб-камеры:

pwcview с примером из книги *Absolute FreeBSD 3rd edition*

9.5.2. Статус программного обеспечения для встреч

FreeBSD в настоящее время поддерживает следующие инструменты для проведения видеоконференций.

Таблица 5. Установка программного обеспечения
ИмяСтатус FirefoxСтатус ChromiumWebsite

Microsoft Teams

Не работает

Работает

https://teams.live.com

Google Meet

Работает

Работает

https://meet.google.com/

Zoom

Работает

Работает

https://zoom.us

Jitsi

Не работает

Работает

https://meet.jit.si/

BigBlueButton

Не работает

Работает

https://bigbluebutton.org/

9.6. Сканеры изображений

В FreeBSD доступ к сканерам изображений обеспечивается через SANE (Scanner Access Now Easy), который доступен в Коллекции портов FreeBSD.

9.6.1. Проверка сканера

Прежде чем пытаться выполнить любую настройку, важно убедиться, что сканер поддерживается SANE.

При подключённом сканере выполните следующую команду, чтобы получить список всех подключённых USB-устройств:

# usbconfig list

Вывод должен быть похож на следующий:

ugen4.2: <LITE-ON Technology USB NetVista Full Width Keyboard.> at usbus4, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON (70mA)
ugen4.3: <Logitech USB Optical Mouse> at usbus4, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON (100mA)
ugen3.2: <HP Deskjet 1050 J410 series> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA)

Выполните следующую команду для получения idVendor и idProduct:

# usbconfig -d 3.2 dump_device_desc

Обратите внимание, что сканер является устройством plug-and-play, и изменение USB-порта, к которому он подключен, приведёт к изменению вывода команды usbconfig list.

Вывод должен быть похож на следующий:

ugen3.2: <HP Deskjet 1050 J410 series> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA)

bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0200
bDeviceClass = 0x0000  <Probed by interface class>
bDeviceSubClass = 0x0000
bDeviceProtocol = 0x0000
bMaxPacketSize0 = 0x0040
idVendor = 0x03f0
idProduct = 0x8911
bcdDevice = 0x0100
iManufacturer = 0x0001  <HP>
iProduct = 0x0002  <Deskjet 1050 J410 series>
bNumConfigurations = 0x0001

После получения idVendor и idProduct необходимо проверить в списке поддерживаемых устройств SANE, поддерживается ли сканер, выполнив фильтрацию по idProduct.

9.6.2. Настройка SANE

SANE предоставляет доступ к сканеру через бэкенды. Для возможности сканирования в FreeBSD необходимо установить пакет graphics/sane-backends, выполнив следующую команду:

# pkg install sane-backends

Некоторые USB-сканеры требуют загрузки микропрограммы. Как, например, сканер HP, использованный в примере выше, для которого необходимо установить пакет print/hplip.

После установки необходимых пакетов необходимо настроить devd(8), чтобы FreeBSD получил доступ к сканеру.

Добавьте файл saned.conf в /usr/local/etc/devd/saned.conf со следующим содержимым:

notify 100 {
        match "system" "USB";
        match "subsystem" "INTERFACE";
        match "type" "ATTACH";
        match "cdev" "ugen[0-9].[0-9]";
        match "vendor" "0x03f0"; (1)
        match "product" "0x8911"; (2)
        action "chown -L cups:saned /dev/\$cdev && chmod -L 660 /dev/\$cdev";
};
1vendor: Это idVendor, полученный ранее при выполнении команды usbconfig -d 3.2 dump_device_desc.
2product: Это idProduct, полученный ранее при выполнении команды usbconfig -d 3.2 dump_device_desc.

После этого необходимо перезапустить devd(8), выполнив следующую команду:

# service devd restart

Бэкенды SANE включают scanimage(1), который можно использовать для вывода списка устройств и выполнения захвата изображения.

Выполните команду scanimage(1) с аргументом -L для вывода списка сканирующих устройств:

# scanimage -L

Вывод должен быть похож на следующий:

device `hpaio:/usb/Deskjet_1050_J410_series?serial=XXXXXXXXXXXXXX' is a Hewlett-Packard Deskjet_1050_J410_series all-in-one

Если scanimage(1) не может идентифицировать сканер, появится следующее сообщение:

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).

Как только scanimage(1) обнаружит сканер, настройка будет завершена, и сканер готов к использованию.

Чтобы активировать службу и запускать её при загрузке, выполните следующую команду:

# sysrc saned_enable=YES

В то время как scanimage(1) можно использовать для захвата изображения из командной строки, часто предпочтительнее применять графический интерфейс для сканирования изображений.

Таблица 6. Графические программы для сканирования
ИмяЛицензияПакет

skanlite

GPL 2.0

graphics/skanlite

GNOME Simple Scan

GPL 3.0

graphics/simple-scan

XSANE

GPL 2.0

graphics/xsane


Изменено: 13 августа 2026 г. by Vladlen Popolitov