天天看點

基于Nginx_RTMP 容器将RSTP 流轉成RTMP 和HLS

海康的攝像頭預設通過rstp 協定輸出,但頁面內建需要hls 協定。通過摸索,結合網絡資料,總結如下:

原理:

通過ffmepg 工具持續将rstp協定的視訊流推送到帶有RTMP 子產品上的Nginx , 再由Nginx 對外提供rtmp 和hls 協定輸出

  • nginx_rtmp 安裝

最簡單的安裝方法就是使用容器

docker pull alfg/nginx-rtmp
           
  • -- 開放1935 端口是為了下一步把資料推到rtmp , 80 端口是為了hls 協定讀取
docker run --restart=always --name nginx-rtmp -d -p 80:80 -p 1935:1935 alfg/nginx-rtmp
           
  • 使用ffmpeg 推視訊流

假如攝像頭的視訊流位址為:rtsp://admin:[email protected]:554/MPEG-4/ch1/main/ava_stream

ffmpeg -re -rtsp_transport tcp -i rtsp://admin:[email protected]:554/MPEG-4/ch1/main/ava_stream -f flv -acodec aac -ar 44100 -strict -2 -ac 1 -s 1280x720 -q 10 rtmp://192.168.204.181:1935/stream/camera
           

可以通過 rtmp://192.168.204.181:1935/stream/camera

和 http://192.168.204.181/hls/camera.m3u8

來調用。

PS: 以上隻是不對容器做任何配置修改的情況下操作。