ホーム >  RaspberryPi >  ラズパイZeroに動画配信サーバーを構築する


Posted:2017/06/04 9:00:43 AM|Category : RaspberryPi

ラズパイZeroに動画配信サーバーを構築する

ラズパイZeroに搭載されているSocのエンコーディング機能を使い、自宅内で使える動画配信サーバーを構築します。

FFmpegで高速エンコード

ラズパイZeroのSoc(System on Chip)と呼ばれるハードウェアを使い、動画をエンコードします。動画変換ソフトはFFmpegを使い、動画の形式はH.264形式です。FFmpegは、動画と音声を変換することのできるフリーソフトウェアです。

動画を配信するには?

Webサーバーアプリケーションのnginxを使います。リアルタイムに配信できるように、RTMPモジュールを導入します。動画ファイルは、前回作成したファイルサーバーに保存します。

ラズパイZeroにファイルサーバー(samba)を構築する

今回作業の流れ

前回までの内容

どのラズパイでもよいのですが、ラズパイZeroを使います。ラズパイZeroにSSH接続して、ラズパイと同じLAN内のPCが共有できる領域を作成します。

ラズパイZeroにOSをインストールしてリモートアクセス(サーバー利用)

USBメモリーを接続して共有領域を作る(ラズパイ)

ラズパイZeroにファイルサーバー(samba)を構築する

今回の内容

SSHの接続、コマンド操作は全てリモートPCを使って行います。ラズパイZeroを直接操作はしません。

ラズパイZeroを起動し、SSH接続します。

FFmpegのビルド・インストールを実行します。

FFmpegで、mkv形式動画をmp4形式に変換します。

nginxのビルド・導入をします。

ラズパイからコマンドで動画を配信します。

クライアントPCから、vlcで動画を受信します。

準備

ラズパイOSのインストール・SSH接続・初期設定を完了したものとします。(※前回の投稿

用意するもの

本体 RaspberryPi Zero
OSイメージ Raspbian Jessie Lite
SDカード 4GB以上のSDカード
電源 USB-ACアダプター
有線LANアダプター LAN-GTJU3
USBハブ U2HS-MB01-4BBK
USBメモリー SanDisk USB Flash Drive 32GB

ラズパイZeroにリモート操作するPC

今回はLinuxを前提に説明しますが、windowsやMacでも操作可能です。

OS Ubuntu 16.04.1 LTS 64bit

ネットワーク環境

市販のブロードバンドルーターにラズパイZeroとリモート操作用のPCを接続します。

SSH接続

①SSH接続をします。以下のコマンドでラズパイZeroに接続します。

ssh pi@IPアドレス

FFmpegのビルド・インストール

ハードウェアエンコーディング機能を使うため、FFmpegを有効にします。

①インストール前にアップデートを実行します。

sudo apt-get update
sudo apt-get upgrade

②ネットワークが切れても状態を保持するため、tmux(端末多重化ソフトウェア)をインストールします。

sudo apt-get install git tmux

③tmuxを実行します。

tmux

④ホームディレクトリに移動し、「git clone」でFFmpegを入手します。

cd
git clone https://github.com/FFmpeg/FFmpeg.git

⑤FFmpegディレクトリに移動し、オプションを設定を変更します。

cd FFmpeg
./configure --enable-gpl --enable-omx --enable-omx-rpi --enable-nonfree

⑥コンパイルします。(※コンパイルに時間がかかります。)

make

⑦ビルドしたソフトウェアをインストールします。

sudo make install

⑧実際に動画を変換します。「.mkv」形式のファイル(sample.mkv)を共有フォルダ「/var/shared」に保存します。

⑨以下のコマンドでsample.mkvをH.264形式にハードウェアエンコードします。

cd /var/shared
ffmpeg -i sample.mkv -c:v h264_omx -c:a aac sample.mp4
-i 入力ファイルのパスを指定します。(複数指定可)
-c:v h264_omx H.264形式にハードウェアエンコードするためのコーデック(h264_oxm)を指定します。
-c:a acc 音声用のコーデック(acc)を指定します。

nginxのビルド・導入

Raspbianには最初からnginxパッケージが含まれていますが、RTMPモジュールが組み込まれていません。これをソースコードからビルドします。

①以下のパッケージをインストールします。

sudo apt-get install libpcre3-dev libssl-dev
libpcre3-dev 構文と意味をできるだけ「Perl 5」のものに似せた正規表現に対応するための関数のライブラリです。
libssl-dev 開発用 SSL ライブラリ、ヘッダおよびドキュメントです。

②ホームディレクトリに移動し、wgetで以下のファイルを取得します。(2017年5月現在、1.13.0が最新です。新バージョンが公開されていれば、「nginx-1.13.0.tar.gz」に最新バージョンを指定して下さい。→https://nginx.org/en/download.html)

cd
wget https://nginx.org/download/nginx-1.13.0.tar.gz

③圧縮ファイルを解凍します。

tar zxvf nginx-1.13.0.tar.gz

④RTMPモジュールを取得します。

git clone https://github.com/arut/nginx-rtmp-module.git

⑤nginx-1.13.0ディレクトリに移動し、オプションを設定を変更します。

cd nginx-1.13.0/
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
–with-http_ssl_module デフォルトで無効なモジュールを有効にします。
–add-module=../nginx-rtmp-module サードパーティモジュール(nginx-rtmp-module)の追加します。

⑥コンパイルします。(※コンパイルに時間がかかります。)

make

⑦ビルドしたソフトウェアをインストールします。

sudo make install

⑧インストールが完了したら、nginxの設定ファイルを編集します。

sudo nano /usr/local/nginx/conf/nginx.conf

以下のハイライトの部分を「nginx.conf」に追記して下さい。

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xls;
        }
        location /stat.xsl {
            root   home/pi/nginx-rtmp-module;
        }
        location /control {
            rtmp_control all;
        }
        #error_page  404              /404.html;

一番下の行に、以下の記述を追加します。

}

rtmp {
   server {
     listen 1935;
     ping 30s;
     notify_method get;
     application video {
       live on;
     }
   }
}

⑨以下のコマンドでnginxを起動します。

sudo /usr/local/nginx/sbin/nginx

動画の配信

ラズパイ側の作業

以下のコマンドを実行します。先ほどの動画サンプル(sample.mkv)を「video」アプリの「sample」というチャンネルで配信するコマンドです。

while [ 1 ] ; do ffmpeg -re -i /var/shared/sample.mkv -c:v h264_omx -c:a aac -f flv rtmp:192.168.1.200/video/sample; done
while [ 1 ] ; do 〜 ;done 無限ループです。
rtmp:192.168.1.200/video/sample 「video」というアプリの「sampe」というチャンネルを配信します。「192.168.1.200」は、ラズパイのipアドレスです。

クライアント側の作業

RTMPの動画を受信できるクライアントソフトを利用して動画を見ます。

①「VLC media player」をインストールします。

sudo apt-get update
sudo apt-get install vlc

②「VLC media player」を起動します。メニューの「メディア」→「ネットワークストリーム」を開くを選んで、「ネットワークにURLを入れて下さい」に「rtpm://rtmp:192.168.1.200/video/sample」を入力して再生します。


トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 2008年04月 金融機関系I

最近の投稿
人気記事
カテゴリー
広告