如何优化皂液?
How to optimize liquidsoap?
我想用 Icecast 转播 ~40 个广播并将它们转码为 3 个比特率 (32,64,128)
中继所有无线电并将它们转码为 32 比特率工作正常,但在 64、128 上不起作用
液体肥皂日志:
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.03s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.04s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.03s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.02s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.03s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.03s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.03s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.03s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.03s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.03s.
液体肥皂配置:
set("buffering.kind","raw")
set("log.file", true)
def my_input(url) =
mksafe(input.http(buffer=5., max=20., url));
end
def outputs(name, mount, input) =
output.icecast(
%mp3(bitrate=32, samplerate=22050, stereo=false),
******
mean(input))
output.icecast(
%mp3(bitrate=64,samplerate=44100,stereo=true),
******
input)
output.icecast(
%mp3(bitrate=128,samplerate=44100,stereo=true),
******
input)
end
url = "http://localhost:8000/radio1"
input = my_input(url)
outputs("Radio1", "radio1", input)
#..............
url = "http://localhost:8000/radio40"
input = my_input(url)
outputs("Radio40", "radio40", input)
冰冻限制:
服务器信息:
6 cores(average load 40%)
6GB RAM
htop 屏幕:
不幸的是,这种情况下的负载是针对编解码器的,您无法做很多事情来减少它。将您的转码拆分到多个服务器。
就其价值而言,我通常可以在最便宜的 Digital Ocean 盒子上转码 12 个流。如果您还没有为此使用廉价 VPS 托管,我推荐它!只要确保使用 New Relic 之类的东西监视 CPU 并在他们切入您分配的周期时转移到新主机。您的编解码器需要持续可用 CPU 以保持缓冲区满。
此外,我不知道您的源流是什么,但我强烈建议您从无损源开始。有损编解码器会降低质量,在链中使用多个编解码器会进一步降低质量。
我想用 Icecast 转播 ~40 个广播并将它们转码为 3 个比特率 (32,64,128)
中继所有无线电并将它们转码为 32 比特率工作正常,但在 64、128 上不起作用
液体肥皂日志:
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.03s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.04s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.03s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.02s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.03s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.03s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.03s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.03s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.03s.
2015/07/24 11:36:56 [:3] Buffer overrun: Dropping 0.03s.
液体肥皂配置:
set("buffering.kind","raw")
set("log.file", true)
def my_input(url) =
mksafe(input.http(buffer=5., max=20., url));
end
def outputs(name, mount, input) =
output.icecast(
%mp3(bitrate=32, samplerate=22050, stereo=false),
******
mean(input))
output.icecast(
%mp3(bitrate=64,samplerate=44100,stereo=true),
******
input)
output.icecast(
%mp3(bitrate=128,samplerate=44100,stereo=true),
******
input)
end
url = "http://localhost:8000/radio1"
input = my_input(url)
outputs("Radio1", "radio1", input)
#..............
url = "http://localhost:8000/radio40"
input = my_input(url)
outputs("Radio40", "radio40", input)
冰冻限制:
服务器信息:
6 cores(average load 40%)
6GB RAM
htop 屏幕:
不幸的是,这种情况下的负载是针对编解码器的,您无法做很多事情来减少它。将您的转码拆分到多个服务器。
就其价值而言,我通常可以在最便宜的 Digital Ocean 盒子上转码 12 个流。如果您还没有为此使用廉价 VPS 托管,我推荐它!只要确保使用 New Relic 之类的东西监视 CPU 并在他们切入您分配的周期时转移到新主机。您的编解码器需要持续可用 CPU 以保持缓冲区满。
此外,我不知道您的源流是什么,但我强烈建议您从无损源开始。有损编解码器会降低质量,在链中使用多个编解码器会进一步降低质量。