目次
参考文献
nginx による http-flv ベースのライブ ストリーミング メディア サーバーの構築
CentOS 7 のインストールと構成 git
VMwear のインストール Centos7 の超詳細なプロセス
nginx +rtmp+nginx-http-flv-module 環境の構築
CentOS7 の表示とファイアウォールの終了
上記資料を参照する際にいくつか落とし穴に遭遇したので、落とし穴のない箇所(上記資料を直接参照)は省略し、落とし穴や違う箇所がある場合は詳しく説明します。
基本的なワークフロー
- ビデオ ソース (コンピューター、携帯電話、ウェブカメラなどのライブ ブロードキャスト用のデバイスを含む) は、ストリーミング サーバー上の特定の (ポート + アドレス) にビデオ データを「プッシュ」します。
- ビデオ レシーバーは別の (ポート + アドレス) 経由でビデオ データを「プル」し、ライブ コンテンツを視聴します。
この例では:
- ストリーミング メディア サーバーは、 nginx -http-flv-module モジュールがロードされた nginx によって動作し、nginx はVMware 仮想マシン上のCentOS 7.0にインストールされます (サフィックス DVD-2009 の ISO ファイルを選択します) 。
- ビデオソースはストリーミングにOBSを使用します
- 受信機は再生テストにflv.js (ReadMe のデモ) またはVLC プレーヤーを使用します
- この例の実装効果には約 15 秒の遅延があります
文章
フローメディアサービス
VMware と CentOS 7.0 をインストールする
VMware と CentOS 7.0 をダウンロードしてインストールします。手順は上記の参考資料を参照してください。サインアップして自分で実行してください。
インストール プロセス中にネットワーク カードをオンにした後、取得した IP アドレスを書き留める必要があります (インストール完了後に確認することもできます)。これは後で使用します。
この方法でインストールした CentOS 7.0 にはいくつかの機能 (主に C コンパイラ) が欠けていることに注意してください。root としてログインした後、次のコマンドを実行します。
yum -y install unzip
yum -y install gcc-c++
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel
gitをインストールする
上記を参考に、設定情報のユーザー名とメールアドレスをご自身のものに変更してください。
Nginx および nginx-http-flv-module のソース コードをダウンロードする
すべてのソースコードを一時フォルダーに配置する必要があります。一時フォルダーに入ります。
cd /tmp
nginx-http-flv-module ソース コードのクローンを作成する
git clone https://github.com/winshining/nginx-http-flv-module.git
Nginxのソースコードをダウンロードする
wget https://nginx.org/download/nginx-1.19.9.tar.gz
nginx のバージョン番号はここで更新される可能性があることに注意してください (上記のリンクを参照)、自分で決定し、将来に関わるバージョン番号は一貫している必要があります
。
tar -xzf nginx-1.19.9.tar.gz
cd nginx-1.19.9
コンパイルしてインストールする
nginxフォルダ内で順次実行
./configure --add-module=/tmp/nginx-http-flv-module --with-http_ssl_module
make
make install
実行後、nginxは/usr/local/nginxにインストールされます
nginx設定ファイルを変更する
この例では、CentOS はグラフィカル インターフェイスを使用してインストールされていますが、この手順ではグラフィカル インターフェイスを使用することをお勧めします。
root ユーザーとしてログインし、/usr/local/nginx/conf /nginx.conf ファイルを開き、コンテンツの編集についてはリファレンスの最初のリンクを参照してください。
デフォルト設定から変更した部分は、
追加した
rtmp {
server {
listen 9999; # 接受推流的端口号
chunk_size 8192; # 单一推流数据包的最大容量
application myapp {
# myapp 模块,可以自行更换名字
live on; # 打开直播
meta off; # 为了兼容网页前端的 flv.js,设置为 off 可以避免报错
gop_cache on; # 支持GOP缓存,以减少首屏时间
allow play all; # 允许来自任何 ip 的人拉流
}
}
}
http/server のリッスン ポートを 8080 に変更し、http/server の下に追加します。
location /live {
# 拉流时的 uri ,可以自行修改
flv_live on; # 打开 http-flv 服务
chunked_transfer_encoding on;
add_header 'Access-Control-Allow-Origin' '*'; # 允许跨域
add_header 'Access-Control-Allow-Credentials' 'true';
}
保存して終了
Nginxを起動する
cd /usr/local/nginx/sbin
./nginx
正常に起動した後のプッシュ アドレスとプル アドレスは次のとおりです。
- 推流:rtmp://localhost:9999/myapp/mystream
- 拉流:http://localhost:8080/live?port=9999&app=myapp&stream=mystream
その中には、
localhost は、以前に記録または確認した CentOS システムの IP アドレスに置き換える必要がある、
liveは、nginx 構成ファイルに追加された場所の URI である、
myappは、nginx 構成ファイルで指定されているアプリ モジュールの名前、これは、設定ファイル、プッシュ ストリーム、およびプル ストリームに表示されますプッシュ ストリーム
。mystreamプッシュ ストリームとプル ストリームに表示される名前も一貫している必要があります。
ファイアウォール
ストリーミングを成功させるには、Linux ファイアウォールを通過する必要があります。この例では、ファイアウォールを直接閉じることを選択しています (冒頭のリファレンスを参照)。実際のアプリケーションでは、ストリームのプッシュおよびプルに使用されるポートを開くようにファイアウォール構成を変更する必要があります (この例では 9999 と 8080)。
これまでのところサーバーの準備は完了しています
OBS推流
OBSをインストールして起動し、「ソース」の下部にあるプラス記号をクリックし、「モニターキャプチャ」を追加して直接確認します。この時点で、OBSのメインインターフェイスにコンピューター画面のリアルタイム画面が表示されます。
次に、右側のウィンドウで [ファイル] - [設定] - [ストリーミング] (左側) を選択します。
サービスに「カスタム」を選択し、「サーバー」に rtmp://localhost:9999/myapp/ を入力し、「ストリームキー」に mystream を入力し (実際のコンテンツは前のコンテンツと一致している必要があります)、確認して終了します。
右下隅の「ストリーミング開始」をクリックします。ストリーミングが成功すると、ボタンが「ストリーミング停止」に変わり、ステータスバーの右下隅に 1 秒あたりのリアルタイムのトラフィック データが表示されます。
ここまででストリーミングは完了しました
VLC、flv.js プル ストリーム、再生
VLC
メディア - ネットワーク ストリームを開き、上記のストリーミング URL を入力し (実際のコンテンツは前の記事と一致している必要があります)、再生します。
flv.js
flv.jsのデモページを開き、上のストリームURLをStream URLに入力し、下のLoadをクリックします。