mpg123 本身是支持 URL MP3 的,可惜它只支持 http 协议的 url mp3,好在 mpg123 还支持从 standard input 中读取 MPEG data,这样以来我们可以通过组合 curl 与 mpg123 来实现播放 https 协议的 URL MP3。
#!/bin/bash# play https mp3 using mpg123function https_url_p (){ local url=$1 echo $url |egrep "^https://" >/dev/null}uri=$1if https_url_p $uri;then curl -L $uri | mpg123 -else mpg123 $curifi原理很简单,先判断一个文件是否以 https:// 开头,若是的话,则认为是 https url mpg3,那么通过 curl 将其内容取出来,通过管道发给 mpg123 来播放,事实上,curl 支持超多的网络协议,你可以很容易的扩展到 file、ftp、ftps、rtmp 等各种网络协议上。
不过要一个一个判断网络协议的种类就太麻烦了,可以简化成这样:
mpg123 $1 || curl -L $1 |mpg123 -
先尝试用 mpg123 直接播放,失败的话再听过 curl 获取 MPEG DATA 交给 mpg123 来播放。

