kern.audio.record
sysctl.
# sysctl kern.audio.record=1 # echo kern.audio.record=1 >> /etc/sysctl.conf
Не каждая конфигурация того или иного аудиочипа обязательно соответствует реальности. Например, может быть перечисленно больше выходов, чем действительно подключено. Элементы управления аудиоустройством могут быть помечены по-разному. Обычно они хорошо подписанны, но иногда нужно просто попробовать разные настройки, чтобы понять, какой эффект дает каждый элемент управления.
Вот список элементов управления, которые следует учитывать:
Управление отключением звука и уровнем - Даже если кажется, что все настроено правильно правильно, может быть несколько регуляторов отключения звука (mute) или уровня громкости на пути прохождения сигнала. В приведенном ниже примере устройство имеет основной уровень записи и регулировка усиления микрофона:
record.adc-0:1=248,248 record.adc-0:1_source=mic inputs.mic=85,85Отключение питания внешнего усилителя (EAPD) - Этот переключатель обычно используется для энергосбережения в ноутбуках и может использоваться для выходного сигнала:
outputs.spkr_eapd=onИсточник записи - Некоторые устройства имеют несколько входов для микрофонов. Примеры таких элементов управления:
record.source=mic record.adc-0:1_source=micЧтобы изменения вступали в силу при каждой перезагрузке, отредактируйте файл:
/etc/mixerctl.conf
.
Например:
record.adc-0:1_source=mic inputs.mic=85,85
Элемент управления output.level
присутствует всегда.
Он либо соответствует аппаратному управлению, либо эмулируется
программно.
uaudio0 at uhub2 port 1 configuration 1 interface 1 "ABC C-Media USB Audio Device" rev 1.10/1.00 addr 2 uaudio0: class v1, full-speed, sync, channels: 2 play, 1 rec, 8 ctls audio1 at uaudio0В большинстве систем первым аудиоустройством является внутренняя звуковая карта. USB-аудиоустройство при подключении становится вторым. По умолчанию sndiod(8) настроен таким образом, что оба устройства видны для программ как
snd/0
и snd/1
соответственно.
Они могут использоваться независимо.
Программы будут использовать snd/default
,
которое по умолчанию указывает на snd/0
.
Эту связку можно быстро поменять при помощи server.device
таким образом:
$ sndioctl server.device=1Кроме того, sndiod(8) можно настроить так, чтобы
snd/default
соответствовало
USB-устройству, когда оно подключено, или внутреннему устройству
в противном случае:
# rcctl set sndiod flags -f rsnd/0 -F rsnd/1 # rcctl restart sndiodКогда сервер опрашивает устройства, он сначала пытается подключиться к USB. Если его нет, вместо него используется внутренняя звуковая плата. Если USB-устройство отключено, sndiod пытается продолжить работу, используя внутреннюю звуковую карту. Если USB-устройство подключено снова, sndiod его увидит при следующей попытке открыть устройство. Чтобы заставить sndiod переключаться между устройствами, перезагрузите сервер:
# rcctl reload sndiod
OpenBSD поставляется с aucat(1), программой, способной воспроизводить несжатые файлы WAV, AIFF и AU. Её можно использовать в очень простых случаях или просто для тестирования:
$ aucat -i filename.wavЕсть много других проигрывателей, доступных в виде пакетов, которые поддерживают и другие аудиоформаты.
kern.audio.record
aucat(1)
может использоваться для записи несжатых файлов WAV, AIFF и AU.
$ aucat -o file.wavВышеупомянутая команда начнет запись файла в формате WAV. Нажмите CTRL+C, чтобы закончить запись.
Чтобы воспроизвести файл, запустите:
$ aucat -i file.wavЕсли запись работала, но воспроизведение записи было тихим или не таким, каким ожидалось, возможно, микшер нуждается в некоторой настройке. Убедитесь, что был выбран правильный источник для записи, и что он включен.
При необходимости полученный WAV-файл можно сжать при помощи соответствующей программы из портов. В качестве альтернативы для записи, обработки и сжатия аудиофайлов можно использовать такие порты как sox, ffmpeg или audacity.
Создайте monitor sub-device mon
для
sndiod(8)
при помощи:
# rcctl set sndiod flags -s default -m play,mon -s mon # rcctl restart sndiodНастройте свою программу для записи звука с устройства
snd/mon
, например:
$ aucat -f snd/mon -o file.wavНа этом этапе все, что воспроизводит ваша система, записано в
file.wav
.
sndiod(8) устанавливает минимальную задержку для всех аудиоприложений,
а задержка по умолчанию составляет 160мс.
Если вы планируете использовать приложения, требующие меньшей задержки, используйте
-b
, чтобы выбрать желаемую задержку (выраженную в количестве
кадров).
Например, при 48000 выборок в секунду задержка 50 мс соответствует:
48000 samples/second × 0.050 seconds = 2400 samplesЗатем сделайте:
# rcctl set sndiod flags -b2400
# rcctl set sndiod flags -L-В локальной системе настройте свою программу на использование
snd@hostname/0
,
где "hostname" - это адрес удаленной системы.
Переменная среды AUDIODEVICE
может иметь значение, указанное выше
значение, чтобы сделать удаленную звуковую карту звуковым устройством по умолчанию.
Любая система, способная подключиться к TCP-порту 11025 удаленного хоста, сможет
использовать аудиоустройство.
Из соображений конфиденциальности только один пользователь из одной системы может иметь подключения
к нему в данный момент.
Если несколько систем должны использовать аудиоустройство одновременно,
файл cookie авторизации sndio(7) должен быть таким же.
Например, скопируйте свой ~/.sndio/cookie
во все учетные записи,
который может использовать аудиоустройство.
Чтобы избежать сбоев, TCP-трафик на порту 11025 может быть приоритетным с помощью пакетного фильтра. В конфигурации по умолчанию sndiod будет потреблять около 200КБ/с пропускная способность сети.
AUDIODEVICE
переменного окружения.
Если он не установлен, используется snd/default
, который является указателем на первое аудиоустройство.
под управлением sndiod(8).
Самый гибкий способ выбора устройства по умолчанию - экспорт
AUDIODEVICE
, возможно, в профиле входа пользователя.
Кроме того, устройство sndiod(8)
по умолчанию может быть изменено на лету при помощи server.device
,
предоставляемого sndioctl(1):
$ sndioctl server.device=1
Другой способ изменить устройство вывода звука по умолчанию - сделать желаемый устройство первое устройство, управляемое sndiod(8). Например, чтобы использовать внешний ЦАП, а не встроенный на материнской плате аудио, просто измените sndiod(8) флаги запуска для использования этого устройства:
# rcctl set sndiod flags -f rsnd/1 # rcctl restart sndiodЭто сделает второе аудиоустройство (
rsnd/1
) по умолчанию.
Если вы считаете, что ваше устройство должно работать, но по какой-либо причине нет, тогда пришло время для небольшой отладки. Следующие шаги помогут определить, обрабатываются ли данные DAC.
# cat > /dev/audio0 < /dev/zero & [1] 9926 # audioctl play.{bytes,errors} play.bytes=3312000 play.errors=0 # audioctl play.{bytes,errors} play.bytes=7065600 play.errors=0 # audioctl play.{bytes,errors} play.bytes=9379200 play.errors=0 # kill %1 # fg %1 cat > /dev/audio0 < /dev/zero TerminatedЗдесь мы видим, что количество обработанных данных
play.bytes
увеличивается
каждый раз, когда мы проверяем, значит, данные текут.
Мы также видим, что устройство не прогоняет ни одного образца
(play.errors
).
Это тоже хорошо.
Обратите внимание, что даже если у вас были подключены динамики при запуске вышеуказанного test, вы ничего не должны были слышать. Тест отправляет на устройство нули, что является тишиной для всех в данный момент. поддерживаемой кодировки по умолчанию.
Поскольку мы знаем, что устройство может обрабатывать данные, рекомендуется проверить настройку микшера снова. Убедитесь, что все выходы и все входы включены и находятся на разумном уровне.
Если у вас все еще есть проблемы, возможно, пришло время
отправить отчет об ошибке.
Помимо обычной информации отчета об ошибке, такой как полный dmesg и описание
проблемы, включите также вывод по умолчанию
Mixerctl -v
и результат вышеупомянутого теста для обработки DAC.
Для воспроизведения MIDI-данных необходимо подключить синтезатор к MIDI-порту устройства. Точно так же для записи MIDI-данных требуется MIDI-инструмент (например, MIDI-интерфейс). клавиатура). Усовершенствованные MIDI-инструменты могут содержать несколько частей (синтезаторы, клавиатуры, панели управления и т.д.). Они отображаются в OpenBSD как несколько MIDI-портов.
Если у вас уже запущен OpenBSD, поищите MIDI-порты в выводе команда dmesg(8). Пример MIDI-портов в выводе dmesg:
umidi0 at uhub2 port 2 configuration 1 interface 0 "Roland Roland XV-2020" rev 1.10/1.00 addr 2 midi0 at umidi0: <USB MIDI I/F> umidi1 at uhub1 port 2 configuration 1 interface 1 "Evolution Electronics Ltd. USB Keystation 61es" rev 1.00/1.25 addr 3 midi1 at umidi1: <USB MIDI I/F>Он показывает два драйвера midi(4), известная программами как:
midi/0
- синтезатор, подключенный через USB
midi/1
- мастер-клавиатура MIDI
$ midicat -q midi/0 -q midi/1Теперь вы можете слышать, что играете на MIDI-клавиатуре синтезатора.
Сервер sndiod(8) предоставляет MIDI через порты, позволяя программам отправлять друг другу MIDI-данные. Например, если у вас нет подключенного аппаратного синтезатора, вы можете запустите программный (например, порт audio/fluidsynth), а затем используйте его как MIDI выход:
$ midicat -q midi/0 -q midithru/0
kern.video.record
.
# sysctl kern.video.record=1 # echo kern.video.record=1 >> /etc/sysctl.conf
Поддерживаемая веб-камера (или другое видеоустройство) отображается в dmesg
нравится:
uvideo0 at uhub0 port 8 configuration 1 interface 0 "Azurewave Integrated Camera" rev 2.01/69.05 addr 10 video0 at uvideo0 uvideo1 at uhub0 port 8 configuration 1 interface 2 "Azurewave Integrated Camera" rev 2.01/69.05 addr 10 video1 at uvideo1Это устройство будет доступно через
/dev/video0
.
Некоторые ноутбуки также подключают второе (непригодное для использования) видеоустройство для инфракрасного порта камеры. Используемое устройство камеры можно найти с помощью команды video (1):
$ video -q -f /dev/video0 video device /dev/video0: encodings: yuy2 frame sizes (width x height, in pixels) and rates (in frames per second): 320x180: 30 320x240: 30 352x288: 30 424x240: 30 640x360: 30 640x480: 30 848x480: 20 960x540: 15 1280x720: 10 controls: brightness, contrast, saturation, hue, gamma, sharpness, white_balance_temperature $ video -q -f /dev/video1 video: /dev/video1 has no usable YUV encodingsПо умолчанию только root имеет доступ к видеоустройствам. Для использования обычного пользователя необходимо изменить разрешения устройства:
# chown $USER /dev/video0
ffplay
и ffmpeg
из
пакета graphics/ffmpeg
.
Чтобы увидеть возможности данной камеры, запустите следующее:
$ ffplay -f v4l2 -list_formats all -i /dev/video0 [...] [video4linux2,v4l2 @ 0x921f8420800] Raw : yuyv422 : YUYV : 640x480 320x180 320x240 352x288 424x240 640x360 848x480 960x540 1280x720 [video4linux2,v4l2 @ 0x921f8420800] Compressed: mjpeg : MJPEG : 1280x720 320x180 320x240 352x288 424x240 640x360 640x480 848x480 960x540В первой строке показаны поддерживаемые разрешения в несжатом формате YUYV. Частота кадров в этом формате может быть очень низкой. Во второй строке показаны поддерживаемые разрешения сжатого видео MJPEG, что может обеспечить гораздо более высокую частоту кадров.
Выберите одно из разрешений MJPEG и запустите следующее, чтобы проверить его:
$ ffplay -f v4l2 -input_format mjpeg -video_size 1280x720 -i /dev/video0 [...] Input #0, video4linux2,v4l2, from '/dev/video0':B sq= 0B f=0/0 Duration: N/A, start: 1599377893.546533, bitrate: N/A Stream #0:0: Video: mjpeg (Baseline), yuvj422p(pc, bt470bg/unknown/unknown), 1280x720, 30 fps, 30 tbr, 1000k tbn, 1000k tbcПоток веб-камеры должен отображаться вместе с разрешением и кадром.
Если это сработает, видео можно записать с помощью ffmpeg следующим образом:
$ ffmpeg -f v4l2 -input_format mjpeg -video_size 1280x720 -i /dev/video0 ~/video.mkvНажмите "q", чтобы закончить запись.
$ video -c brightness=128 contrast=32 saturation=64 hue=0 gamma=120 sharpness=3 white_balance_temperature=autoНапример, настройку яркости можно изменить на 200:
$ video brightness=200 brightness: 128 -> 200Все настройки можно вернуть к значениям по умолчанию с помощью
video -d
.
Некоторые настройки поддерживают автоматическую регулировку, если задано значение "auto".
/dev/video
.
Чтобы Chromium мог получить доступ и к другим видеоустройствам, пути к устройствам должны быть
добавлен в /etc/chromium/unveil.main
и
/etc/chromium/unveil.utility_video
.
Firefox имеет доступ к /dev/video
и /dev/video0
по умолчанию.
Чтобы разрешить Firefox доступ к другим видеоустройствам, пути к устройствам должны быть
добавлен в /etc/firefox/unveil.main
.