シナリオは次のとおりです。マシンAがFFmpegをインストールしてカメラに接続し、マシンBがnginxをインストールし、マシンAがビデオストリームをマシンBにプッシュし、ページプログラムがマシンBのアドレスにアクセスしてビデオを再生します。
1.FFmpegをインストールする必要があります
公式サイト:http://ffmpeg.org
FFmpegは強力で、主にストリームのプッシュとプルに使用されます。また、組み込みのffplayは再生も実現できます。
2.nginxをインストールする必要があります
nginxはrtmpモジュールを有効にする必要があります
Linux:最初にrtmpモジュールhttps://github.com/arut/nginx-rtmp-moduleのクローンを作成し、コンパイル時にrtmpモジュールを追加します。
./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module --with-http_ssl_module --with-pcre=../pcre-8.42 --with-openssl=../openssl-1.1.0i --with-zlib=../zlib-1.2.11
make && make install
Windows:rtmpモジュールhttp://nginx-win.ecsds.eu/download/nginx 1.7.11.3Gryphon.zipを使用してnginxアドレスを直接ダウンロードします。
3.nginx構成
それは窓の下にLinuxとnginxの-win.conf下nginx.confである。二つの場所を変更する必要があります。
1. rtmp {}を外層に追加します。
rtmp { #保存所有rtmp配置的块
server { #声明一个rtmp实例
listen 1935; #给Nginx添加一个监听端口以接收rtmp连接
chunk_size 4096; #流整合的最大的块大小。默认值为4096。这个值设置的越大CPU负载就越小。这个值不能低于128
application hls { #hls的地址
live on;
hls on;
hls_path html/hls;
hls_fragment 1s;
}
application live { #rtmp的地址
live on;
}
}
}
2. http->サーバーが追加されました:
# ffmpeg生成hls流的http访问配置
location /hls {
#若nginx\conf\mime.types中没有配置如下type,请加上,或直接在mime.types加
types{
#application/vnd.apple.mpegurl m3u8;
application/x-mpegURL m3u8;
video/mp2t ts;
}
root html;
add_header Cache-Control no-cache;
add_header Access-Control-Allow-Origin *;
}
4.nginxを起動します
窓の下:
nginx.exe -c conf\nginx-win.conf
localhostにアクセスしてnginxウェルカムページを表示すると、成功します。
5.FFmpegプッシュストリーミング
方法1:rtspからrtmp
ffmpeg -i "rtsp://admin:[email protected]:554/h264/ch1/main/av_stream" -vcodec libx264 -acodec aac -f flv rtmp://192.168.100.170:1935/live/movie
Aマシンは、ffmpegコマンドを使用してストリームをプッシュします。-iの後にカメラストリームアドレスがあり、-flvの後にnginxマシンのアドレスがあります。
次のコマンドを使用して、ffplay.exe rtmp:// localhost:1935 / live / movieを使用してビデオを表示します。
方法2:rtspからhls
ffmpeg -i "rtsp://admin:[email protected]:554/h264/ch1/main/av_stream" -vcodec libx264 -acodec aac -f flv rtmp://192.168.100.170:1935/hls/movie
Aマシンは、ffmpegコマンドを使用してストリームをプッシュします。-iの後にカメラストリームアドレスがあり、-flvの後にnginxマシンのアドレスがあります。
マシンBで受信した後、nginx html / hlsディレクトリの下にtsビデオクリップが表示されます。
次のコマンドを使用します:ffplay.exe http://localhost/hls/movie.m3u8ビデオを表示します。
総括する:
hlsはrtmpよりも待ち時間が長くなりますが、rtmpページを再生するにはflashを呼び出す必要があります。これが最大の欠点であり、hlsは使用されません。
参考記事
https://blog.csdn.net/qq_21108311/article/details/94567915 ストリーミングメディアを実現するためのnginx + ffmpeg
https://blog.csdn.net/wenqiangluyao/article/details/97897794?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.add_param_isCf&depth_1-utm_source=distribute.pc_relevantFrom.none-タスクブログの学習3。 add_param_isCf Nginx + FFmpegはrtspストリームからhlsストリームを実現し、WEB上のH5ビデオを介したビデオ再生を実現します
https://blog.csdn.net/zongyue_wang/article/details/82698281NginxはHLS構成をサポートしています