nginx + ffmpeg、Haikangカメラからのrtspストリームをrtmpまたはhlsフロントエンド再生に接続します

 

シナリオは次のとおりです。マシン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構成をサポートしています

おすすめ

転載: blog.csdn.net/qq_36961530/article/details/109365582