Scroll to navigation

mpg123(1) General Commands Manual mpg123(1)

命令名

mpg123 - 播放 MPEG 1.0/2.0 Layer-1, -2, -3 音频文件

语法

mpg123 [ -tscvqy01m24 ][ -b size ][ -k num ][ -n num ][ -f factor ][ -r rate ][ -g gain ][ -a dev ][ -o s | -o h | -o l ][ -d n ][ -h n ][ -p proxy ][ -@ file ] file ... | URL ... | -

描述

mpg123 从一个或多个 文件 或者 URL 读取MPEG-1/2音频比特流 (如果指定 `-' 选项, 则从标准输入读取), 然后使用音频设备进行播放(默认), 或将解码结果送 到标准输出上.

选项

mpg123 接收传统的POSIX风格的单字母选项, 也接收GNU风格的长单词选项. 这两 种选项分别以 `-' 和 "--" 开头.

测试模式. 对音频流进行解码, 但不输出.
将解码结果送到标准输出上, 而不使用音频设备进行播放. 如果 mpg123 不支持你的音频硬件, 你就可以试试这一选项, 这时, mpg123 以本机 字节顺序(host byte order)输出16比特的立体声线性PCM(脉冲编码调制) 音频裸数据(没有数据头).
对每一帧进行滤波器越界检查, 如发生则报告之.
播放时显示更多信息, 比如显示当前正在解码的帧号.
安静模式. 不显示诊断信息.
如果输入文件发生错误, 则重新进行同步并继续解码. 另外, 对那些文件 头损坏的MPEG文件, 通常 mpg123 会拒绝播放并显示 ' Illegal header', 但如果指定本选项, mpg123 会试图从损坏的文件头中恢复并进行播放. 小心: 损坏的MPEG文件在播放到损坏处时可能出现尖利刺耳的噪声, 如果 音量过大, 可能损坏扬声器.
-0, --single0; -1, --single1
只对0(左) 声道或者1(右) 声道进行解码. 这两个选项只对立体声的MPEG 音频流有效.
将两个声道混音. 此选项只对MPEG Layer-3的立体声音频流有效, 并可比 完全立体声解码节省一些 CPU时间.
-2, --2to1; -4, --4to1
将输出流的采样率将低至标准的1/2 (22kHz) 或者1/4 (11kHz). 使用这 两个选项可以减少一些CPU的负荷, 但是声音质量会下降(至少使用11kHz 采样率时会很难听).
size 指定输出缓冲区的大小, 单位为千字节. 使用此选项通常可以避 免由频繁的系统操作造成的 声音输出时断时续的现象. size 的值小于 300时就没什么意义了, 建议至少取1024(即使用1Mb的缓冲区, 可以缓冲 相当于6秒钟的音频数据). size 的默认值为0, 即不进行输出缓冲.
跳过前 num 帧. 不指定此选项时, 默认从第1帧开始解码.
只对前 num 帧进行解码. 不指定此选项时, 默认对整个音频流进行解码.
改变缩放因子 factor 的值(默认值为32768).
设置采样率 rate (默认为自动设置). 使用这一选项后, mpg123 会自动 将速率转换成不依赖于MPEG流速率的一个恒定比特率. 此选项应该和 --stereo 或 --mono 联合起来使用.
设置音频硬件输出增益 gain (默认为保持不变).
指定音频设备. 默认的音频设备与系统配置有关(通常是 /dev/audio 或 /dev/dsp ), 如果系统中有多个音频设备而默认的又不是你想用的那个, 就可使用本选项.
将声音导出到主板上的扬声器上.
将声音导出到耳机连接器上.
将声音导出到Line-Out连接器上.
n 帧播放一帧. 这会使MPEG流的播放速度提高为正常速度的 n 倍, 从而可以产生特殊的声音效果. 此选项可以和 --halfspeed 选项组合使 用, 实现类似每4帧播放3帧(译者注: 指定-d 4 -h 3)的效果. 如果使用 此选项, 不要指望声音质量会很好.
将每帧都播放 n 遍. 这会使MPEG流的播放速度降低为正常速度的 1/n, 从而可以产生特殊的声音效果. 此选项可以和 --doublespeed 选项组合 使用, 实现类似每3帧播放2帧(译者注: 指定-h 2 -d 3)的效果. 如果使 用此选项, 不要指望声音质量会很好.
指定 proxy 作为HTTP请求的代理. 指定的格式应是一个完整的URL (如"http://host.domain:port/"), 但是可以省略前缀"http://", 端口 号port(默认的端口为80)和末尾的'/'. 如果指定为 none ,则不使用代 理, 直接向服务器请求文件. 更多细节请看 "HTTP 支持" 小节.
如果通过HTTP下载文件时服务器要求提供认证信息, 则由 auth 指定, 其 格式为 "用户名:密码" (不包括引号).
-@ file, --list file
file 指定的文件中读取将要播放的MPEG音频流所在的文件和(或)URL, 如果 命令行中还指定了其它的文件和(或)URL, 也将其包含进播放清单. 如果指定 file 为 `-'而非一个普通的文件名, mpg123 将从标准输入读 取文件名和(或)URL, 或者读取一个指向播放清单文件的URL. 注意: -@ 选项只能使用一次(如果多处指定, 则只有最后一个有效).
随机播放. 按随机的顺序播放命令行和清单文件中指定的音频文件.
强制立体声输出.
强制在播放完一个文件后重新打开音频设备.
--8bit
强制8比特输出.
完全随机播放. (译者注: 与 --shuffle 选项的区别是, 指定本选项有可 能重复多次播放同一文件)

操作数

mpg123 支持下面的操作数:

指定输入文件的路径. 这些文件必须包含合法的MPEG-1/2音频 Layer-1, Layer-2或Layer-3的比特流. 如果指定为'-', 将从标准输入读取MPEG数 据. 进一步, 如果以"http://"开头, 则认为指定 了一个 URL (请看下一 节).

HTTP 支持

除了能从普通文件和标准输入读取MPEG音频流, mpg123 还支持通过HTTP协 议从万 维网(WWW)上获取由URL(统一资源定位符)指定的文件. 一个URL是一个以 "http://" 为前缀的字符串, 当 mpg123 识别到这个前缀, 它会尝试开启一个 到相应服务器的连接, 接着获取相应的文件并进行解码播放.

很多时候, 从WWW缓存, 或所谓的网络代理比直接从服务器更容易获取文件. 为利 用这种便利, mpg123 会依次检查 MP3_HTTP_PROXY, http_proxyHTTP_PROXY, 这三个环境变量是否被设置, 并将第一个被设置的变量的值作为指定的代理. 如 果你需要自己指定另外的代理, 可以使用 -p 命令行选项 (请看"选项"小节). 使用 -p none 选项将不使用任何代理而直接连接服务器, 即使前面所述的三个 变量被设置.

值得注意的是, 为了能从一个WWW服务器获取并流畅地播放MPEG音频文件, 必须有 足够快的网络连接. 例如, 为了能播放速率为128kbit/s的MPEG文件, 所需的 网络带宽至少应该是128kbit/s加上网络协 议本身的传输开销. 如果网络常发生 短时中断, 可以试试用 -b 选项指定一个缓冲区. 如果你所在的网络根本无 法达到实时传输MPEG音频文件所需的带宽, 就只好使用 lynx(1) 之类的软件先将 文件下载到本地硬盘上再进行播放了.

如果服务器要求认证, 可以使用 -u auth 选项(请看"选项"小节)指定用户名和密 码.

中断

任何时候按Ctrl-C键都能中断 mpg123 的运行. 如果有多个文件在播放, Ctrl-C 会终止当前文件的播放并 开始播放下一个文件, 这种情况下, 如果你想终止整 个程序的运行, 必须连按两次Ctrl-C (在约一秒钟之内).

注意, 按了Ctrl-C之后声音也许不会马上消失, 这是因为系统的音频设备缓冲了 一部分数据. 这种延迟随系统不同而不同, 但通常都不超过1到2秒.

相关说明

lynx(1), sox(1), intro(1)

注意

MPEG音频解码, 特别是Layer-3的解码, 需要CPU进行大量的运算. 为能达到实时 解码, 你的计算机至少应该配备Pentium, Alpha, SuperSparc或性能相当的处 理器. 同时你可以使用 -singlemix 选项进行单声道解码, 对Layer-3, 这多少 能减少一点CPU负荷. 此外你也可以考虑使用 -2-4 选项.

如果这些方法都不奏效, 试试用 -s 选项将解码结果送到标准输出上并将其定向 到一个文件中, 然后再用适当的工具播放这个文件. 你也许会用到 sox(1) 这个 工具, 它能将文件转换成你的音频播放器所用的格式.

还有一点就是 mpg123 总是输出16比特的立体声数据(如果指定 -0-1 选项中 的一个, 立体声两个声道的数据是相同的). 如果系统硬件要求其它格式, 比如8 比特的单声道的数据, 同样可以使用 sox(1) 进行转化.

如果你的系统本身足够快, 能够进行实时解码, 只是在系统负荷较重时(如定时任 务, 用户远程登录或启动`大'程序等)出现停顿, 你应该用 -b 选项指定一个不小 于1000K字节的缓冲区.

BUGS

已知的BUG和局限性:

MPEG-2, Layer-1和-2未经 测试. 可能不能工作.(Layer-3应该能工作.)
不提供对自由格式的音频流的支持.
对Layer-1的支持未经 严格测试.
未进行CRC错误校验.
没有对DEC Digital Unix, Ultrix 和 IBM AIX平台上的音频硬件提供支 持, 因此在这些平台上必须使用 -s 选项.

作者

主要作者:

Michael Hipp <hippm@informatik.uni-tuebingen.de>
使用了下面的代码或借鉴了其中的思想:

MPEG Software Simulation Group (Base package)
Philipp Knirsch <phil@mpik-tueb.mpg.de> (DCT36/manual unroll)
Tobias Bading <bading@cs.tu-berlin.de> (subband synthesis)
Jeff Tsay <ctsay@pasteur.eecs.berkeley.edu> (DCT36)
Thomas Woerner (SGI Audio)
Damien Clermonte <clermond@esiee.fr> (HP-UX audio fixes)
Oliver Fromme <oliver.fromme@heim3.tu-clausthal.de>

网络参考资料: http://www.sfs.nphil.uni-tuebingen.de/~hipp/mpg123.html
http://www.heim3.tu-clausthal.de/~olli/mpg123/
(包含关于mpg123邮件组的信息)

在此获取最新版本:
http://ftp.tu-clausthal.de/pub/unix/audio/mpg123

[中文版维护人]

linuxipy <groove@ustc.edu>

[中文版最新更新]

2004/2/29

《中国linux论坛man手册页翻译计划》:

http://cmpp.linuxforum.net

本页面中文版由中文 man 手册页计划提供。
中文 man 手册页计划:https://github.com/man-pages-zh/manpages-zh

21 Apr 1997