開源項目:https://github.com/ossrs/srs-docker#usagehtml
1.centos7安裝編譯git
Step1:拉git代碼,切換到開發分支 git clone https://gitee.com/winlinvip/srs.oschina.git srs && cd srs/trunk && git remote set-url origin https://github.com/ossrs/srs.git && git pull Step2:切換到開發分支 git checkout develop && ./configure --with-gb28181 && make clean && make Step3:編輯push.gb28181.conf,好啓動服務 ./objs/srs -c conf/push.gb28181.conf
push.gb28181.conf 配置文件github
# push gb28181 stream to SRS. listen 1935; max_connections 1000; daemon off; srs_log_tank console; http_api { enabled on; listen 1985; } stats { network 0; } stream_caster { enabled on; caster gb28181; # 轉發流到rtmp服務器地址與端口 # TODO: https://github.com/ossrs/srs/pull/1679/files#r400875104 # [stream] is VideoChannelCodecID(視頻通道編碼ID) for sip # 自動建立的道通[stream] 是‘chid[ssrc]’ [ssrc]是rtp的ssrc # [ssrc] rtp中的ssrc output rtmp://127.0.0.1:1935/live/[stream]; # 接收設備端rtp流的多路複用端口 listen 9000; # rtp接收監聽端口範圍,最小值 rtp_port_min 58200; # rtp接收監聽端口範圍,最大值 rtp_port_max 58300; # 是否等待關鍵幀以後,再轉發, # off:不需等待,直接轉發 # on:等第一個關鍵幀後,再轉發 wait_keyframe on; # rtp包空閒等待時間,若是指定時間沒有收到任何包 # rtp監聽鏈接自動中止,發送BYE命令 rtp_idle_timeout 30; # 是否轉發音頻流 # 目前只支持aac格式,因此須要設備支持aac格式 # on:轉發音頻 # off:不轉發音頻,只有視頻 # *注意*!!!:flv 只支持11025 22050 44100 三種 # 若是設備端沒有三種中任何一個,轉發時爲自動選擇一種格式 # 同時也會將adts的頭封裝在flv aac raw數據中 # 這樣的話播放器爲自動經過adts頭自動選擇採樣頻率 # 像ffplay, vlc均可以,可是flash是沒有聲音, # 由於flash,只支持11025 22050 44100 audio_enable off; # 是否開啓rtp緩衝 # 開啓以後能有效解決rtp亂序等問題 jitterbuffer_enable on; # 服務器主機號,能夠域名或ip地址 # 也就是設備端將媒體發送的地址,若是是服務器是內外網 # 須要寫外網地址, # 調用api建立stream session時返回ip地址也是host # $CANDIDATE 是系統環境變量,從環境變量獲取地址,若是沒有配置,用* # *表明指定stats network 的網卡號地址,若是沒有配置network,默認則是第0號網卡地址 # TODO: https://github.com/ossrs/srs/pull/1679/files#r400917594 # host $CANDIDATE; host 10.10.9.200; #根據收到ps rtp包自帶建立rtmp媒體通道,不須要api接口建立 #rtmp地址參數[stream] 就是通道id 格式chid[ssrc] auto_create_channel off; sip { # 是否啓用srs內部sip信令 # 爲on信令走srs, off 只轉發ps流 enabled on; # sip監聽udp端口 listen 5060; # SIP server ID(SIP服務器ID). # 設備端配置編號須要與該值一致,不然沒法註冊 serial 34020000002000000001; # SIP server domain(SIP服務器域) realm 3402000000; # 服務端發送ack後,接收回應的超時時間,單位爲秒 # 若是指定時間沒有迴應,認爲失敗 ack_timeout 30; # 設備心跳維持時間,若是指定時間內(秒)沒有接收一個心跳 # 認爲設備離線 keepalive_timeout 120; # 註冊以後是否自動給設備端發送invite # on: 是 off 不是,須要經過api控制 auto_play on; # 設備將流發送的端口,是否固定 # on 發送流到多路複用端口 如9000 # off 自動從rtp_mix_port - rtp_max_port 之間的值中 # 選一個能夠用的端口 invite_port_fixed on; # 向設備或下級域查詢設備列表的間隔,單位(秒) # 默認60秒 query_catalog_interval 60; } } vhost __defaultVhost__ { }
2.檢測服務端口是 sip:5060 api:1985 直播推流端口:1935docker
3.配置攝像頭centos
4.檢查API地址與端口1985是否生效,攝像頭是否上線http://ossrs.net/players/srs_gb28181.htmlapi