# kldload snd_driver
第 9 章。多媒体
目录
9.1. 概要
多媒体章节概述了 FreeBSD 上的多媒体支持。多媒体应用程序和技术已成为现代计算不可或缺的一部分,而 FreeBSD 为各种多媒体硬件和软件提供了强大且可靠的支持。本章涵盖了音频、视频和图像处理等各种多媒体组件。它还讨论了各种媒体格式和编解码器,以及用于多媒体创建和播放的工具和应用程序。此外,本章还涵盖了多媒体系统配置、故障排除和优化。无论您是多媒体爱好者还是专业内容创作者,FreeBSD 都能提供一个强大的多媒体工作平台。本章旨在帮助您充分利用 FreeBSD 的多媒体功能,提供有用的信息和实用的示例以帮助您入门。
9.2. 设置声卡
默认情况下,FreeBSD 会自动检测系统使用的声卡。FreeBSD 支持各种声卡。可以在 sound(4) 中查看支持的声卡列表。
只有在 FreeBSD 未正确检测到声卡的情况下,才需要加载声卡模块。 |
如果不知道系统拥有哪个声卡或使用哪个模块,可以通过执行以下命令加载 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 声音系统的声卡混合器值
名称 | 许可证 | 软件包 | 工具包 |
---|---|---|---|
BSD-2 | 包含在基本系统中 | CLI | |
dsbmixer | BSD-2 | Qt | |
KDE Plasma 音频小部件 | GPL 2.0 | Qt | |
mixertui | BSD-2 | 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. 声音故障排除
一些常见错误消息及其解决方案
错误 | 解决方案 |
---|---|
| 键入 |
使用 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
不要使用 |
9.3. 音频播放器
本节介绍 FreeBSD Ports Collection 中可用于音频播放的一些软件。
名称 | 许可证 | 软件包 | 工具包 |
---|---|---|---|
Elisa | LGPL 3.0 | Qt | |
GNOME 音乐 | GPL 2.0 | GTK+ | |
Audacious | BSD-2 | Qt | |
MOC(控制台音乐) | GPL 2.0 | TUI |
9.3.2. GNOME 音乐
GNOME 音乐是新的 GNOME 音乐播放应用程序。它旨在将优雅而身临其境的浏览体验与简单直观的控制相结合。
要安装 GNOME 音乐,请执行
# pkg install gnome-music
9.4. 视频播放器
本节介绍 FreeBSD Ports Collection 中可用于视频播放的一些软件。
名称 | 许可证 | 软件包 | 工具包 |
---|---|---|---|
MPlayer | GPL 2.0 | CLI | |
SMPlayer | GPL 2.0 | Qt | |
VLC 媒体播放器 | GPL 2.0 | Qt | |
Kodi(XBMC) | GPL 2.0 | X11 |
9.4.1. MPlayer
MPlayer 是一款多媒体播放器和编码器套件,可在多个平台上运行,并在命令行上工作。它可以播放大量不同的文件格式和编解码器,包括流行的 DivX、XviD、H.264 流以及 DVD 和 SVCD,以及许多流行的音频编解码器。
要安装 MPlayer,请执行
# pkg install mplayer
有关 MPlayer 工作方式的示例,请参阅 mplayer(1)。
9.4.2. SMPlayer
SMPlayer 旨在成为 MPlayer 的完整前端,从基本的播放视频、DVD 和 VCD 等功能到更高级的功能,例如支持 MPlayer 过滤器等。
要安装 SMPlayer,请执行
# pkg install smplayer
9.5. 会议和会议
FreeBSD 桌面环境可用于加入视频会议。本节将说明如何配置网络摄像头以及 FreeBSD 上支持哪些视频会议应用程序。
9.5.1. 设置网络摄像头
要允许 FreeBSD 访问网络摄像头并执行其配置,必须安装某些实用程序
multimedia/webcamd 是一个守护程序,它支持使用数百种不同的基于 USB 的网络摄像头和 DVB USB 设备。
multimedia/pwcview 是一个应用程序,可用于查看网络摄像头的视频流。
要安装所需的实用程序,请执行
# pkg install webcamd pwcview
在 /etc/rc.conf
中启用 webcamd(8) 服务,以便在系统启动时启动它
# 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="-d ugen0.2" (1)
请注意,如果这是一个即插即用 USB 网络摄像头,则更改其连接的 USB 端口会更改 |
必须通过执行以下命令启动 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 将会显示网络摄像头。
9.6. 图像扫描仪
在 FreeBSD 中,对图像扫描仪的访问由 SANE(扫描仪访问现在很简单) 提供,它在 FreeBSD Ports Collection 中可用。
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
请注意,扫描仪是即插即用设备,更改其连接的 USB 端口将更改 |
输出应该类似于以下内容
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"; };
1 | vendor :是之前通过运行 usbconfig -d 3.2 dump_device_desc 命令获得的 idVendor。 |
2 | product :是之前通过运行 usbconfig -d 3.2 dump_device_desc 命令获得的 idProduct。 |
之后,devd(8) 必须通过运行以下命令重新启动
# service devd restart
SANE 后端包括 scanimage(1),它可以用来列出设备并执行图像采集。
使用 -L
参数执行 scanimage(1) 以列出扫描仪设备
# 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) 可以用来从命令行执行图像采集,但通常更喜欢使用图形界面来执行图像扫描。
名称 | 许可证 | 软件包 |
---|---|---|
skanlite | GPL 2.0 | graphics/skanlite |
GNOME 简单扫描 | GPL 3.0 | graphics/simple-scan |
XSANE | GPL 2.0 | graphics/xsane |
最后修改于:2024 年 10 月 13 日,作者 Alexander Ziaee