利用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標籤內。在觀看的時候就會觸發轉碼推流的命令,多個播放也只會觸發一次,不好的地方在於停止觀看後推流的進程還在繼續執行,而且第一次觀看等待的時間較長。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章