1

我正在尝试用液体对流进行转码并输出到 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.
4

2 回答 2

0

您应该启动liquidsoap解释器并将您的脚本提供给它,如下所示:

liquidsoap radio.liq

在您的示例中,您直接从命令行启动脚本,它进入 shell(bash),而不是liquidsoap。

于 2016-09-29T06:14:32.480 回答
0

添加到 Alexeys 回答的评论中。

您的脚本没有运行,因为您没有告诉脚本使用什么应用程序来运行它。在 Windows 上,文件扩展名(.exe 或 .txt 或 .doc)用于区分要打开的应用程序。在 Unix 上,第一行被称为“sha bang”告诉操作系统哪个应用程序必须运行这个文件。

因此,如果您首先检查液体肥皂的安装位置:

which liquidsoap

然后将响应路径添加到脚本的第一行,如下所示:

#!/usr/bin/liquidsoap

Unix 现在将知道用哪个应用程序打开它。

在您的第二次观察(不是问题)中,看到溢出是因为您使用 http 从 Icecast 服务器获取流。Icecast 服务器通常配置为在连接时向您“突发”一些数据(通常让玩家填充他们的缓冲区)。无论如何,input.http 命令中使用的缓冲区对于这种突然的数据突发来说太小了,因此liquidsoap 会引发溢出异常。要解决此问题,请增加最大缓冲区。

input = mksafe(input.http(url,buffer=2.,max=120.))
于 2016-10-28T21:56:16.253 回答