在我的 Ubuntu 机器上,我同时拥有和mpg123
(尽管前者链接到)。mpg-alsa
/usr/bin
/etc/alternatives/mpg123
两者的文档都只是说它们读取文件和 URL 并在音频设备上播放它们。
有什么区别?(注意:我遇到了音频问题(噪音、卡顿),想知道其中一个或两个是否可以帮助找到我的问题(声卡/cpu/pulseaudio/alsa/player/...)。)
答案1
如果你检查 /usr/bin 中与 mpg123 相关的文件,你会看到
0 lrwxrwxrwx 1 root root 24 2013-12-21 21:52 /usr/bin/mpg123 -> /etc/alternatives/mpg123*
4 -rwxr-xr-x 1 root root 50 2013-12-20 06:41 /usr/bin/mpg123-alsa*
20 -rwxr-xr-x 1 root root 18236 2013-12-20 06:41 /usr/bin/mpg123-id3dump*
4 -rwxr-xr-x 1 root root 50 2013-12-20 06:41 /usr/bin/mpg123-jack*
4 -rwxr-xr-x 1 root root 49 2013-12-20 06:41 /usr/bin/mpg123-nas*
4 -rwxr-xr-x 1 root root 52 2013-12-20 06:41 /usr/bin/mpg123-openal*
4 -rwxr-xr-x 1 root root 49 2013-12-20 06:41 /usr/bin/mpg123-oss*
4 -rwxr-xr-x 1 root root 55 2013-12-20 06:41 /usr/bin/mpg123-portaudio*
12 -rwxr-xr-x 1 root root 9912 2013-12-20 06:41 /usr/bin/mpg123-strip*
132 -rwxr-xr-x 1 root root 132764 2013-12-20 06:41 /usr/bin/mpg123.bin*`
您应该注意到 mpg123 的“声音系统特定”版本非常小。
检查 mpg123-alsa 会发现
$> file /usr/bin/mpg123-alsa
/usr/bin/mpg123-alsa: POSIX shell script, ASCII text executable
$> cat /usr/bin/mpg123-alsa
#!/bin/sh
exec /usr/bin/mpg123.bin -o alsa "$@"
[注意:不要盲目地 cat 任何文件,特别是 /bin、/usr/bin、/lib、/usr/lib 等文件,因为如果文件是二进制文件,它会弄乱你的终端,并且通常还会导致 PC 扬声器发出很多哔哔声(如果启用了该功能)。]
它只是一个简单的“方便”的 shell 脚本,用于调用实际的 mpg123 二进制文件,其输出默认为 ALSA 接口。
请忽略下面的答案,其中指出
“ALSA 不为 mpg123 提供支持”
因为发帖人误解了(实际上是颠倒了信息)Alsa-Project 页面上的内容。[请注意,Alsa-Project 页面非常有用,但它没有保持最新状态,并且那里的一些信息早已过期。] ALSA 不支持任何特定应用程序,但它是为用户提供特定声音系统接口支持的应用程序(PulseAudio、ALSA、OSS、esound 等)。该网页指出,旧的弃用 ALSA 0.5 版本不再可用于 mpg123,但页面尚未更新,无法说明最新和最好的 mpg123 确实适用于当前的 ALSA 版本。
因此,要回答您的问题,将 mpg123 的输出手动设置为输出到 ALSA(使用 -o 命令行标志和参数 alsa)与仅使用 mpg123-alsa 完全相同
至于您遇到的 PulseAudio 点击/卡顿问题,您实际上对此有一个单独的问题,并且其原因可能来自许多地方。
如果在播放声音文件时出现咔嗒声/卡顿,则最常见的怀疑点就是重采样方法,播放时必须重新采样以匹配硬件采样率(通常为 48.0 kHz 甚至 96.0 kHz),而硬件采样率不同于音频声音文件的采样率(通常但不总是 44.1 kHz)。
如果选择重采样方法来提供绝对最佳质量,则可能会对可用的 PC 实时资源造成太大压力,因此在 /etc/pulse/daemon.conf 中选择质量较低的方法
resample-method = speex-float-1
然后检查声音输出,看是否没有明显的咔嗒声/卡顿,这样就可以做出诊断。如果这是问题所在,那么通过反复试验,逐渐将重采样方法的质量(和系统负载)提高到一级,或者在咔嗒声/卡顿开始之前将其降低到二级,这将是解决方案。
有关 PulseAudio 配置的更多信息,特别是与重采样方法相关的信息,请参阅
Freedesktop - PulseAudio 文档 用户发烧友
当然还有原版的 DEFINITIVE 配置指南
需要说明的是,为了消除许多 Ubuntu 用户相信和传播的谬论,这不是使用 PulseAudio 的情况或者ALSA——如果您使用位于 ALSA 之上的 PulseAudio,那么您就是在使用 ALSA,只是不是直接使用。
此外,Ubuntu 上 ALSA 的默认配置(在 /usr/share/alsa/pulse-alsa.conf 中设置)是将发送到默认 ALSA ctl 和 pcm 的声音发送到 PulseAudio,而不是默认 ALSA 硬件设备 hw:0,因此如果使用 ALSA 默认值而不指定硬件设备 hw:0 或者如果需要重采样 plughw:0,则实际上会发送到 PulseAudio
答案2
ALSA(高级Linux声音架构)为sound driver
Linux 操作系统提供音频和 MIDI 功能。以前它支持 mpg123
旧版本 0.5.0 的 ALSA。现在 ALSA 不再提供支持,mpg123
并宣布它已弃用。更多信息这里
mpg123是一个音频播放器和解码器库