Проблемы с настройкой <on-connect> в icecast.xml
Я определил следующую точку монтирования в проекте icecast.xml:
<mount type="normal">
<mount-name>/data.ogg</mount-name>
.....
<on-connect>sh /bin/stream-start.sh</on-connect>
</mount>
И определил скрипт stream.sh в /bin/stream-start.sh
,
Предполагается, что когда http://..../data.ogg
запрос выполнен, stream-start.sh должен быть выполнен, но не выполнен. У меня сейчас следующие вопросы:
- Как должен быть определен сценарий при подключении (/bin/stream-start или /bin/stream-start.sh)
- как вы можете передать параметры в стартовый скрипт.
1 ответ
В общем, вы найдете полезным изучить журналы Icecast. И то и другое access.log
а также error.log
может содержать важную информацию. Также может быть полезно настроить loglevel
и перезапустите Icecast, чтобы он вступил в силу.
https://icecast.org/docs/icecast-2.4.1/config-file.html
по подключению
Укажите программу, которая запускается при запуске источника. Передается параметр, который является именем точки монтирования, которая запускается. Обработка потока не ожидает завершения сценария.
Следует проявлять осторожность, поскольку существует небольшая вероятность того, что дескрипторы потоковых файлов будут смешаны с дескрипторами файлов сценариев, если номера FD превысят 1024. Это будет рассмотрено в следующем выпуске Icecast.
Эта опция недоступна на Win32
(акцент мой)
https://icecast.org/docs/icecast-2.4.1/config-file.html
Также обратите внимание, что вы не можете полагаться на "обычные" переменные окружения присутствующей интерактивной оболочки, так как, например, PATH не будет заполняться. Вы можете просто export >/tmp/on-connect-env.txt
из сценария и изучите его содержимое, чтобы понять, с чем вы будете работать. Также вы не можете передать интерпретатор как часть команды, как вы делали выше, вы должны поместить интерпретатор с его полным путем в шебанг (#!
) в первой строке сценария.