利用docker鏡像搭建流媒體服務進行rtmp推流及點流(rtmp,hls,http-flv)測試

利用docker鏡像搭建流媒體服務進行rtmp推流及點流(rtmp,hls,http-flv)測試

搭建流媒體服務

  • 利用網上的mugennsou/http-flv鏡像可以快速搭建流媒體服務
  • 在本例中,運行腳本如下
docker run -it -d \
--restart always \
-p 8380:80 \
-p 1935:1935 \
--name nginx-http-flv \
mugennsou/nginx-http-flv
  • 注意8380是http端口,1935是rtmp端口
  • 另外,如果出現跨域問題,需要檢查配置文件中是否開啓跨域,如下圖
  • 在這裏插入圖片描述
  • 爲了支持hls,需要對配置做如下修改
  • 首先修改/etc/nginx/conf.d/rtmp/rtmp.conf,增加hls相關配置
server {
    listen              1935;

    application demo {
        live            on;
        gop_cache       on;

         #enable HLS ,主要就是增加如下配置
         hls on;
         hls_path /tmp/hls;
         hls_fragment 3;
         hls_playlist_length 20;

        }
}
  • 首先修改/etc/nginx/conf.d/http/http-flv.conf,在server模塊下增加一個location,如下
location /hls {
    # Disable cache
    add_header Cache-Control no-cache;

    # CORS setup
    add_header 'Access-Control-Allow-Origin' '*' always;
    add_header 'Access-Control-Expose-Headers' 'Content-Length';

    # allow CORS preflight requests
    if ($request_method = 'OPTIONS') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Max-Age' 1728000;
        add_header 'Content-Type' 'text/plain charset=UTF-8';
        add_header 'Content-Length' 0;
        return 204;
    }

    types {
        application/vnd.apple.mpegurl m3u8;
        video/mp2t ts;
    }

    root /tmp/;
    add_header Cache-Control no-cache;
}
  • 以上修改之後執行
nginx -t     		# 測試配置文件是否有誤
nginx -s reload  	# 重新加載

推流

  • 本例是通過rtmp進行推流,最後可以通過rtmp或http-flv進行點流
  • 推流方式可以有多種,以下介紹通過ffmpeg和obs,obs是個可視化工具,使用起來更爲方便一些
  • 在本例中,推流地址爲 rtmp://192.168.25.105:1935/demo/[自定義名稱]
  • 其中demo就是流媒體服務中配置的,默認就是demo,自定義名稱則可以隨便取,保持推流和點流時一致即可

通過ffmpeg

  • 利用ffmpeg進行本地推流,命令參考如下
ffmpeg -re -i H:\testvideo\h265_high.mp4 -vcodec copy -acodec copy -f flv rtmp://192.168.25.105:1935/demo/stream-1
  • 以上命令推送的mp4文件注意編碼要是h264的,否則可能會出錯,flv官方不支持hevc
  • 如果要將筆記本的攝像內容進行推流
  • 先要查看筆記本相機信息,通過如下命令
ffmpeg -list_devices true -f dshow -i dummy
  • 或者在設備管理器中查看
  • 在這裏插入圖片描述
  • 然後利用ffmpeg進行推流
ffmpeg -f dshow -i video="Integrated Camera":audio="麥克風陣列 (Realtek High Definition Audio)" -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency -f flv "rtmp://192.168.25.105:1935/demo/stream-1"
  • 其中的video和audio根據自己機子情況修改

通過obs

  • obs推流相對來說很簡單,主要就是配置一下這裏即可

  • 在這裏插入圖片描述

  • 如果想推相機的流直接增加一個視頻捕獲設備即可,如下圖

  • 在這裏插入圖片描述

點流

  • 最後點流可以用vlc進行測試,按照本例配置後點流地址如下
  • http-flv點流
    http://192.168.25.105:8380/live?app=demo&stream=stream-1
  • rtmp點流
    rtmp://192.168.25.105:1935/demo/stream-1
  • hls流
    http://192.168.25.105:8380/hls/stream-1.m3u8

參考

https://github.com/mugennsou/http-flv
https://blog.csdn.net/yelin042/article/details/78434454

搭建HLS直播測試環境 - 簡書 https://www.jianshu.com/p/4006d47eccf9

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