利用Nginx Rtmp 配置转换摄像头Rtsp流输出H5可播放的flv

看了一遍又一遍的nginx.config配置项说明,在Exec节是看到了不用在外面写发起推流的命令的希望,今天终于试验出来,当然也是在github issue上翻看广大网友的智慧留言。

https://github.com/arut/nginx-rtmp-module/issues/447

关键配置如下:

http {

server {
        listen       80;

        location /live {     ##这个是H5 video 观看的live源
            flv_live on; 
            chunked_transfer_encoding on; 
            add_header 'Access-Control-Allow-Origin' '*'; 
            add_header 'Access-Control-Allow-Credentials' 'true'; 
        }
        }

}

rtmp{

        server {
        listen 1935;

        application  hknews{

           live on;

           exec_pull  /bin/sh /etc/ffpush.sh   ##在观众进行观看时拉流触发命令,命令为将源rtsp流推到hknews上

       }

       }

}

ffpush.sh的内容如下:

ffmpeg -i "rtsp://192.168.3.193:554/session0.mpg" -pix_fmt yuv420p -c:v copy -c:a copy -f flv "rtmp://127.0.0.1:1935/hknews/tvb"

只要注意下sh的路径和ffmpeg的路径,在外部能调用sh成功的话,nginx也能成功调用。

这时只需要用vlc观看这个地址: http://127.0.0.1/live?app=hknews&stream=tvb 也可以放入网页的video标签内。在观看的时候就会触发转码推流的命令,多个播放也只会触发一次,不好的地方在于停止观看后推流的进程还在继续执行,而且第一次观看等待的时间较长。

你可能感兴趣的:(利用Nginx Rtmp 配置转换摄像头Rtsp流输出H5可播放的flv)