nginx + ffmpeg, conecte la transmisión rtsp de la cámara Haikang a la reproducción frontal rtmp o hls

 

El escenario es: la máquina A instala FFmpeg para conectarse a la cámara, la máquina B instala nginx, la máquina A empuja la transmisión de video a la máquina B y el programa de página accede a la dirección de la máquina B para reproducir el video.

 

1. Se debe instalar FFmpeg

Sitio web oficial: http://ffmpeg.org

FFmpeg es potente, se utiliza principalmente para empujar y tirar de streams, y el ffplay incorporado también puede realizar la reproducción.

2. nginx debe estar instalado

nginx necesita habilitar el módulo rtmp

Linux: primero clone el módulo rtmp https://github.com/arut/nginx-rtmp-module , agregue el módulo rtmp al compilar.

./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: descargue directamente la dirección nginx con el módulo rtmp http://nginx-win.ecsds.eu/download/nginx 1.7.11.3 Gryphon.zip .

3. configuración de nginx

Es nginx.conf bajo linux y nginx-win.conf bajo windows. Es necesario cambiar dos lugares :

1. Agregue rtmp {} a la capa exterior.

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 -> servidor agregado:

	# 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. Inicie nginx

Debajo de las ventanas:

nginx.exe -c conf\nginx-win.conf

Visite localhost para ver la página de bienvenida de nginx y tendrá éxito.

5. Transmisión push de FFmpeg

Método 1: rtsp a 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

La máquina A usa el comando ffmpeg para enviar la transmisión, después de -i es la dirección de transmisión de la cámara y después de -flv es la dirección de la máquina nginx.

Utilice el comando: ffplay.exe rtmp: // localhost: 1935 / live / movie para ver el video.

 

Método 2: rtsp a 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

La máquina A usa el comando ffmpeg para enviar la transmisión, después de -i es la dirección de transmisión de la cámara y después de -flv es la dirección de la máquina nginx.

Después de recibirlo por la máquina B, puede ver el videoclip de ts en el directorio nginx html / hls.

Use el comando: ffplay.exe http: //localhost/hls/movie.m3u8 para ver el video.

para resumir:

hls tiene una latencia más alta que rtmp, pero las páginas rtmp necesitan llamar a flash para reproducirse, esta es la mayor desventaja, hls no se usa.

 

 

 

Articulo de referencia

https://blog.csdn.net/qq_21108311/article/details/94567915  nginx + ffmpeg para lograr medios de transmisión

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. add_param_isCf  Nginx + FFmpeg realiza la transmisión rtsp a la transmisión hls, realiza la reproducción de video a través de video H5 en WEB

https://blog.csdn.net/zongyue_wang/article/details/82698281 Nginx admite la configuración de HLS

Supongo que te gusta

Origin blog.csdn.net/qq_36961530/article/details/109365582
Recomendado
Clasificación