はじめに
この記事はNTTテクノクロス Advent Calendar 2019の11日目の記事です。
NTTテクノクロスの中西(@9800se)です。
普段の業務ではOSSクラウド基盤トータルサービスのメンバーとして、いろいろな機能を持ったサーバーやコンテナを構築・運用しています。今回はこれまで作った環境の中から動画配信サーバーの構築方法を紹介します。
#動画配信サーバーの構築
ffserver
今回はCentOS上でffserverを使って、動画配信サーバーを構築する方法を紹介します。ffserverは映像などのマルチメディアデータを配信をできるストリーミングサーバーで、ffmpegをインストールすると利用できるようになります。
##ffmpegのインストール
さくっとインストールするのであれば、次の4コマンドを投入するだけです。
$ yum -y install epel-release
$ rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
$ rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
$ yum -y install ffmpeg ffmpeg-devel
記事を執筆するために調査している段階で気が付いたのですが、上記コマンドでインストールされるのはちょっと古いバージョンでした。最新版のインストール方法を調査したのですがffmpegの公式サイトには、必要なrpmファイルの一覧が記述されているだけだったので、(依存関係などを考慮すると)どうにもさくっと構築するという本記事の目的から外れてしまうので今回は上記の手順でご勘弁ください。
##設定ファイルの準備
ffserverを起動する前に設定ファイルを用意します。
vi /etc/ffserver.conf
動画配信を実施するうえでffserverに記載する最低限の情報は以下の通りです。
複数の動画を配信する場合は動画毎に及び、を記述します。内に動画の解像度、フレームレートなどを指定することこともできます。指定しない場合はデフォルト値が設定されます。
HttpPort 8090 # 動画ファイルを格納する際のポート番号
RtspPort 5554 # クライアントが接続する際のポート番号
<Feed feed1.ffm> # rtspサーバーに格納する動画ファイルその1
File /tmp/feed1.ffm # サーバーに内での動画のファイルパス
FileMaxSize 100M # ファイルの最大サイズ
</Feed>
<Stream test.mpeg4># 動画ファイルその1の情報
Feed feed1.ffm #ファイル名(<Feed>のFileに対応)
Format rtp # ファイルのフォーマット
</Stream>
##ffserverの起動
以下のコマンドでffserverを起動します。(権限がないユーザーで実行した場合、エラーメッセージは出力されませんが起動に失敗しています。)
ffserver
-fオプションで設定ファイルを指定してffserverを起動できます。
ffserverが利用するポート番号を変更することで、複数のffserverを同時に起動できます。
##配信する動画の準備
ffserverサーバーに動画を格納するには、以下のようにffmpegコマンドを実行します。
ffmpeg -re -f lavfi -i "movie=sample.mp4:loop=0, setpts=N/(FRAME_RATE*TB)" http://localhost:8090/feed1.ffm
ffmpegは動画・音声に関してはなんでもできるすぐれたソフトウエアです。しかし、なんでもできるが故にコマンドオプションが膨大になって、やり方を調べるのが大変ですが、動画配信に使うのであれば上記の通り実行すれば問題ありません。
今回指定したコマンドオプションについて簡単に説明すると以下の通りです。
-re:ライブストリーミングモードで動画をエンコードし、出力先ディレクトリにファイルを格納します。
-f:入力もしくは出力するファイルをのフォーマットを強制します。通常は不要ですが、lavfiフィルタを利用する場合は必要となります。
lavfi:lavfiフィルター
-i:インプット(ファイルだけでなく、Webカメラを指定することもできます)
setpts:ptsを設定する。
movie:動画ファイルを指定する。
loop:指定した動画ファイルをループする回数。0を指定すると無限ループしてくれます。
uri:ffserverのIPアドレス
ffconfigに記載したHttpPort
ffconfigにFeedに記載したファイル名
##動画の再生
動画の再生は、適当なソフトを利用して再生します。
今回の記事で紹介した方法で格納した動画を再生する場合は以下にアクセスします。
rtsp:/ffserverのIPアドレス:5554/test.mpeg4
#おわり
最近は有料・無料問わず至る所で動画配信・共有サービスが展開されていますが、動画配信サーバーの構築は案外さくっとできることが分かりました。
明日は@AkmIOtUE4さんの記事が投稿される予定です。お楽しみに。