web-dev-qa-db-ja.com

サーバー環境で自動化されたインターネットラジオステーションを実行する方法は?

インターネットラジオストリーミングを有効にするために、Icecast-2.3.2およびices-0.4.0を使用してUbuntuサーバー環境を実行しています。

音楽ファイル(ほとんどがMP3)のディレクトリがあります。/PATH/TO/MUSICと呼びましょう。ジングルとポッドキャストのあるディレクトリもあります。 /PATH/TO/JINGLESおよび/PATH/TO/PODCASTS

これまでのところ、私のサーバーは稼働しています。

機能するもの:

  • スクリプトとcronジョブを使用して、music-directoryから毎日ランダムなプレイリストを作成します。
  • IceCast2-Serverを実行し、IceSを使用してプレイリストファイルをストリーミングします。

私の質問は今:

  • 特定の時間にポッドキャストとジングルを再生する方法は?たとえば、特定のジングルの1時間ごと、または毎週木曜日の午後8時特定のポッドキャスト?

私はこのトピックでインターネットを検索しようとしましたが、この無線自動化の問題に対する「最後の解決策」はないようです。また、多くの解決策がかなりハッキングされているようです。

これはサーバー環境であることに留意してください。GUIを使用したソリューションは役に立ちません。

このトピックに関するヒントや経験に感謝します!

5
Waqar Lim

答えは:liquidsoapです。

liquidsoap 、マルチメディアストリーミング用のスイス軍ナイフ。特にnetradiosおよびwebtvで使用されます。たくさんの機能があり、無料でオープンソースです!

ストリームの生成方法を理解するのに数日かかりました。 liquidsoapは、ストリームパラメータを記述する小さなスクリプトで構成されています。 mp3プレイリストを読み込んで再生する簡単なスクリプト、basic.liqと呼びましょう。以下に示します。

#!/usr/bin/liquidsoap

# load a playlist file
stream = playlist("/path/to/playlist.pls")

# output the playlist to icecast
source = output.icecast(%mp3, Host="localhost", port="8000",
         mount="listen.m3u", password="hackme")
source(stream)

次を使用してスクリプトをテストします。

$ liquidsoap --check ./basic.liq

そして、次を使用してスクリプトを開始します。

$ liquidsoap ./basic.liq &

しかし、液体石鹸ははるかに強力です。たとえば、1時間ごとにジングルを再生するには、次のように追加します。

# add a jingle every full hour
jingle = single("/path/to/jingle.mp3")
add([stream,switch([({0m0s},jingle)])])

ただし、ホームページにはさらに多くの機能が記載されています。

  • 静的または動的プレイリスト
  • オーディオソースの時間ベースの選択
  • 割り当てベースまたは時間ベースの挿入またはジングルの混合
  • ライブDJの介入
  • インタラクティブなユーザーリクエスト
  • 完全にカスタマイズ可能なトランジション、例:クロスフェード
  • トラックメタデータの音声合成
  • リモートファイルへの簡単なアクセス
  • などなど

クイックスタート ガイド、さらに 複雑な例 および ドキュメント をご覧ください。

2
Waqar Lim

AzuraCast:自己ホスト型Webラジオマネージャー

ソース: https://github.com/AzuraCast/AzuraCast

Azuracastは、ターンキーインストーラーツールとステーションを管理するための使いやすいWebアプリを含む、自己ホスト型のWeb無線管理スイートです。 http://azuracast.com/

特徴

AzuraCastを使用すると、次のことができます。

  • メディアの管理:Webから曲をアップロードし、音楽をフォルダーに整理し、ブラウザーで曲をプレビューします。
  • プレイリストを作成する:常に再生する標準プレイリスト、一定期間のスケジュールプレイリスト、またはx曲に1回またはx分に1回再生する特別なプレイリストを設定します。
  • ライブDJのセットアップ:ストリーマー/ DJからのライブブロードキャストを有効または無効にし、各ストリーマーが使用する個別のアカウントを作成します。
  • リスナーリクエストの取得:リスナーが、APIとシンプルな公開リスナーページの両方を介して、プレイリストから特定の曲をリクエストできるようにします。
  • 分析とレポート:ステーションのリスナーのあらゆる側面を長期にわたって追跡します。各曲のパフォーマンスのレポートを表示します。
  • ステーションオートパイロット:AzuraCastは、リスナー番号に対する曲の影響に基づいて、曲をプレイリストに自動的に割り当てることができます。
  • 委任管理:各ステーションマネージャーの個別の管理者アカウントを作成および削除します。
  • ...もっと。

サポートされているWeb Radioソフトウェア

  • AzuraCastは、LiquidSoapを「AutoDJ」として使用して、曲とプレイリストをシャッフルし、常にオンラインのラジオストリームを提供します。 LiquidSoapに接続して、独自のライブイベントをDJとしてブロードキャストすることもできます。

  • ラジオステーションを一般に放送するために、AzuraCastはWebラジオのゴールドスタンダードであるIceCast(v2.4)とShoutCast(v2)の両方をサポートしています。これらのステーションのどれを使用するかはいつでも切り替えることができます。

AzuraCastは、AzuraCastが管理していないステーションに関するリスナー統計やその他のデータを中継または収集するためのツールとして使用することもできます。

サポートされているオペレーティングシステム

AzuraCastをインストールする方法は2つあります。

  1. DockerおよびDocker Composeの使用(推奨):このメソッドには、事前作成されたコンテナーイメージ内のすべてのAzuraCast依存関係が含まれます。更新とインストールは高速で、ソフトウェアの互換性に関する問題ははるかに少ないです。この方法は、最新バージョンのDocker EngineおよびDocker Composeをサポートするコンピューターで機能します。どちらもAzuraCastインストーラースクリプトの一部としてインストールできます。

  2. 従来のインストール(Ubuntu 16.04のみ):Ubuntuのクリーンイメージから、付属のインストーラースクリプトを使用してAzuraCastをサーバーに直接インストールできます。インストーラースクリプトは、Ansibleを使用して依存関係を管理します。この方法を使用すると、インストールと更新が遅くなりますが、インストールしたソフトウェアをより詳細に制御できます。サーバーに他のソフトウェアがインストールされている場合、AzuraCastと競合する可能性があるため、常にこの方法を使用してクリーンインストールから開始してください。

ホストオペレーティングシステムとの互換性を常に拡大することを検討しており、他の環境用の新しい展開スクリプトを構築する際の支援を歓迎します。

AzuraCastに含まれるもの

従来のインストーラーを使用する場合でも、Dockerコンテナーを使用する場合でも、AzuraCastは同じソフトウェアスタックに依存して動作します。

  • Webページとラジオプロキシを提供するNGINX
  • プライマリデータベースとしてのMariaDB
  • PHP 7.2によるWebアプリケーションの強化
  • 時系列ベースの統計のためのInfluxDB
  • セッション、データベース、および一般的なキャッシュ用のRedis
  • 常に再生される「AutoDJ」としてのLiquidSoap
  • ラジオ放送フロントエンドとしてのIceCast 2(サポートされているプラ​​ットフォームにインストールされたIcecast-KH)
  • 代替無線フロントエンドとしてのShoutCast 2 DNAS(x86/x64のみ)AzuraCastのインストール

AzuraCastのインストール

Dockerのインストール(推奨)

Docker経由でAzuraCastをインストールして使用することを強くお勧めします。必要なソフトウェアパッケージはすべて自動化されたツールによって構築されているため、プリコンパイルされたイメージをプルダウンするだけで簡単にインストールできます。ホストのオペレーティングシステムとの互換性について心配する必要はありません。そのため、ホスト(WindowsやMacOSを含む)はそのまま使用できます。

  1. DockerおよびDocker Composeをインストールするコンピューターまたはサーバーは、最新バージョンのDockerおよびDocker Composeを実行している必要があります。最初から始める場合は、以下の簡単なスクリプトを使用して両方をインストールできます。

    wget -qO- https://get.docker.com/ | sh
    COMPOSE_VERSION=`git ls-remote https://github.com/docker/compose | grep refs/tags | grep -oP "[0-9]+\.[0-9][0-9]+\.[0-9]+$" | tail -n 1`
    Sudo sh -c "curl -L https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose"
    Sudo chmod +x /usr/local/bin/docker-compose
    Sudo sh -c "curl -L https://raw.githubusercontent.com/docker/compose/${COMPOSE_VERSION}/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose"
    

    ルートとしてインストールしていない場合は、現在のユーザーをDockerグループに追加する指示が表示される場合があります(つまり、usermod -aG docker $user)。以下に進む前に、これを行った後、ログアウトするか再起動する必要があります。

  2. AzuraCast Docker Composeファイルをプルする

    AzuraCastの構成ファイルをホストコンピューターのどこに配置するかを選択します。

    そのディレクトリ内で、このコマンドを実行してDocker Compose構成ファイルをプルします。

    curl -L https://raw.githubusercontent.com/AzuraCast/AzuraCast/master/docker-compose.yml > docker-compose.yml
    
  3. AzuraCast Dockerインストーラーを実行する

    YML設定ファイルを含むディレクトリから、次のコマンドを実行します。

    docker-compose pull  
    docker-compose run --rm cli azuracast_install
    docker-compose up -d
    

LetsEncryptを使用したHTTPSのセットアップ

AzuraCastはLetsEncryptによる完全暗号化をサポートするようになりました。 LetsEncryptは、検証と更新が簡単な無料のSSL証明書を提供します。

まず、AzuraCastインスタンスがセットアップされ、使用するドメインから提供されていることを確認します。次に、次のコマンドを実行して、新しいLetsEncrypt証明書を生成します。

docker-compose run --rm letsencrypt certonly --webroot -w /var/www/letsencrypt  

電子メールアドレスとドメイン名を指定するように求められます。検証は自動的に行われます。完了したら、次のコマンドを実行して、nginxに新しいLetsEncrypt証明書を使用するように指示します。

docker-compose run --rm nginx letsencrypt_connect YOURDOMAIN.example.com

以下のコマンドを使用してnginxをリロードします。

docker-compose kill -s SIGHUP nginx

LetsEncrypt証明書は3か月間有効です。証明書を更新するには、次のコマンドを実行します。

docker-compose run --rm letsencrypt renew --webroot -w /var/www/letsencrypt  

Dockerで更新する

AzuraCastがコピーされるベースディレクトリ内から、次のコマンドを実行します。

docker-compose down
docker-compose pull
docker-compose run --rm cli azuracast_update  
docker-compose up -d  

Dockerボリュームのバックアップと復元

AzuraCastには、Dockerボリュームの簡単なバックアップと復元を可能にするユーティリティスクリプトがあります。

Docker-backup.shを使用して、既存のボリュームをバックアップできます。スクリプトの引数としてカスタムパスを指定できます。デフォルトでは、スクリプトはアプリのルートにbackup.tar.gzというファイルを作成します。

この圧縮ファイルからアプリケーションの状態を復元するには、docker-restore.shを使用し、既存のバックアップファイルのパスを指定します。

復元プロセスは、Dockerボリューム内に存在する既存のAzuraCastデータベースまたはメディアを置き換えることに注意してください。

従来のインストール(Ubuntu 16.04のみ)

注:一部のWebホストは、異なるソフトウェアリポジトリを含むカスタムバージョンのUbuntuを提供しています。これらは、AzuraCastとの互換性の問題を引き起こす可能性があります。多くのVPSプロバイダーはAzuraCast(OVH、DigitalOcean、Vultrなど)ですぐに使用できることがわかっているため、従来のインストーラーを使用する場合は強くお勧めします。

AzuraCastは速度とパフォーマンスが最適化されており、Raspberry Pi 3からほとんどのプロバイダーが提供する最低レベルのVPSまで、非常に安価なハードウェアで実行できます。

AzuraCastは独自のラジオツール、データベース、およびWebサーバーをインストールするため、以前に他のWebまたはラジオソフトウェアがインストールされていない「クリーンな」サーバーインスタンスに常にAzuraCastをインストールする必要があります。

ルートユーザーとしてこれらのコマンドを実行して、AzuraCastサーバーをセットアップします。

apt-get update
apt-get install -q -y git
mkdir -p /var/azuracast/www
cd /var/azuracast/www
git clone https://github.com/AzuraCast/AzuraCast.git .
chmod a+x install.sh
./install.sh

サーバーのルートアカウントとして直接ログインできない場合は、上記のコマンドを実行する前にSudo suを実行してください。

インストールプロセスは、インターネット接続に応じて5〜15分かかります。

端末ベースのインストールが完了したら、サーバーのパブリックIPアドレス( http://ip.of.your.server/ )にアクセスして、Webベースのセットアップを完了できます。

更新中

AzuraCastには、Gitからコードベースの最新コピーを取得し、サイトキャッシュをフラッシュし、必要なデータベース更新を行う便利なアップデータスクリプトも含まれています。 Sudo権限を持つ任意のユーザーとしてこれらのコマンドを実行します。

cd /var/azuracast/www
Sudo chmod a+x update.sh
Sudo ./update.sh
2