Man page - mpg123(1)

Manual

mpg123

命 令 名
语 法
描 述
选 项
操 作 数
HTTP 支 持
中 断
相 关 说 明
注 意
BUGS
作 者
[中 文 版 维 护 人 ]
[中 文 版 最 新 更 新 ]
《 中 国 linux论 坛 man手 册 页 翻 译 计 划 》 :


命 令 名

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风 格 的 长 单 词 选 项 . 这 两 种 选 项 分 别 以 ‘-’ 和 "--" 开 头 .
-t
, --test

测 试 模 式 . 对 音 频 流 进 行 解 码 , 但 不 输 出 .

-s , --stdout

将 解 码 结 果 送 到 标 准 输 出 上 , 而 不 使 用 音 频 设 备 进 行 播 放 . 如 果 mpg123 不 支 持 你 的 音 频 硬 件 , 你 就 可 以 试 试 这 一 选 项 , 这 时 , mpg123 以 本 机 字 节 顺 序 (host byte order)输 出 16比 特 的 立 体 声 线 性 PCM(脉 冲 编 码 调 制 ) 音 频 裸 数 据 (没 有 数 据 头 ).

-c , --check

对 每 一 帧 进 行 滤 波 器 越 界 检 查 , 如 发 生 则 报 告 之 .

-v , --verbose

播 放 时 显 示 更 多 信 息 , 比 如 显 示 当 前 正 在 解 码 的 帧 号 .

-q , --quiet

安 静 模 式 . 不 显 示 诊 断 信 息 .

-y , --resync

如 果 输 入 文 件 发 生 错 误 , 则 重 新 进 行 同 步 并 继 续 解 码 . 另 外 , 对 那 些 文 件 头 损 坏 的 MPEG文 件 , 通 常 mpg123 会 拒 绝 播 放 并 显 示 ’ Illegal header’, 但 如 果 指 定 本 选 项 , mpg123 会 试 图 从 损 坏 的 文 件 头 中 恢 复 并 进 行 播 放 . 小 心 : 损 坏 的 MPEG文 件 在 播 放 到 损 坏 处 时 可 能 出 现 尖 利 刺 耳 的 噪 声 , 如 果 音 量 过 大 , 可 能 损 坏 扬 声 器 .

-0 , --single0 ; -1 , --single1

只 对 0(左 ) 声 道 或 者 1(右 ) 声 道 进 行 解 码 . 这 两 个 选 项 只 对 立 体 声 的 MPEG 音 频 流 有 效 .

-m , --singlemix

将 两 个 声 道 混 音 . 此 选 项 只 对 MPEG Layer-3的 立 体 声 音 频 流 有 效 , 并 可 比 完 全 立 体 声 解 码 节 省 一 些 CPU时 间 .

-2 , --2to1 ; -4 , --4to1

将 输 出 流 的 采 样 率 将 低 至 标 准 的 1/2 (22kHz) 或 者 1/4 (11kHz). 使 用 这 两 个 选 项 可 以 减 少 一 些 CPU的 负 荷 , 但 是 声 音 质 量 会 下 降 (至 少 使 用 11kHz 采 样 率 时 会 很 难 听 ).

-b size , --buffer size

size 指 定 输 出 缓 冲 区 的 大 小 , 单 位 为 千 字 节 . 使 用 此 选 项 通 常 可 以 避 免 由 频 繁 的 系 统 操 作 造 成 的 声 音 输 出 时 断 时 续 的 现 象 . size 的 值 小 于 300时 就 没 什 么 意 义 了 , 建 议 至 少 取 1024(即 使 用 1Mb的 缓 冲 区 , 可 以 缓 冲 相 当 于 6秒 钟 的 音 频 数 据 ). size 的 默 认 值 为 0, 即 不 进 行 输 出 缓 冲 .

-k num , --skip num

跳 过 前 num 帧 . 不 指 定 此 选 项 时 , 默 认 从 第 1帧 开 始 解 码 .

-n num , --frames num

只 对 前 num 帧 进 行 解 码 . 不 指 定 此 选 项 时 , 默 认 对 整 个 音 频 流 进 行 解 码 .

-f factor , --scale factor

改 变 缩 放 因 子 factor 的 值 (默 认 值 为 32768).

-r rate , --rate rate

设 置 采 样 率 rate (默 认 为 自 动 设 置 ). 使 用 这 一 选 项 后 , mpg123 会 自 动 将 速 率 转 换 成 不 依 赖 于 MPEG流 速 率 的 一 个 恒 定 比 特 率 . 此 选 项 应 该 和 --stereo 或 --mono 联 合 起 来 使 用 .

-g gain , --gain gain

设 置 音 频 硬 件 输 出 增 益 gain (默 认 为 保 持 不 变 ).

-a dev , --audiodevice dev

指 定 音 频 设 备 . 默 认 的 音 频 设 备 与 系 统 配 置 有 关 (通 常 是 /dev/audio 或 /dev/dsp ), 如 果 系 统 中 有 多 个 音 频 设 备 而 默 认 的 又 不 是 你 想 用 的 那 个 , 就 可 使 用 本 选 项 .

-o s , --speaker

将 声 音 导 出 到 主 板 上 的 扬 声 器 上 .

-o h , --headphones

将 声 音 导 出 到 耳 机 连 接 器 上 .

-o l , --lineout

将 声 音 导 出 到 Line-Out连 接 器 上 .

-d n , --doublespeed n

n 帧 播 放 一 帧 . 这 会 使 MPEG流 的 播 放 速 度 提 高 为 正 常 速 度 的 n 倍 , 从 而 可 以 产 生 特 殊 的 声 音 效 果 . 此 选 项 可 以 和 --halfspeed 选 项 组 合 使 用 , 实 现 类 似 每 4帧 播 放 3帧 (译 者 注 : 指 定 -d 4 -h 3)的 效 果 . 如 果 使 用 此 选 项 , 不 要 指 望 声 音 质 量 会 很 好 .

-h n , --halfspeed n

将 每 帧 都 播 放 n 遍 . 这 会 使 MPEG流 的 播 放 速 度 降 低 为 正 常 速 度 的 1 / n , 从 而 可 以 产 生 特 殊 的 声 音 效 果 . 此 选 项 可 以 和 --doublespeed 选 项 组 合 使 用 , 实 现 类 似 每 3帧 播 放 2帧 (译 者 注 : 指 定 -h 2 -d 3)的 效 果 . 如 果 使 用 此 选 项 , 不 要 指 望 声 音 质 量 会 很 好 .

-p URL | none , --proxy URL | none

指 定 proxy 作 为 HTTP请 求 的 代 理 . 指 定 的 格 式 应 是 一 个 完 整 的 URL (如 "http://host.domain:port/"), 但 是 可 以 省 略 前 缀 "http://", 端 口 号 port(默 认 的 端 口 为 80)和 末 尾 的 ’/’. 如 果 指 定 为 none ,则 不 使 用 代 理 , 直 接 向 服 务 器 请 求 文 件 . 更 多 细 节 请 看 "HTTP 支 持 " 小 节 .

-u auth , --auth auth

如 果 通 过 HTTP下 载 文 件 时 服 务 器 要 求 提 供 认 证 信 息 , 则 由 auth 指 定 , 其 格 式 为 "用 户 名 :密 码 " (不 包 括 引 号 ).

-@ file , --list file

file 指 定 的 文 件 中 读 取 将 要 播 放 的 MPEG音 频 流 所 在 的 文 件 和 (或 )URL, 如 果 命 令 行 中 还 指 定 了 其 它 的 文 件 和 (或 )URL, 也 将 其 包 含 进 播 放 清 单 . 如 果 指 定 file 为 ‘-’而 非 一 个 普 通 的 文 件 名 , mpg123 将 从 标 准 输 入 读 取 文 件 名 和 (或 )URL, 或 者 读 取 一 个 指 向 播 放 清 单 文 件 的 URL. 注 意 : -@ 选 项 只 能 使 用 一 次 (如 果 多 处 指 定 , 则 只 有 最 后 一 个 有 效 ).

-z , --shuffle

随 机 播 放 . 按 随 机 的 顺 序 播 放 命 令 行 和 清 单 文 件 中 指 定 的 音 频 文 件 .

--stereo

强 制 立 体 声 输 出 .

--reopen

强 制 在 播 放 完 一 个 文 件 后 重 新 打 开 音 频 设 备 .

--8bit

强 制 8比 特 输 出 .

-Z , --random

完 全 随 机 播 放 . (译 者 注 : 与 --shuffle 选 项 的 区 别 是 , 指 定 本 选 项 有 可 能 重 复 多 次 播 放 同 一 文 件 )

操 作 数

mpg123 支 持 下 面 的 操 作 数 :

file

指 定 输 入 文 件 的 路 径 . 这 些 文 件 必 须 包 含 合 法 的 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_proxy HTTP_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