日々勉強しているITの知識をまとめています。rtmp-moduleを組み込みvideo.jsを利用してwebでライブ映像配信する方法も定型化してきたので、まとめてみます。このサイトを確認すれば一通り設定方法が分かるというページ構成を目指してみます。まとめてみると、かなり要素がありますね。しても概要的なページになりそうです。詳しくは一つ一つ解説したサイトを見ていただいた方がいいかも。エンコーダはOBSを利用し、on_playを通して、ユーザ名・パスワード文字列が合致しないと配信できない仕組みにします。セキュリティはセキュアリンク機能を利用して、配置したwebプレーヤでないと見れないようにします。そのwebプレーヤは、nginxにてベーシック認証されたものだけ閲覧を許可します。コントロールパネルを設置して、どのくらいの人が閲覧しているかを確認できるようにします。自動起動スクリプトnginxとrtmp-moduleのインストールnginxのサイトから、stableの最新バージョンをダウンロードします。mainlineでも構わないかもですが、私は安定性にこだわりたいので、stableを選択しています。https://nginx.org/download/nginx-1.12.2.tar.gz(windowsではない方をダウンロードします。installします。ご自分の環境に合わせてディレクトリ階層をご検討ください。installセキュアリンクを利用したい時にこのオプションを利用します。–with-http_secure_link_modulePHPを実行する際に実行権限を与えるためこのオプションを利用します。–group=www-data※Debian系Linuxの場合、webを実行するユーザがwww-dataになるので、ユーザを指定しておきます。※インストールから映像配信できるかまでの単純な解説はこちらへPHPのインストールubuntuで設定する場合と、Debianで設定する場合、バージョンなどに若干違いがあり、コンフィグの書き方に差が出ます。再生時にセキュアリンクをつけているのが大きな特徴です。セキュアリンクがないとrtmp://サーバー名/配信ポイントとすると、誰でもアクセスされてしまいます。httpのベーシック認証などは通らなくても上記は有効になってしまいセキュリティ的に問題です。そこで、日時によるハッシュ生成し、指定された計算方法でハッシュ値が合致しないと表示させないのがセキュアリンクです。私の場合は、プレーヤ側でハッシュ値を算出する部分をPHPで実現しました。そこで、PHPも有効になっている必要があります。そのPHPのページはベーシック認証にて保護してあります。}liveの中でphpにパスワードをかけるようにしている理由は、publishauthディレクトリにパスワードがかからないようにするためです。on_playをとおしてauth.phpを開く際にパスワードがかかっているとエンコーダから配信サーバに向けての配信時認証がかからなくなってしまいます。うまくいっているか確認したくなります。reloadというコマンドで試す事ができます。コンフィグに書き間違いなどがあるとこの時点で起動できないので分かります。video.jsの配置webプレーヤを配置します。video.js,videojs-contrib-hls,videojs-contrib-media-sourcesを取得します。videojs-contrib-media-sources取得したjsファイルを、httpでアクセスできる位置に配置します。buildなんか良く分からないエラーが出ました。buildとする事で無事build出来ました。入るNode.jsのバージョンが古いせいなのか?と思いますがはっきり断定できません。videojs-contrib-quality-levels/dist内に作成されたvideojs-contrib-quality-levels.min.jsもvideojsフォルダに放り込みます配信パスワードの設定エンコーダから映像配信サーバに映像配信を始める際に、パスワード文字列が合わないと映像配信できないようにする事が出来ます。任意の場所に配置します。}?>OBSを利用して配信開始OBSを利用して配信開始します。on_publishを設定し、上記auth.phpで認証情報を保存してあるので、これを使います。この事で配信ポイントがばれて、誰でもエンコーダから映像が送れるような事がないようにします。※詳しい解説はこちらNginxにベーシック認証を搭載Basic認証を行うためにapacheのモジュールを利用してパスワードファイルを作成します。userwebプレイヤーvideo.jpを配置するセキュアリンクを有効にした形で、webプレイヤーを利用できるようにします。secretkeyは、nginx.confで設定したものと文字列を合わせます。できたmd5ハッシュコードは1時間有効です。漏れたとしても、1時間のうちにアクセスしないとその後は拒否されます。なんでもOKですので、ここでは日本語(UTF-8)で設定してみます。でないとアクセスできないURIを設定します。この有効期限の設定の仕方は、Nginxではこの方法でしか認識できません。URLパラメータとして扱えないので、置換します。セキュアなリンクを出力します。映像配信サーバを構築すると、どのくらいのアクセス数があるのか、どのくらいの帯域幅で映像配信がされているのか知りたくなります。回線状況に合わせて運用を変える必要もでてきます。rtmp-moduleには、便利なアクセス統計情報をwebで表示できる機能があります。※詳しくはこちらstat.xslの情報元はこちらからコピーしますコピーしたstat.xslファイルをトップに置きます。そのまま直接stat.xslファイルにアクセスできるようにしてもいいですが、他のサーバのstatファイル参照や、録画ボタン生成のため、これをカバーするhtmlを作成しました。自動起動スクリプトinit.dから起動できるようにします。再起動時自動的にnginxが起動されるようにします。Themegraphy。