Необходимо настроить liquidsoap для транскодирования

Я пытаюсь перекодировать поток с жидкостью и выводить на 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))

Когда я пытаюсь запустить его ./радио.жидкость
Я получаю эту ошибку:

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.

2 ответа

  1. Запустите liquidsoap interpreter и скормите ему свой скрипт следующим образом:

    liquidsoap radio.liq

    В вашем примере вы запускаете скрипт из командной строки напрямую, и он переходит в shell (bash), а не liquidsoap.

  2. Добавить к комментариям Алексея ответ.

    Сценарий не был запущен, так как вы не сказали сценарию, с каким приложением его следует запустить. В windows расширение файла (.exe или .txt или .doc) используется для различения, какое приложение открыть. В Unix первая строка, известная как» sha bang», сообщает ОС, какое приложение должно запустить этот файл.

    Таким образом, если вы сначала проверить, где ваш liquidsoap установлен с:

    which liquidsoap
    

    Затем добавьте путь ответа в первую строку скриптов, например так:

    #!/usr/bin/liquidsoap
    

    Теперь Unix будет знать, с каким приложением его открывать.

    Во втором наблюдении (не проблема), переполнение видно, потому что вы получаете поток от сервера Icecast с помощью http. Сервер Icecast, как правило, настроен на «взрыв» некоторых данных вам при подключении (обычно для игроков, чтобы заполнить свои буферы). Во всяком случае, буфер, используемый во входных данных.команда http слишком мала для этого внезапного потока данных, и поэтому liquidsoap создает исключение переполнения. Чтобы исправить это, увеличьте максимальный буфер.

    input = mksafe(input.http(url,buffer=2.,max=120.))