AzuraCastは、Icecast(現在はIcecast 2.4.0-kh10-ac4)を使用してライブラジオを放送しています。
Icecastには、新しいリスナーが接続したときにメディアファイルをライブストリームの前に追加するオプションがあります。
これは Icecast Documentation が<intro>
オプション(私の太字)について言わなければならないことです:
これらのコンテンツが接続時に新しいリスナーに送信されるが、通常のストリームが送信される前にファイルを指定するオプションの値。 指定されたファイルの形式がストリーミング形式と一致するであることを確認してください。指定されたファイルは、開かれる前にwebrootに追加です。
イントロファイルがストリームとまったく同じエンコード形式であることを完全に確認するために、テスト用のイントロファイルとして使用するストリームの短いダンプ(mplayer -dumpstream <mountpoint_url>
)を使用しました。
現在、ステーションのIcecast構成ファイルは、通常、AzuraCastが実行されているサーバーの/var/azuracast/stations/<station_slug>/config/icecast.xml
にあります(デフォルト設定)。
私が最初に遭遇した問題は、AzuraCastがIcecastを起動または再起動するたびにicecast.xml
ファイルを上書きするため、直接編集できないことです。
幸運にも、カスタム構成フィールド(プロファイルの編集>の下にあります)にJSONを入力して、Icecast設定(の一部)をオーバーライドすることができました。 ブロードキャスト)。次に例を示します。
{
"location" : "Overrides location",
"mount" : [{
"intro" : "/intro-128.mp3"
},{
"intro" : "/intro-64.aac"
}],
"paths" : {
"webroot" : "/usr/local/share/icecast/web"
},
"directory" : {
"yp-url-timeout" : "15",
"yp-url" : "http://dir.xiph.org/cgi-bin/yp-cgi"
}
}
そしてこれは、Icecastが再起動されたときにicecast.xml
内のXMLに正常に変換されます(関連するタグを保持するだけです)。
<icecast>
<location>Overrides location</location>
...
<mount type="normal">
<mount-name>/radio.mp3</mount-name>
...
<intro>/intro-128.mp3</intro>
</mount>
<mount type="normal">
<mount-name>/radio.aac</mount-name>
...
<intro>/intro-64.aac</intro>
</mount>
<paths>
<basedir>/usr/local/share/icecast</basedir>
<webroot>/usr/local/share/icecast/web</webroot>
...
</paths>
...
<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
</directory>
</icecast>
しかし、それを機能させるための<intro>
と<webroot>
の設定の組み合わせを理解することはできません。
奇妙なことに、デフォルトの<webroot>
値はサーバーにも存在しません。パスを作成してイントロファイルをそこに配置しようとしましたが、再生されず(Icecastを再起動した後でも)、http://<Host:port>/intro-128.mp3
を直接リクエストしたときに表示されません(Webに直接配置されているため期待できます)ルート)。
また、<webroot>
の値を別のディレクトリに変更すると、Icecast Webフロントエンドが機能しなくなり(ストリームは引き続き機能しましたが)、イントロファイルを直接要求しても機能しませんでした。
AzuraCastが何らかの方法でIcecastのリクエストをファイルシステムに「リダイレクト」しているのではないかと思われます。
私のAzuraCastは、VPS内のDockerインストールで実行されています。もちろん、これらすべてのパスとファイルdoはDockerボリュームの内部にあります。しかし、念のため、私もホストサーバー上に直接パスを作成しようとしましたが、これまでのところ成功していません。
Icecastでオーバーライドされた場所を確認でき、ストリームが dir.xiph.org に登録されるため、icecast.xml
の変更が有効になっていることを確認します。
マウントのイントロファイルを設定するには、最初にIcecastのウェブルート内のどこかで利用できるようにする必要があります。これは事実上/usr/local/share/icecast/web
insidestations
Dockerサービス。これを行うには、AzuraCastのドキュメントで説明されている方法を使用してファイルを カスタムのデフォルトトラックを使用 にマップする必要があります。
AzuraCastの更新時にdocker-compose.yml
が上書きされる可能性があるため、docker-compose.override.yml
を作成(または編集)してマッピングを追加します。
ホストサーバーのシェルからdocker-compose.override.yml
を作成または編集するには、次のように入力します。
# cd /var/azuracast
# nano docker-compose.override.yml
次のYAMLコンテンツを貼り付けます(フィッティングへのパスを調整します)。
version: '2.2'
services:
stations:
volumes:
- /path/to/your/file.mp3:/usr/local/share/icecast/web/intro.mp3
(nanoでは、^ Oを押して保存し、^ Xを押して終了します。)
新しいマッピングを有効にするには、Dockerサービスを(完全に)再起動する必要があります。シェルで:
# docker-compose down
# docker-compose up -d
# docker-compose start
貧弱なOPのようにステーションのIcecast設定を編集する代わりに、マウントポイントの設定でイントロ設定を指定する方がはるかに簡単です。
Mount Pointsをクリックしてから、特定のマウントポイントのEditボタンをクリックします。 カスタムフロントエンド構成(一番下)の下に、次の行を追加します。
{ "intro" : "intro.mp3" }
また、ファイル名がdocker-compose.override.yml
で設定したものと一致していることを確認してください。
変更を保存をクリックしてから、オレンジ色変更の適用を再開をクリックしてIcecastを再開します。
あなたの美しいイントロを聞くためにあなたのステーションにチューニングしてください。