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