我正在尝试用液体转码流并输出到icecast2下面是我的配置从官方网站http://savonet.sourceforge.net/doc-svn/cookbook.html
# Input the stream,
# from an Icecast server or any other source
url = "http://www.protonradio.com:8000/schedule.m3u"
input = mksafe(input.http(url))
# First transcoder: MP3 32 kbps
# We also degrade the samplerate, and encode in mono
# Accordingly, a mono conversion is performed on the input stream
output.icecast(
%mp3(bitrate=32, samplerate=22050, stereo=false),
mount="/your-stream-32.mp3",
host="streaming.example.com", port=8000, password="xxx",
mean(input))
当我尝试使用。/radio.liq运行它时我得到这个错误:
root@Ubuntu:/etc/liquidsoap# ./radio.liq
./radio.liq: line 4: url: command not found
./radio.liq: line 5: syntax error near unexpected token `('
./radio.liq: line 5: `input = mksafe(input.http(url))'
root@Ubuntu:/etc/liquidsoap#
下面是我运行这个命令时的结果:
root@Ubuntu:/etc/liquidsoap# liquidsoap radio2.liq
init: security exit, root euid (user).
root@Ubuntu:/etc/liquidsoap#
此流url http://46.21.106.168:80缓冲区错误
2016/09/30 15:57:17 [http_4756:3] Buffer overrun: Dropping 0.03s.
2016/09/30 15:57:20 [http_4756:3] Buffer overrun: Dropping 0.00s.
2016/09/30 15:57:26 [http_4756:3] Buffer overrun: Dropping 0.00s.
2016/09/30 15:57:37 [http_4756:3] Buffer overrun: Dropping 0.01s.
2016/09/30 15:57:44 [http_4756:3] Buffer overrun: Dropping 0.00s.
2016/09/30 15:58:11 [http_4756:3] Buffer overrun: Dropping 0.00s.
2016/09/30 15:58:47 [http_4756:3] Buffer overrun: Dropping 0.00s.
您应该启动liquidsoap解释器并像这样向它提供脚本:
liquidsoap radio.liq
在您的示例中,您直接从命令行启动脚本,它将转到shell (bash),而不是liquidsoap。
为alexey的回答添加评论
您的脚本没有运行,因为您没有告诉脚本使用哪个应用程序运行它。在windows上,文件扩展名(.exe或.txt或.doc)用于区分打开哪个应用程序。在Unix上,称为"sha bang"的第一行告诉操作系统哪个应用程序必须运行该文件。
所以如果你首先检查你的liquidsoap安装在哪里:
which liquidsoap
然后将响应路径添加到脚本的第一行,像这样:
#!/usr/bin/liquidsoap
Unix将知道用哪个应用程序打开它。
在你的第二次观察中(不是问题),因为你正在使用http从Icecast服务器获取流而看到超支。Icecast服务器通常配置为在连接时"突发"一些数据给你(通常是为了让玩家填满他们的缓冲区)。无论如何,缓冲区在输入中使用。HTTP命令对于这种突然爆发的数据来说太小了,因此liquidsoap会抛出溢出异常。要解决这个问题,请增加最大缓冲区。
input = mksafe(input.http(url,buffer=2.,max=120.))