Linux活用レシピ > 家電の制作 > RaspberryPiでライブストリーミング環境を構成
このページでは、「RaspberryPi」と、それで動作するOS「Raspbian」で、安価にリアルタイム動画を配信する環境(ライブストリーミング環境)を構成するレシピを紹介します。


RaspberryPiを使ったライブストリーミング環境の製作
YoutubeLiveへダイレクト配信!「Live配信支援ツール」


ここでは、Raspberry Piに接続したWebカメラのリアルタイム動画を、YoutubeLiveにアップロードし続けるLive配信支援ツール「streaming.py」を紹介します。


ライブ配信は一般的に以下に示すフローで、映像を視聴者に届けます。




このツールを利用すると、下図の赤枠で囲った映像ソースを動画に変換する「ライブエンコーダー」と、その動画をライブストリーミングとして直接ストリーミングサービスに打ち上げる「ファーストマイル」の機能を、Raspberry Piと接続したWebカメラで手軽に安価に実現することができます。


このレシピでは、「ストリーミングサービス」としてYoutubeLiveを使って説明します。

Live配信支援ツールの機能は、以下で構成されます。
カメラメニュー機能
接続されたWebカメラの「解像度」「フレームレート」をリストから簡単に選べます。
ストリーミングサービスへのダイレクト配信機能
ストリームキーストリームURLを指定し、「RTMP」方式でストリーミングサービスへ動画をダイレクト配信できます。
再配信機能
配信中の配信プロセスの監視を行い、万一配信プロセスに停止が発生した場合でも、配信プロセスを再開できます。
配信の設定保存機能
設定したWebカメラの「解像度」「フレームレート」、ストリームキーストリームURLの設定値を保存でき、次回利用時はその値を自動で読み込んで設定します。
起動時の自動配信機能
万一停電で電源が落ちたとしても、復電後に自動的にストリーミングサービスへ動画配信が再開できます。


また、新たにWebカメラの音声以外に「Music」ディレクトリに入れた音楽ファイル(*.mp3ファイル)を音声の代わりに連続再生できる機能も加えました。


    1. プログラムのダウンロード

    プログラムはPython3で作成しており、こちらからダウンロードできますので、以下のコマンドでRaspberryPiのホームディレクトリにダウンロードしてください。
    pi@raspberrypi:~ $ wget https://linux-memo.net/kaden/src/streaming.py[ENTER]
    

    2. RaspberryPi環境の準備

    ここまでのレシピで、RaspberryPiのOS「Raspbian」の日本語化、ffmpegのインストールは出来ていると思いますが、念のためffmpegは以下のコマンドでインストールされているか確認し、インストールされていない場合は導入してください。
    pi@raspberrypi:~ $ sudo apt-get update[ENTER]
    pi@raspberrypi:~ $ sudo apt-get install ffmpeg[ENTER]
    


    次に、このLive配信支援ツールはPythonで作っていますので、以下のコマンドでPythonとGUIライブラリ「Tkinter」をインストールします。
    pi@raspberrypi:~ $ sudo apt-get install \
    python3 python3-pip python3-tk[ENTER]
    


    また、このLive配信支援ツールは、Live配信プロセスの監視にOSのcrontabを呼び出して使用しますので、以下のコマンドで「python-crontab」を導入しておいてください。
    pi@raspberrypi:~ $ python3   -m pip install python-crontab[ENTER]
    


    最後は、自動起動設定です。これによりRaspbianが起動したら自動的にLive配信支援ツールが起動し、Live配信が再開するようになります。
    以下の通りホームディレクトリに自動起動ディレクトリを作成します。
    pi@raspberrypi:~ $ mkdir -p ~/.config/autostart[ENTER]
    

    自動起動に必要なファイルを作成します。
    pi@raspberrypi:~ $ sudo vi ~/.config/autostart/streaming.desktop[ENTER]
    

    ファイルには以下の通り記述し、保存します。
    [Desktop Entry]
    Type=Application
    Name[ja]=streaming
    Exec=/usr/bin/python3 /home/pi/streaming.py
    
    ※上記「/home/pi/streaming.py」は、ユーザ名を「pi」から変更している場合など「streaming.py」の保存場所が変わっている場合はそれに合わせてください。

    以上で自動起動設定は完了です。以下の通り入力して、再起動すると。
    pi@raspberrypi:~ $ sudo reboot[ENTER]
    

    以下の通り、自動的に「Live配信支援ツール」が起動してきます。


    以上でRaspberryPi環境の準備は完了です。


    3. Youtubeの準備


    次にYoutubeの準備を行います。
    Youtubeに配信を行うには、Youtubeに自分のアカウントでログインし、ページの右上にある「動画または投稿を作成」をクリックして表示される、「ライブ配信の開始」を選択します。

    次に前回配信を行ったことがあると「前回の設定を利用して新しい配信を作成」が表示されるので、「新しいライブ配信」または「コピーして作成」を選択します。

    すると、以下のように配信の編集があり、特に赤枠の部分を「非公開」にしておくと自分自身がだけが見れる生放送になります。

    必要な設定を行い、保存ボタンをクリックすると、
    以下の通り、ストリーミングの待ち受け画面になります。
    以上でYoutube側の準備は完了です。
    なお、画面の
    青色の□で囲んだ部分が「4.ストリームキー
    赤色の□で囲んだ部分が「5.ストリームURLで、Live配信支援ツールのそれぞれの場所に貼り付け配信します。


    4. Live配信支援ツールの使い方

    それでは、Live配信支援ツールの使い方を説明します。

    4.0 起動

    起動は、Raspbianが起動すると自動的に起動するよう、このページで設定しましたが、手動で起動する場合は以下の通りターミナルから起動できます。
    pi@raspberrypi:~ $ python3 ./streaming.py[ENTER]
    以下の通り「Live配信支援ツール」が起動します。


    4.1 ライブカメラの選択

    ここから設定を行います。
    設定はコンボボックスやテキストボックス、そしてコマンドボタンに「1.〜7.」までの数字をふってラベルしておりますので、この順番で入力していきます。

    まずは「1.ライブカメラの選択」を行います。
    以下の通りプルダウンメニューに、RaspberryPiで認識しているカメラが表示されます。
    接続しているWebカメラが1台でも複数デバイスは出てきますので、1台だけならばほとんどの場合「/dev/video0」となりますので、こちらを選択します。

    4.2 画面サイズの選択

    次は「2.画面サイズの選択」を行います。
    選択されたライブカメラがサポートする画面サイズがリスト表示されますので、希望のサイズを選びます。


    4.3 フレームレートの選択

    次は「3.フレームレートの選択」を行います。
    フレームレートは1秒間に表示される画像の数で、数値が高いほど映像品質が高くなります。
    なお、画面サイズが大きいほど選択できるフレームレートは低くなることが多く、特に性能がよいWebカメラは、大きい画面サイズでも高いフレームレートを選択できますので、大画面で美しい配信ができます。


    4.4 ストリームキーの貼付(Youtubeから貼付)

    次は「4.ストリームキーの貼付」を行います。
    ストリームキーとは、Youtubeに配信するための識別コードで、Youtubeライブ配信ごとに用意されます。
    以下の「Youtubeのストリーミングの待ち受け画面」にある青色の□で囲んだ部分が「4.ストリームキー、となります。

    この青色の□で囲まれた中にある「コピー」ボタンをクリックし、ストリームキーをクリップボードに保存し、
    以下の「4.ストリームキーの貼付」にクリップボードから貼り付けてストリームキーをセットしてください。


    4.5 ストリームURLの貼付(Youtubeから貼付)

    次は「5.ストリームURLの貼付」を行います。
    ストリームURLとは、Youtubeに配信するための宛先で、以下の「Youtubeのストリーミングの待ち受け画面」にある赤色の□で囲んだ部分が「5.ストリームURL、となります。

    この赤色の□で囲まれた中にある「コピー」ボタンをクリックし、ストリームURLをクリップボードに保存し、
    以下の「5.ストリームURLの貼付」にクリップボードから貼り付けてストリームURLをセットしてください。


    4.6 送信開始

    すべて入力できれば「6.送信開始」ボタンを押して、Youtubeへのストリーミング送信を開始します。

    配信中は「状態」表示が「配信中」に変わり、「6.送信開始」ボタンが以下の通り「6.送信終了」ボタンに変わります。
    この状態でYoutubeへライブ配信が開始されます。

    ※配信を停止する場合は「6.送信終了」ボタンをクリックしてください。

    4.7 設定保存

    最後に「7.設定保存」を行います。
    「7.設定保存」ボタンをクリックすると、設定した情報を「streaming.dat」ファイルに保管し、次回起動時に自動的に設定を読み込みます。


    また、Youtubeにライブ配信中(「状態」表示が「配信中」の場合)に「7.設定保存」ボタンをクリックすると、次回起動時には自動的にYoutubeに配信が開始されます。

    これにより、停電などで一時的に配信が中断しても、復電後に配信を継続させる仕組みが構成できます。

    なお、Youtubeにライブ配信が行われていない場合(「状態」表示が「待機中」の場合)に「7.設定保存」ボタンをクリックすると、次回起動時には設定は読み込まれますが、自動的にYoutubeに配信されることはありません。

    5. Youtubeのストリーミングの確認と開始

    以上でYoutubeのストリーミングにWebカメラの動画が配信されます。

    「Youtubeのストリーミングの待ち受け画面」では、以下の通り、リアルタイム(数秒過去の動画になります)の動画が表示され、ページ右上に「ライブ配信を開始」ボタンが青く表示されます。
    これでYoutubeLiveでの生配信準備完了です。

    「ライブ配信を開始」ボタンを押すと生動画配信開始です。なお、「公開」の設定の場合は、世界に生放送されますので、心してクリックしてください。

    以下は、このページのレシピで作成した仕組みを用いて、フナ水槽を17日以上継続してライブ配信している様子です。


    このように生体の観察にも、ピッタリですね。

    6. ストリーミングサービス & サーバー

    このレシピでは、ストリーミングサービスとしてYoutubeLiveを選択しましたが、以下のページではAWSを使って自分だけのストリーミングサーバーを構成できますので参考にしてください。