mpg123 和 mpg123-alsa 之间的区别

mpg123 和 mpg123-alsa 之间的区别

在我的 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 文档 用户发烧友

超频 - 最佳声音和配置 PulseAudio

ArchWiki - PulseAudio 配置

当然还有原版的 DEFINITIVE 配置指南

Freedesktop - PulseAudio 完美设置

需要说明的是,为了消除许多 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 driverLinux 操作系统提供音频和 MIDI 功能。以前它支持 mpg123旧版本 0.5.0 的 ALSA。现在 ALSA 不再提供支持,mpg123并宣布它已弃用。更多信息这里

mpg123是一个音频播放器和解码器库

相关内容