我正在尝试用liquid对流进行转码,并输出到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))当我尝试用./radi.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.发布于 2016-09-29 14:14:32
您应该启动liquidsoap解释器,并将您的脚本提供给它,如下所示:
liquidsoap radio.liq
在您的示例中,您直接从命令行启动脚本,它将转到shell (bash),而不是liquidsoap。
发布于 2016-10-29 05:56:16
添加到Alexeys答案的评论中。
您的脚本没有运行,因为您没有告诉脚本使用哪个应用程序来运行它。在windows上,文件扩展名(.exe、.txt或.doc)用于区分要打开的应用程序。在Unix上,第一行被称为"sha“,它告诉操作系统哪个应用程序必须运行这个文件。
因此,如果您首先使用以下命令检查您的liquidsoap的安装位置:
which liquidsoap然后将响应路径添加到脚本的第一行,如下所示:
#!/usr/bin/liquidsoapUnix现在将知道用哪个应用程序打开它。
在您的第二个观察结果(不是问题)上,可以看到溢出,因为您正在使用http从Icecast服务器获取流。Icecast服务器通常被配置为在连接时将一些数据“突发”给你(通常是为了让玩家填满他们的缓冲区)。无论如何,input.http命令中使用的缓冲区对于这种突然的数据突发来说太小了,因此liquidsoap抛出了一个溢出异常。要解决此问题,请增加最大缓冲区。
input = mksafe(input.http(url,buffer=2.,max=120.))https://stackoverflow.com/questions/39758671
复制相似问题