Raspberry Pi ✕ Nginxで RTMP & HLS ストリーミングサーバ

お母ちゃん  2017.4.26 
Home > Raspberry Pi > Raspberry Pi ✕ Nginxで RTMP & HLS ストリーミングサーバ
すき 0
うんこ 0

現在、このブログを運用している、Raspberry Pi 2 ✕ Nginx サーバ に、RTMPサーバを構築しました。

Nginx に RTMP モジュール を追加

Nginx にモジュールを追加するにはコンパイルをし直さなければならないので、apt-get install していた Nginx  1.6.2 から現時点で最新の Nginx 1.11.13 をインストールし直し、環境を移行しました。

nginx にモジュールを追加してアップデート (apt-get から ソースコードのインストールに変更)

※ メモ
バージョン 1.9.11 以降、動的モジュールがサポートされ始めているようです。
nginx-1.9.11で動的モジュールをサポート – インフラエンジニアway – Powered by HEARTBEATS

RTMPサーバの設定

nginx.conf

http {} の外に rtmp{} の設定を追加します。

nginx.conf は短くしておきたいので、設定は外部ファイルにしました。

rtmp-conf

conf.d に RTMPの設定ファイル rtmp-conf を作成しました。

Android でも見れるようにHLSの設定もしています。

設定項目に関してはこちらのブログ記事を参考にさせて頂きました。
nginxでrtmp配信サーバを構築する【完全版】 | VariedTasteFinder

(個人的メモ)

※ 最初 「rtmp.conf」という名前で ファイルを作成したのですが、http{} の中で conf.d ディレクトリ配下の 拡張子 .conf ファイルを include するようにしてあるため、http{} の中で rtmp{} が読み込まれる形になってしまい失敗しました(;´∀`)

ディレクトリ構成とかはもっと考えて行った方が良いのかもしれない(´・ω・`)

hls_path のディレクトリ作成

hls_path で設定したディレクトリを作成します。

構文チェック

※ hls_path のディレクトリが存在しない時下記のような、mkdir を促すエラーになります。

↑コピペしたままでディレクトリが間違っていました

nginx を再起動

配信ページの設定

2017.11.12 加筆

最初 video.js を使用していたのですが、久々に試してみたらブラウザでエラーが出て再生出来なくなっていました。

chrome でこんな感じのエラーが出ていました。

色々やってみましたが解消出来なかったので video.js を辞めて hls.js に変更しました。

こちらの記事を参考にさせて頂きました。

.hlsをブラウザ関係なく一発再生する “hls.js” – バッカムブログ

※ loadSource の所は IPアドレスを指定してドメインからアクセスすると

といったエラーになります。

以下は、加筆前の video.js の記事です

配信ページの置場はどこでも大丈夫です。

今回は 先程作成した live ディレクトリの下に置いてみました。

URLについて

  • 192.168.0.XX のところは、サーバのIPアドレス
  • /live/ は、rtmp {} の設定で application live {} で設定してある文字列
  • /stream は配信時に設定する任意のストリームキー

ソースコードはこちらの記事でご紹介下さっているものを使用させて頂きました。
Live Streaming on Web 概観 – Qiita

配信ページのディレクトリにBASIC認証追加

クライアント

ffmpeg でやるのが簡単かと思いましたが、いつの間にか Mac で ffmpeg 使えなくなってる orz

そのうち対応するとして今回は OBS というソフト を使いました。

配信設定など、こちらの記事を参考にさせて頂きました。
nginx-rtmp-moduleでお試しLive配信環境を作る – Qiita

iMac で何故かカメラが認識されず、とりあえず画面共有でストリーミングテストを行いました。

配信確認

PCからもAndroid からもバッチリ!声も聴こえる!????

参考にさせて頂きました

 

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください