Linuxでライブ配信サーバーを自作する方法!NginxとOBSを使った構築ガイド
多くのライブ配信ツールやサイトは無料で利用できますが、アカウント登録が必要で、公開したくない個人情報の入力を求められることが少なくありません。また、コンテンツが広告の裏に隠されていたり、運営側自身も遵守しているか怪しい分かりにくい利用規約が設けられていたりすることも珍しくありません。
ライブ配信そのものは楽しんでも、動画を不特定多数に公開する必要はないと考える人もいます。むしろ、自分の配信やコンテンツをもっと細かくコントロールしたいというニーズがあります。こうした課題に対する最良の答えこそ、Linuxのようなオープンソースソフトウェアなのです。
事前に考えておきたいポイント
個人用のストリーミングサーバーを構築する前に、いくつかの質問を自分に投げかけておきましょう。まず、どの程度の品質の配信を目指すのか?次に、想定する視聴者数はどれくらいか?配信コンテンツはどこに保存するのか?そして、そのコンテンツへのアクセス権限は誰に与えるのか?
システム要件も気になるところですが、必要なスペックに関する明確な決まりはありません。自分の目標に合った構成を見つけるために、実際に試しながら最適なバランスを探るのがおすすめです。
また、映像や音声の配信を担うプロトコルを選ぶ必要があります。RTMP(Real-Time Messaging Protocol)は定番の選択肢ですが、WebRTCなど状況によってはより適したプロトコルもあります。RTMPは幅広い環境でサポートされているため、本記事ではRTMPを中心に解説します。
もう一つ注意したいのは、「ライブ」配信における遅延です。配信を開始してもすべてが完璧に同期するとは限りません。映像はエンコードされ、転送され、バッファリングされ、表示されるため、ストリームの属性にはある程度の調整が必要になることを想定しておきましょう。
Linuxサーバーのセットアップ
ここでは筆者のお気に入りであるUbuntu Linuxを使用します。GUI操作を好む方は、Ubuntu Desktop版を選ぶとよいでしょう。
- Ubuntuインストーラーを起動し、ニーズに合った設定を選択します。サーバーとして使用するため、静的なネットワーク設定を行っておくと安心です。
- インストール後に自動で再起動しない場合は、手動で再起動してください。Ubuntuが起動したら、利用可能なアップデートをすべて適用します。
sudo apt update
sudo apt upgrade
今回のストリーミングサーバーではNginxウェブサーバーを使用します。以下のコマンドでインストールしましょう。
sudo apt install nginx
次に、Nginxがメディアストリームを扱えるよう、RTMPモジュールを導入します。
sudo add-apt-repository universe
sudo apt install libnginx-mod-rtmp
Nginxの設定を変更して、メディアストリームを受け入れられるようにします。
sudo nano /etc/nginx/nginx.conf
設定ファイルの末尾に以下のコードを追加します。
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
}
}
}
設定ファイルを保存します。後ほど動作するストリーミングサーバーを作る際に使用します。
新しい設定を反映させるため、Nginxを再起動します。
sudo systemctl restart nginx
配信ソフトウェアのセットアップ
サーバーの準備が整ったら、次は配信ソフトウェアの設定です。ここではOpen Broadcaster Software(OBS)を使用します。
- 公式サイトにアクセスし、Linux向けビルドを選択してダウンロードします。ソフトウェアを起動したら、お使いのハードウェアに合わせてOBSの設定を行いましょう。
- 「ソース」の下にある「+」ボタンをクリックして、配信ソースを追加します。
- テスト用として「画面キャプチャ(Display Capture)」を選択し、ソース名を入力します。
- 「OK」をクリックすると、OBSがデスクトップ画面を映し出します。
- 続いて「ファイル」タブをクリックし、「設定」を選択します。
「配信」セクションで配信種別を「カスタム...」に設定し、サーバー欄に以下のURLを入力します。
rtmp://IPアドレス/live
「IPアドレス」の部分には、ストリーミングサーバーのIPアドレスを入力してください。
次に、独自のストリームキーを作成して「ストリームキー」欄に入力します。忘れないものにし、控えを取っておきましょう。セキュリティを強化したい場合は「認証を使用」にチェックを入れ、任意の認証情報を登録します。
最後に「適用」をクリックし、「OK」ボタンで完了です。
これで配信のための設定はすべて整いました。最初の配信を開始するには「配信開始」ボタンを押します。正しく設定できていれば、ボタンは「配信停止」に変わります。OBSウィンドウの下部には、配信の帯域幅に関する統計情報が表示されます。
最初の視聴者になってみよう
RTMPに対応したオープンソースのメディアプレイヤーは数多くありますが、最も有名なのはVLCメディアプレイヤーです。インストールして起動したら、「メディア」タブをクリックし、メニューから「ネットワークストリームを開く」を選択します。
ストリームキーは手元にありますか?ストリームへのパスを入力し、末尾に先ほど設定したストリームキーを付け加えます。以下のような形式になります。
rtmp://IPアドレス/live/シークレットキー
「再生」をクリックすれば、自分自身の配信をリアルタイムで視聴できます。
さらなる対策
基本の構築が完了したら、次に関心があるのはストリーミングサーバーへのアクセス制限と、動画の録画・保存機能でしょう。
デフォルトの状態では、誰でもあなたの配信を視聴できます。これではせっかくサーバーを自作する意味が薄れてしまうかもしれません。Linuxファイアウォール、.htaccessファイル、あるいはRTMPモジュールに組み込まれたアクセス制御機能などを活用して、アクセス制限を設定しましょう。どの方法を選ぶかはあなた次第です。
前述のNginx設定では、動画の配信はできますが保存はできません。保存機能を追加するには、Nginx設定ファイルのRTMPセクション直下に録画オプションを設定し、コンテンツの保存先を指定します。
Nginxが書き込める既存のパスを指定してください。以下のように記述します。
application live {
live on;
record all;
record_path /var/www/html/recordings;
record_unique on;
}
以上が、Ubuntu Linuxでライブストリーミングサーバーを構築するために必要な手順のすべてです。ライブ配信ではなくオンデマンド型のメディアストリーミングサーバーに関心がある場合は、OBSの代わりにPlexの利用をおすすめします。
-
火曜日のヒント:Plexサーバーで自分だけのSpotify環境を自作しよう
AppleがLalaを買収して終了させて以来、私はSpotifyなどのストリーミングサービスでその穴を埋めてきました。しかし、どこにも配信されていない(低音質のYouTube版を除けば)手持ちの楽曲がかなりあり、それらをすべてのデバイスで聴きたいと思っていました。そこで登場するのがPlexです。 Plexは、MacやNAS(ネットワーク接続ストレージ)をサーバーとして設定し、自分の音楽コレクションをiPhoneにストリーミングできるソフトウェアパッケージです。外出先からでも利用可能です。セットアップにはネットワークに関する基本的な知識が必要で、ルーターのポート開放方法を把握しておく必要があり
-
Product Creatorで独自のLinuxディストリビューションを作成する方法
今回は、再びKiwiについてお話しします。Kiwiはイメージングシステムであり、より大規模なopenSUSE Build Serviceの一部として組み込まれた、強力かつ多機能なイメージング/仮想化ソリューションです。自分のインストール環境、素のopenSUSE、あるいはその他のLinuxディストリビューションをベースに、あらゆる種類のOSイメージを作成できます。完全にカスタマイズ可能で、幅広いフォーマットで展開・配布できる点が魅力です。KiwiはXMLテンプレートを使用してこれらの処理を実現します。自動化やスクリプティングを好むパワーユーザー向けに設計されているためです。しかし、Kiwiには