0

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

トップ画面: ここに画像の説明を入力

4

1 に答える 1

2

残念ながら、この場合の負荷はコーデックに対するものであり、それを減らすためにできることはあまりありません. トランスコーディングを複数のサーバーに分割します。

価値があるのは、入手可能な最も安価な Digital Ocean ボックスで通常 12 のストリームをトランスコードできることです。これに安価な VPS ホスティングをまだ使用していない場合は、お勧めします! New Relic などで CPU を監視し、割り当てられたサイクルが中断された場合は新しいホストに移動してください。バッファをいっぱいに保つために、コーデックは CPU を常に利用できる必要があります。

また、ソース ストリームが何であるかはわかりませんが、ロスレス ソースから始めることを強くお勧めします。非可逆コーデックは品質を低下させ、チェーン内で複数のコーデックを使用するとさらに低下します。

于 2015-07-25T16:29:55.860 に答える