From da2662ab27e5655636bfa6338d8d1f083a99f36f Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期四, 13 六月 2024 18:10:01 +0800 Subject: [PATCH] 国标28181-支持自动识别网卡监听,可以不再配置SIP.IP --- doc/_content/ability/device.md | 3 src/main/java/com/genersoft/iot/vmp/media/MediaServerConfig.java | 2 doc/_content/introduction/compile.md | 2 src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java | 8 - src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java | 1 src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java | 3 src/main/resources/all-application.yml | 8 src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiController.java | 2 src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java | 48 ++++++- src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java | 2 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java | 32 ----- src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 10 + src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java | 27 +--- doc/_sidebar.md | 1 src/main/java/com/genersoft/iot/vmp/media/bean/MediaServer.java | 2 doc/_content/introduction/config.md | 138 +++++++++------------- src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java | 2 src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java | 2 doc/_content/introduction/deployment.md | 16 -- src/main/resources/application-dev.yml | 29 +--- 20 files changed, 142 insertions(+), 196 deletions(-) diff --git a/doc/_content/ability/device.md b/doc/_content/ability/device.md index ceed545..134f7ad 100644 --- a/doc/_content/ability/device.md +++ b/doc/_content/ability/device.md @@ -3,9 +3,6 @@ 璁惧鎺ュ叆涓昏鏄渶瑕佸湪璁惧涓婇厤缃�28181涓婄骇涔熷氨鏄疻VP-PRO鐨勪俊鎭紝鍙湁淇℃伅涓�鑷寸殑鎯呭喌鎵嶅彲浠ユ敞鍐屾垚鍔熴�傝澶囨敞鍐屾垚鍔熷悗鎵撳紑WVP->鍥芥爣璁惧,鍙互鐪嬪埌鏂板鍔犵殑璁惧锛沎璁惧浣跨敤](./_content/ability/device_use.md)锛� 涓昏鏈変互涓嬪瓧娈甸渶瑕侀厤缃細 -- sip->ip -鏈満IP锛屼笉瑕佷娇鐢�127.0.0.1/0.0.0.0, 闄ら潪浣犲椤圭洰鍙婂叾鐔熸倝 - - sip->port 28181鏈嶅姟鐩戝惉鐨勭鍙� diff --git a/doc/_content/introduction/compile.md b/doc/_content/introduction/compile.md index 66693bd..b5dbef0 100644 --- a/doc/_content/introduction/compile.md +++ b/doc/_content/introduction/compile.md @@ -44,7 +44,7 @@ 杩欓噷渚濈劧鏄弬鑰冪綉涓婃暀绋嬶紝鑷瀹夎鍚с�� ## 4 缂栬瘧ZLMediaKit -鍙傝�僙LMediaKit[WIKI](https://github.com/ZLMediaKit/ZLMediaKit/wiki)锛屾埅鍙栦竴涓嬪叧閿楠わ細 +鍙傝�僙LMediaKit[WIKI](https://github.com/ZLMediaKit/ZLMediaKit/wiki)锛屽鏋滈渶瑕佷娇鐢ㄨ闊冲璁插姛鑳斤紝璇峰弬鑰僛zlm鍚敤webrtc缂栬瘧鎸囧崡](https://github.com/ZLMediaKit/ZLMediaKit/wiki/zlm%E5%90%AF%E7%94%A8webrtc%E7%BC%96%E8%AF%91%E6%8C%87%E5%8D%97)锛屽紑鍚痾lm鐨剋ebrtc鍔熻兘銆傛埅鍙栦竴涓嬪叧閿楠わ細 ```bash # 鍥藉唴鐢ㄦ埛鎺ㄨ崘浠庡悓姝ラ暅鍍忕綉绔檊itee涓嬭浇 git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit diff --git a/doc/_content/introduction/config.md b/doc/_content/introduction/config.md index 29f00a4..359aac9 100644 --- a/doc/_content/introduction/config.md +++ b/doc/_content/introduction/config.md @@ -14,20 +14,11 @@ 鍩轰簬spring boot鐨勫紑鍙戞柟寮忥紝閰嶇疆鏂囦欢鐨勫姞杞芥槸寰堢伒娲荤殑銆傞粯璁ゅ湪src/main/resources/application.yml锛岄儴鍒嗛厤缃」鏄彲閫夛紝浣犱笉闇�瑕佸叏閮ㄩ厤缃湪閰嶇疆鏂囦欢涓紝 瀹屽叏鐨勯厤缃鏄庡彲浠ュ弬鐪媋ll-application.yml銆� ### 1.1 榛樿鍔犺浇閰嶇疆鏂囦欢鏂瑰紡 -浣跨敤maven鎵撳寘鍚庣殑jar鍖呴噷锛屽凡缁忓瓨鍦ㄤ簡閰嶇疆鏂囦欢锛屼絾鏄瘡娆℃墦寮�jar鍖呬慨鏀归厤缃枃浠舵垨鑰呬慨鏀瑰悗鍐嶆墦鍖呴兘鏄瘮杈冮夯鐑︾殑锛屾墍浠ュぇ瀹跺彲閫氳繃鎸囧畾閰嶇疆鏂囦欢璺緞鏉ュ姞杞芥寚瀹氫綅缃殑閰嶇疆鏂囦欢銆� +浣跨敤maven鎵撳寘鍚庣殑target閲岋紝宸茬粡瀛樺湪浜嗛厤缃枃浠讹紝榛樿鍔犺浇閰嶇疆鏂囦欢涓篴pplication.yml锛屾煡鐪嬪唴瀹瑰彂鐜板叾涓璼pring.profiles.active閰嶇疆鐨勫唴瀹癸紝灏嗗叆閰嶇疆鐨勫�间负dev锛岄偅涔堝叿浣撳姞杞界殑閰嶇疆鏂囦欢灏辨槸application-dev.yml锛屽鏋滈厤缃殑鍊兼壘涓嶅埌瀵瑰簲鐨勯厤缃枃浠讹紝淇敼鍊间负dev銆� ```shell cd wvp-GB28181-pro/target -java -jar wvp-pro-*.jar --spring.config.location=../src/main/resources/application.yml +java -jar wvp-pro-*.jar ``` -### 1.2 杩佺Щ閰嶇疆鏂囦欢浠ユ柟渚垮惎鍔� -鐢变簬閰嶇疆鏂囦欢鐨勫懡浠ゆ瘮杈冮暱锛屾墍浠ヤ负浜嗗惎鍔ㄦ柟渚块�氬父鎴戜細鎶婇厤缃枃浠舵斁鍒癹ar鍖呯殑鍚岀骇鐩綍锛岀被浼艰繖鏍�, -绉婚櫎jar鍖呭唴/BOOT-INF/classes/涓嬫墍鏈変互application寮�澶寸殑鏂囦欢锛屼娇鐢ㄨВ鍘嬬缉宸ュ叿鎵撳紑jar鍗冲彲锛屼笉闇�瑕佽В鍘嬪嚭鏉ャ�� -```shell -cd wvp-GB28181-pro/target -mv ../src/main/resources/application-dev.yml application.yml -java -jar wvp-pro-*.jar -``` -杩欎篃鏄垜鑷繁鏈�甯哥敤鐨勬柟寮忋�� ## 2 閰嶇疆WVP-PRO wvp鏀寔澶氱鏁版嵁搴擄紝鍖呮嫭Mysql锛孭ostgresql锛岄噾浠撶瓑锛岄厤缃换閫変竴绉嶅嵆鍙�� ### 2.1 鏁版嵁搴撻厤缃� @@ -37,27 +28,28 @@ 鏁版嵁搴撳悕绉颁互wvp涓轰緥 ```yaml spring: - datasource: - type: com.zaxxer.hikari.HikariDataSource - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true - username: root - password: 12345678 - -mybatis: - configuration: - map-underscore-to-camel-case: true + dynamic: + primary: master + datasource: + master: + type: com.zaxxer.hikari.HikariDataSource + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true + username: root + password: root123 ``` #### 2.1.3 Postgresql鏁版嵁搴撻厤缃� 鏁版嵁搴撳悕绉颁互wvp涓轰緥 ```yaml spring: - datasource: - type: com.zaxxer.hikari.HikariDataSource - driver-class-name: org.postgresql.Driver - url: jdbc:postgresql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true - username: root - password: 12345678 + dynamic: + primary: master + datasource: + type: com.zaxxer.hikari.HikariDataSource + driver-class-name: org.postgresql.Driver + url: jdbc:postgresql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true + username: root + password: 12345678 pagehelper: helper-dialect: postgresql @@ -66,12 +58,14 @@ 鏁版嵁搴撳悕绉颁互wvp涓轰緥 ```yaml spring: - datasource: - type: com.zaxxer.hikari.HikariDataSource - driver-class-name: com.kingbase8.Driver - url: jdbc:kingbase8://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=utf8 - username: root - password: 12345678 + dynamic: + primary: master + datasource: + type: com.zaxxer.hikari.HikariDataSource + driver-class-name: com.kingbase8.Driver + url: jdbc:kingbase8://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=utf8 + username: root + password: 12345678 pagehelper: helper-dialect: postgresql @@ -88,8 +82,6 @@ ```yaml # 浣滀负28181鏈嶅姟鍣ㄧ殑閰嶇疆 sip: - # [蹇呴』淇敼] 鏈満鐨処P - ip: 192.168.1.3 # [鍙�塢 28181鏈嶅姟鐩戝惉鐨勭鍙� port: 5060 # 鏍规嵁鍥芥爣6.1.2涓瀹氾紝domain瀹滈噰鐢↖D缁熶竴缂栫爜鐨勫墠鍗佷綅缂栫爜銆傚浗鏍囬檮褰旸涓畾涔夊墠8浣嶄负涓績缂栫爜锛堢敱鐪佺骇銆佸競绾с�佸尯绾с�佸熀灞傜紪鍙风粍鎴愶紝鍙傜収GB/T 2260-2007锛� @@ -106,58 +98,42 @@ ```yaml #zlm 榛樿鏈嶅姟鍣ㄩ厤缃� media: - # ZLMediaKit鐨勬湇鍔D锛屽繀椤婚厤缃� - id: FQ3TF8yT83wh5Wvz - # [蹇呴』淇敼] zlm鏈嶅姟鍣ㄧ殑鍐呯綉IP锛宻dp-ip涓巗tream-ip浣跨敤榛樿鍊肩殑鎯呭喌涓嬶紝杩欓噷涓嶈浣跨敤127.0.0.1/0.0.0.0 - ip: 192.168.1.3 - # [蹇呴』淇敼] zlm鏈嶅姟鍣ㄧ殑http.port - http-port: 6080 - # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑hook.admin_params=secret - secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc - # 鍚敤澶氱鍙fā寮�, 澶氱鍙fā寮忎娇鐢ㄧ鍙e尯鍒嗘瘡璺祦锛屽吋瀹规�ф洿濂姐�� 鍗曠鍙d娇鐢ㄦ祦鐨剆src鍖哄垎锛� 鐐规挱瓒呮椂寤鸿浣跨敤澶氱鍙f祴璇� - rtp: - # [鍙�塢 鏄惁鍚敤澶氱鍙fā寮�, 寮�鍚悗浼氬湪portRange鑼冨洿鍐呴�夋嫨绔彛鐢ㄤ簬濯掍綋娴佷紶杈� - enable: true - # [鍙�塢 鍦ㄦ鑼冨洿鍐呴�夋嫨绔彛鐢ㄤ簬濯掍綋娴佷紶杈�, - port-range: 30000,30500 # 绔彛鑼冨洿 - # [鍙�塢 鍥芥爣绾ц仈鍦ㄦ鑼冨洿鍐呴�夋嫨绔彛鍙戦�佸獟浣撴祦, - send-port-range: 30000,30500 # 绔彛鑼冨洿 - # 褰曞儚杈呭姪鏈嶅姟锛� 閮ㄧ讲姝ゆ湇鍔″彲浠ュ疄鐜皕lm褰曞儚鐨勭鐞嗕笌涓嬭浇锛� 0 琛ㄧず涓嶄娇鐢� - record-assist-port: 18081 + id: zlmediakit-local + # [蹇呴』淇敼] zlm鏈嶅姟鍣ㄧ殑鍐呯綉IP + ip: 172.19.128.50 + # [鍙�塢 鏈夊叕缃慖P灏遍厤缃叕缃慖P, 涓嶅彲鐢ㄥ煙鍚� + wan_ip: + # [蹇呴』淇敼] zlm鏈嶅姟鍣ㄧ殑http.port + http-port: 9092 + # [鍙�塢 zlm鏈嶅姟鍣ㄨ闂甒VP鎵�浣跨敤鐨処P, 榛樿浣跨敤127.0.0.1锛寊lm鍜寃vp娌℃湁閮ㄧ讲鍦ㄥ悓涓�鍙版湇鍔″櫒鏃跺繀椤婚厤缃� + hook-ip: 172.19.128.50 + # [蹇呴�夐�塢 zlm鏈嶅姟鍣ㄧ殑hook.admin_params=secret + secret: TWSYFgYJOQWB4ftgeYut8DW4wbs7pQnj + # 鍚敤澶氱鍙fā寮�, 澶氱鍙fā寮忎娇鐢ㄧ鍙e尯鍒嗘瘡璺祦锛屽吋瀹规�ф洿濂姐�� 鍗曠鍙d娇鐢ㄦ祦鐨剆src鍖哄垎锛� 鐐规挱瓒呮椂寤鸿浣跨敤澶氱鍙f祴璇� + rtp: + # [鍙�塢 鏄惁鍚敤澶氱鍙fā寮�, 寮�鍚悗浼氬湪portRange鑼冨洿鍐呴�夋嫨绔彛鐢ㄤ簬濯掍綋娴佷紶杈� + enable: true + # [鍙�塢 鍦ㄦ鑼冨洿鍐呴�夋嫨绔彛鐢ㄤ簬濯掍綋娴佷紶杈�, 蹇呴』鎻愬墠鍦▃lm涓婇厤缃灞炴�э紝涓嶇劧鑷姩閰嶇疆姝ゅ睘鎬у彲鑳戒笉鎴愬姛 + port-range: 30000,35000 # 绔彛鑼冨洿 + # [鍙�塢 鍥芥爣绾ц仈鍦ㄦ鑼冨洿鍐呴�夋嫨绔彛鍙戦�佸獟浣撴祦, + send-port-range: 40000,40300 # 绔彛鑼冨洿 ``` ### 2.4 涓�у寲瀹氬埗淇℃伅閰嶇疆 ```yaml # [鏍规嵁涓氬姟闇�姹傞厤缃甝 user-settings: - # [鍙�塢 鏈嶅姟ID锛屼笉鍐欏垯涓�000000 - server-id: - # [鍙�塢 鑷姩鐐规挱锛� 浣跨敤鍥哄畾娴佸湴鍧�杩涜鎾斁鏃讹紝濡傛灉鏈偣鎾垯鑷姩杩涜鐐规挱, 闇�瑕乺tp.enable=true - auto-apply-play: false - # [鍙�塢 閮ㄥ垎璁惧闇�瑕佹墿灞昐DP锛岄渶瑕佹墦寮�姝よ缃� - senior-sdp: false - # 淇濆瓨绉诲姩浣嶇疆鍘嗗彶杞ㄨ抗锛歵rue:淇濈暀鍘嗗彶鏁版嵁锛宖alse:浠呬繚鐣欐渶鍚庣殑浣嶇疆(榛樿) - save-position-history: false - # 鐐规挱绛夊緟瓒呮椂鏃堕棿,鍗曚綅锛氭绉� - play-timeout: 3000 - # 绛夊緟闊宠棰戠紪鐮佷俊鎭啀杩斿洖锛� true锛� 鍙互鏍规嵁缂栫爜閫夋嫨鍚堥�傜殑鎾斁鍣紝false锛� 鍙互鏇村揩鐐规挱 - wait-track: false - # 鏄惁寮�鍚帴鍙i壌鏉� - interface-authentication: true - # 鑷姩閰嶇疆redis 鍙互杩囨湡浜嬩欢 - redis-config: true - # 鎺ュ彛閴存潈渚嬪鐨勬帴鍙�, 鍗充笉杩涜鎺ュ彛閴存潈鐨勬帴鍙�,灏介噺璇︾粏涔﹀啓锛屽敖閲忎笉鐢�/**锛岃嚦灏戜袱绾х洰褰� - interface-authentication-excludes: - - /api/v1/** - # 鎺ㄦ祦鐩存挱鏄惁褰曞埗 - record-push-live: true - # 鍥芥爣鏄惁褰曞埗 - record-sip: true - # 鏄惁灏嗘棩蹇楀瓨鍌ㄨ繘鏁版嵁搴� - logInDatabase: true - # 绗笁鏂瑰尮閰嶏紝鐢ㄤ簬浠巗tream閽熻幏鍙栨湁鏁堜俊鎭� - thirdPartyGBIdReg: [\s\S]* + # 鐐规挱/褰曞儚鍥炴斁 绛夊緟瓒呮椂鏃堕棿,鍗曚綅锛氭绉� + play-timeout: 180000 + # [鍙�塢 鑷姩鐐规挱锛� 浣跨敤鍥哄畾娴佸湴鍧�杩涜鎾斁鏃讹紝濡傛灉鏈偣鎾垯鑷姩杩涜鐐规挱, 闇�瑕乺tp.enable=true + auto-apply-play: true + # 鎺ㄦ祦鐩存挱鏄惁褰曞埗 + record-push-live: true + # 鍥芥爣鏄惁褰曞埗 + record-sip: true + # 鍥芥爣鐐规挱 鎸夐渶鎷夋祦, true锛氭湁浜鸿鐪嬫媺娴侊紝鏃犱汉瑙傜湅閲婃斁锛� false锛氭媺璧峰悗涓嶈嚜鍔ㄩ噴鏀� + stream-on-demand: true ``` - +鏇村瀹屾暣鐨勯厤缃俊鎭弬鑰僡ll-application.yml鏂囦欢锛岄渶瑕侀偅涓厤缃」锛屽鍒跺埌姝e湪浣跨敤鐨勯厤缃枃浠朵腑瀵瑰簲鐨勬枃浠跺嵆鍙�� 濡傛灉閰嶇疆淇℃伅鏃犺锛屼綘鍙互鍚姩zlm锛屽啀鍚姩wvp鏉ユ祴璇曚簡锛屽惎鍔ㄦ垚鍔熺殑璇濓紝浣犲彲浠ュ湪wvp鐨勬棩蹇椾笅鐪嬪埌zlm宸茶繛鎺ョ殑鎻愮ず銆� 鎺ヤ笅鏉閮ㄧ讲鍒版湇鍔″櫒](./_content/introduction/deployment.md)锛� 濡傛灉浣犲彧鏄湰鍦拌繍琛岀洿鎺ュ湪鏈湴杩愯鍗冲彲銆� diff --git a/doc/_content/introduction/deployment.md b/doc/_content/introduction/deployment.md index 3883842..f11fe7f 100644 --- a/doc/_content/introduction/deployment.md +++ b/doc/_content/introduction/deployment.md @@ -19,7 +19,7 @@ 3. 娴嬭瘯鐜閮ㄧ讲寤鸿鎵�鏈夋湇鍔¢儴缃插湪涓�鍙颁富鏈猴紝鍏抽棴闃茬伀澧欙紝鍑忓皯鍥犵綉缁滃嚭鐜伴棶棰樼殑鍙兘; 4. 鐢熶骇鐜鎸夐渶寮�鏀剧鍙o紝浣嗘槸寤鸿淇敼榛樿绔彛锛屽挨鍏舵槸5060绔彛锛屾槗鍙楀埌鏀诲嚮; -5. zlm浣跨敤docker閮ㄧ讲鐨勬儏鍐碉紝瑕佹眰绔彛鏄犲皠涓�鑷达紝姣斿鏄犲皠5060,搴斿皢澶栭儴绔彛涔熸槧灏勪负5060绔彛; +5. zlm浣跨敤docker閮ㄧ讲鐨勬儏鍐碉紝璇蜂娇鐢╤ost妯″紡锛屾垨鑰呯鍙f槧灏勪竴鑷达紝姣斿鏄犲皠5060,搴斿皢澶栭儴绔彛涔熸槧灏勪负5060绔彛; 6. zlm涓巜vp浼氫繚鎸侀珮棰戠巼鐨勯�氫俊锛屾墍浠ヤ笉瑕佸幓灏唚vp涓巣lm鍒嗗睘鍦ㄤ袱涓綉缁滐紝姣斿wvp鍦ㄥ唴缃戯紝zlm鍗村湪鍏綉鐨勬儏鍐点�� 7. 鍚姩鏈嶅姟锛屼互linux涓轰緥 **鍚姩WVP-PRO** @@ -36,19 +36,9 @@ ### 鍓嶅悗绔垎绂婚儴缃� 鍓嶅悗绔儴缃茬洰鍓嶅湪鏈�鏂扮殑鐗堟湰宸茬粡鏀寔锛岃浣跨敤3鏈�15鏃ヤ箣鍚庣殑鐗堟湰閮ㄧ讲 鍓嶇缂栬瘧鍚庣殑鏂囦欢鍦╜src/main/resources/static`涓紝灏嗘鐩綍涓嬬殑鏂囦欢閮ㄧ讲銆� -鍓嶅悗绔垎绂婚儴缃叉渶澶х殑闂鏄法鍩熺殑瑙e喅锛屼箣鍓嶇増鏈娇鐢╟ookie瀹屾垚鐧诲綍娴佺▼锛岃�宑ookie鏄笉鍙互鍦ㄥ鏉傝法鍩熶腑浣跨敤鐨勩�傛墍浠ュ綋鍓嶇増鏈娇鐢↗WT鐢熸垚鐨凾OKEN浣滀负璁よ瘉鍑嵁锛� -閮ㄧ讲鍓嶇鍚庨渶瑕佸湪wvp涓厤缃墠绔闂殑鍦板潃浠ュ畬鎴愯法鍩熸祦绋嬨�� +WVP榛樿寮�鍚叏閮ㄦ帴鍙f敮鎸佽法鍩熴�傞儴缃插墠绔枃浠跺埌WEB瀹瑰櫒锛屽苟灏嗚闂殑鍦板潃璁剧疆涓篧VP鐨勫湴鍧�鍗冲彲銆� **閰嶇疆鍓嶇鏈嶅姟鍣�** -1. 鍋囧浣犵殑鏈嶅姟鏈夊叕缃戝煙鍚嶄负xxx.com锛屽叕缃慖P涓�11.11.11.11锛� 閭d箞浣犲彲浠ュ湪wvp涓繖鏍烽厤缃細 -```yaml -user-settings: - # 璺ㄥ煙閰嶇疆锛岄厤缃綘璁块棶鍓嶇椤甸潰鐨勫湴鍧�鍗冲彲锛� 鍙互閰嶇疆澶氫釜 - allowed-origins: - - http://xxx.com:8008 - - http://11.11.11.11:8008 -``` -閰嶇疆涓嶆槸蹇呴』鐨勶紝浣犱娇鐢ㄥ摢涓猧p/鍩熷悕璁块棶灏遍厤缃摢涓嵆鍙�備慨鏀归厤缃悗閲嶅惎wvp浠ヤ娇閰嶇疆鐢熸晥銆� -2. 鍦╜src/main/resources/static/static/js/config.js`涓嬮厤缃湇鍔″櫒鐨勫湴鍧�锛屼篃灏辨槸wvp鏈嶅姟鐨勫湴鍧� +1. 鍦╜src/main/resources/static/static/js/config.js`涓嬮厤缃湇鍔″櫒鐨勫湴鍧�锛屼篃灏辨槸wvp鏈嶅姟鐨勫湴鍧� ```javascript window.baseUrl = "http://xxx.com:18080" ``` diff --git a/doc/_sidebar.md b/doc/_sidebar.md index bdf5955..09a675d 100644 --- a/doc/_sidebar.md +++ b/doc/_sidebar.md @@ -1,7 +1,6 @@ <!-- 渚ц竟鏍� --> * **缂栬瘧涓庨儴缃�** - * [娴嬭瘯](_content/introduction/test.md) * [缂栬瘧](_content/introduction/compile.md) * [閰嶇疆](_content/introduction/config.md) * [閮ㄧ讲](_content/introduction/deployment.md) diff --git a/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java index eac7c11..0770172 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java @@ -27,19 +27,19 @@ @Value("${media.ip}") private String ip; - @Value("${media.hook-ip:}") - private String hookIp; + @Value("${media.wan_ip}") + private String wanIp; - @Value("${sip.ip}") - private String sipIp; + @Value("${media.hook-ip:127.0.0.1}") + private String hookIp; @Value("${sip.domain}") private String sipDomain; - @Value("${media.sdp-ip:${media.ip}}") + @Value("${media.sdp-ip:${media.wan_ip}}") private String sdpIp; - @Value("${media.stream-ip:${media.ip}}") + @Value("${media.stream-ip:${media.wan_ip}}") private String streamIp; @Value("${media.http-port:0}") @@ -111,20 +111,7 @@ } public String getHookIp() { - if (ObjectUtils.isEmpty(hookIp)){ - return sipIp; - }else { - return hookIp; - } - - } - - public String getSipIp() { - if (sipIp == null) { - return this.ip; - }else { - return sipIp; - } + return hookIp; } public int getHttpPort() { diff --git a/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java index 6a6c54f..4b85e0d 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java @@ -98,9 +98,6 @@ } public String getShowIp() { - if (this.showIp == null) { - return this.ip; - } return showIp; } diff --git a/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java b/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java index cce9145..007c72a 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java @@ -74,7 +74,7 @@ private boolean registerKeepIntDialog = false; - private int gbDeviceOnline = 0; + private int gbDeviceOnline = 1; public Boolean getSavePositionHistory() { return savePositionHistory; diff --git a/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java b/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java index c586255..229aeab 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/WVPTimerTask.java @@ -22,7 +22,7 @@ @Scheduled(fixedRate = 2 * 1000) //姣�3绉掓墽琛屼竴娆� public void execute(){ JSONObject jsonObject = new JSONObject(); - jsonObject.put("ip", sipConfig.getIp()); + jsonObject.put("ip", sipConfig.getShowIp()); jsonObject.put("port", serverPort); redisCatchStorage.updateWVPInfo(jsonObject, 3); } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java b/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java index 56663f1..1373530 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java @@ -16,6 +16,9 @@ import org.springframework.util.ObjectUtils; import javax.sip.*; +import java.net.Inet4Address; +import java.net.InetAddress; +import java.net.NetworkInterface; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -40,15 +43,46 @@ @Override public void run(String... args) { List<String> monitorIps = new ArrayList<>(); - // 浣跨敤閫楀彿鍒嗗壊澶氫釜ip - String separator = ","; - if (sipConfig.getIp().indexOf(separator) > 0) { - String[] split = sipConfig.getIp().split(separator); - monitorIps.addAll(Arrays.asList(split)); + if (ObjectUtils.isEmpty(sipConfig.getIp())) { + try { + // 鑾峰緱鏈満鐨勬墍鏈夌綉缁滄帴鍙� + Enumeration<NetworkInterface> nifs = NetworkInterface.getNetworkInterfaces(); + while (nifs.hasMoreElements()) { + NetworkInterface nif = nifs.nextElement(); + // 鑾峰緱涓庤缃戠粶鎺ュ彛缁戝畾鐨� IP 鍦板潃锛屼竴鑸彧鏈変竴涓� + Enumeration<InetAddress> addresses = nif.getInetAddresses(); + while (addresses.hasMoreElements()) { + InetAddress addr = addresses.nextElement(); + if (addr instanceof Inet4Address) { + if (addr.getHostAddress().equals("127.0.0.1")){ + continue; + } + if (nif.getName().startsWith("docker")) { + continue; + } + logger.error("[鑷姩閰嶇疆SIP鐩戝惉缃戝崱] 缃戝崱鎺ュ彛鍦板潃锛� {}", addr.getHostAddress());// 鍙叧蹇� IPv4 鍦板潃 + monitorIps.add(addr.getHostAddress()); + } + } + } + }catch (Exception e) { + logger.error("[璇诲彇缃戝崱淇℃伅澶辫触]", e); + } + if (monitorIps.isEmpty()) { + logger.error("[鑷姩閰嶇疆SIP鐩戝惉缃戝崱淇℃伅澶辫触]锛� 璇锋墜鍔ㄩ厤缃甋IP.IP鍚庨噸鏂板惎鍔�"); + System.exit(1); + } }else { - monitorIps.add(sipConfig.getIp()); + // 浣跨敤閫楀彿鍒嗗壊澶氫釜ip + String separator = ","; + if (sipConfig.getIp().indexOf(separator) > 0) { + String[] split = sipConfig.getIp().split(separator); + monitorIps.addAll(Arrays.asList(split)); + }else { + monitorIps.add(sipConfig.getIp()); + } } - + sipConfig.setShowIp(String.join(",", monitorIps)); SipFactory.getInstance().setPathName("gov.nist"); if (monitorIps.size() > 0) { for (String monitorIp : monitorIps) { diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java index dd30fea..8787ed1 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java @@ -353,36 +353,4 @@ return request; } - public Request createBroadcastMessageRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException { - Request request = null; - // sipuri - SipURI requestURI = SipFactory.getInstance().createAddressFactory().createSipURI(channelId, device.getHostAddress()); - // via - ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); - ViaHeader viaHeader = SipFactory.getInstance().createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), viaTag); - viaHeader.setRPort(); - viaHeaders.add(viaHeader); - // from - SipURI fromSipURI = SipFactory.getInstance().createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getDomain()); - Address fromAddress = SipFactory.getInstance().createAddressFactory().createAddress(fromSipURI); - FromHeader fromHeader = SipFactory.getInstance().createHeaderFactory().createFromHeader(fromAddress, fromTag); - // to - SipURI toSipURI = SipFactory.getInstance().createAddressFactory().createSipURI(channelId, device.getHostAddress()); - Address toAddress = SipFactory.getInstance().createAddressFactory().createAddress(toSipURI); - ToHeader toHeader = SipFactory.getInstance().createHeaderFactory().createToHeader(toAddress, toTag); - - // Forwards - MaxForwardsHeader maxForwards = SipFactory.getInstance().createHeaderFactory().createMaxForwardsHeader(70); - // ceq - CSeqHeader cSeqHeader = SipFactory.getInstance().createHeaderFactory().createCSeqHeader(redisCatchStorage.getCSEQ(), Request.MESSAGE); - - ContentTypeHeader contentTypeHeader = SipFactory.getInstance().createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml"); - - request = SipFactory.getInstance().createMessageFactory().createRequest(requestURI, Request.MESSAGE, callIdHeader, cSeqHeader, fromHeader, - toHeader, viaHeaders, maxForwards, contentTypeHeader, content); - - request.addHeader(SipUtils.createUserAgentHeader(gitUtil)); - - return request; - } } diff --git a/src/main/java/com/genersoft/iot/vmp/media/MediaServerConfig.java b/src/main/java/com/genersoft/iot/vmp/media/MediaServerConfig.java index fb9de3f..ccd2828 100755 --- a/src/main/java/com/genersoft/iot/vmp/media/MediaServerConfig.java +++ b/src/main/java/com/genersoft/iot/vmp/media/MediaServerConfig.java @@ -1,9 +1,9 @@ package com.genersoft.iot.vmp.media; import com.genersoft.iot.vmp.conf.MediaConfig; +import com.genersoft.iot.vmp.media.bean.MediaServer; import com.genersoft.iot.vmp.media.event.mediaServer.MediaServerChangeEvent; import com.genersoft.iot.vmp.media.service.IMediaServerService; -import com.genersoft.iot.vmp.media.bean.MediaServer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/main/java/com/genersoft/iot/vmp/media/bean/MediaServer.java b/src/main/java/com/genersoft/iot/vmp/media/bean/MediaServer.java index c951e41..e6faac3 100755 --- a/src/main/java/com/genersoft/iot/vmp/media/bean/MediaServer.java +++ b/src/main/java/com/genersoft/iot/vmp/media/bean/MediaServer.java @@ -15,7 +15,7 @@ private String ip; @Schema(description = "hook浣跨敤鐨処P锛坺lm璁块棶WVP浣跨敤鐨処P锛�") - private String hookIp; + private String hookIp = "127.0.0.1"; @Schema(description = "SDP IP") private String sdpIp; diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java index 738d3f8..636b4bf 100755 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java @@ -190,7 +190,15 @@ } } - + /** + * rtsp/rtmp娴佹敞鍐屾垨娉ㄩ攢鏃惰Е鍙戞浜嬩欢锛涙浜嬩欢瀵瑰洖澶嶄笉鏁忔劅銆� + */ +// @ResponseBody +// @PostMapping(value = "/on_stream_changed", produces = "application/json;charset=UTF-8") +// public HookResult onStreamChanged(@RequestBody JSONObject param) { +// System.out.println(11); +// return HookResult.SUCCESS(); +// } /** * rtsp/rtmp娴佹敞鍐屾垨娉ㄩ攢鏃惰Е鍙戞浜嬩欢锛涙浜嬩欢瀵瑰洖澶嶄笉鏁忔劅銆� */ diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java index d9a6c6b..4344343 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java @@ -8,15 +8,14 @@ import com.genersoft.iot.vmp.conf.exception.ControllerException; import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem; import com.genersoft.iot.vmp.media.bean.MediaInfo; -import com.genersoft.iot.vmp.media.service.IMediaNodeServerService; import com.genersoft.iot.vmp.media.bean.MediaServer; +import com.genersoft.iot.vmp.media.service.IMediaNodeServerService; import com.genersoft.iot.vmp.media.zlm.dto.ZLMServerConfig; import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; import com.genersoft.iot.vmp.vmanager.bean.WVPResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; @@ -35,9 +34,6 @@ @Autowired private ZLMServerFactory zlmServerFactory; - - @Value("${sip.ip}") - private String sipIp; @Override public int createRTPServer(MediaServer mediaServer, String streamId, long ssrc, Integer port, Boolean onlyAuto, Boolean disableAudio, Boolean reUsePort, Integer tcpMode) { @@ -120,7 +116,7 @@ mediaServer.setRtpProxyPort(zlmServerConfig.getRtpProxyPort()); mediaServer.setStreamIp(ip); - mediaServer.setHookIp(sipIp.split(",")[0]); + mediaServer.setHookIp("127.0.0.1"); mediaServer.setSdpIp(ip); mediaServer.setType("zlm"); return mediaServer; diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java index 285b9e6..5d5f1c3 100755 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java @@ -96,7 +96,6 @@ if (callback == null) { try { Response response = client.newCall(request).execute(); - if (response.isSuccessful()) { ResponseBody responseBody = response.body(); if (responseBody != null) { diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java index 97803f9..debc3b2 100755 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java @@ -89,7 +89,7 @@ @GetMapping("/server_config") public JSONObject serverConfig() { JSONObject result = new JSONObject(); - result.put("deviceIp", sipConfig.getIp()); + result.put("deviceIp", sipConfig.getShowIp()); result.put("devicePort", sipConfig.getPort()); result.put("username", sipConfig.getId()); result.put("password", sipConfig.getPassword()); diff --git a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiController.java b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiController.java index 3457cf9..e0973b9 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiController.java +++ b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiController.java @@ -40,7 +40,7 @@ result.put("Server",""); result.put("SIPSerial", sipConfig.getId()); result.put("SIPRealm", sipConfig.getDomain()); - result.put("SIPHost", sipConfig.getIp()); + result.put("SIPHost", sipConfig.getShowIp()); result.put("SIPPort", sipConfig.getPort()); result.put("ChannelCount","1000"); result.put("VersionType",""); diff --git a/src/main/resources/all-application.yml b/src/main/resources/all-application.yml index 5c46d52..31db680 100644 --- a/src/main/resources/all-application.yml +++ b/src/main/resources/all-application.yml @@ -139,12 +139,14 @@ id: # [蹇呴』淇敼] zlm鏈嶅姟鍣ㄧ殑鍐呯綉IP ip: 192.168.0.100 + # [鍙�塢 鏈夊叕缃慖P灏遍厤缃叕缃慖P, 涓嶅彲鐢ㄥ煙鍚� + wan_ip: # [鍙�塢 杩斿洖娴佸湴鍧�鏃剁殑ip锛岀疆绌轰娇鐢� media.ip stream-ip: # [鍙�塢 wvp鍦ㄥ浗鏍囦俊浠や腑浣跨敤鐨刬p锛屾ip涓烘憚鍍忔満鍙互璁块棶鍒扮殑ip锛� 缃┖浣跨敤 media.ip sdp-ip: - # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑hook鎵�浣跨敤鐨処P, 榛樿浣跨敤sip.ip - hook-ip: + # [鍙�塢 zlm鏈嶅姟鍣ㄨ闂甒VP鎵�浣跨敤鐨処P, 榛樿浣跨敤127.0.0.1锛寊lm鍜寃vp娌℃湁閮ㄧ讲鍦ㄥ悓涓�鍙版湇鍔″櫒鏃跺繀椤婚厤缃� + hook-ip: 172.19.128.50 # [蹇呴』淇敼] zlm鏈嶅姟鍣ㄧ殑http.port http-port: 80 # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑http.sslport, 缃┖浣跨敤zlm閰嶇疆鏂囦欢閰嶇疆 @@ -249,7 +251,7 @@ - http://192.168.1.3:8008 # 鍥芥爣璁惧绂荤嚎鍚庣殑涓婄嚎绛栫暐锛� # 0锛� 鍥芥爣鏍囧噯瀹炵幇锛岃澶囩绾垮悗涓嶅洖澶嶅績璺筹紝鐩村埌璁惧閲嶆柊娉ㄥ唽涓婄嚎锛� - # 1锛� 瀵逛簬绂荤嚎璁惧锛屾敹鍒板績璺冲氨鎶婅澶囪缃负涓婄嚎锛屽苟鏇存柊娉ㄥ唽鏃堕棿涓轰笂娆¤繖娆″績璺崇殑鏃堕棿銆傞槻姝㈣繃鏈熸椂闂村垽鏂紓甯� + # 1锛堥粯璁わ級锛� 瀵逛簬绂荤嚎璁惧锛屾敹鍒板績璺冲氨鎶婅澶囪缃负涓婄嚎锛屽苟鏇存柊娉ㄥ唽鏃堕棿涓轰笂娆¤繖娆″績璺崇殑鏃堕棿銆傞槻姝㈣繃鏈熸椂闂村垽鏂紓甯� gb-device-online: 0 # 鍏抽棴鍦ㄧ嚎鏂囨。锛堢敓浜х幆澧冨缓璁叧闂級 diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index e61ac0b..93c8af3 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -58,11 +58,6 @@ # 浣滀负28181鏈嶅姟鍣ㄧ殑閰嶇疆 sip: - # [蹇呴』淇敼] 鏈満鐨処P锛屽搴斾綘鐨勭綉鍗★紝鐩戝惉浠�涔坕p灏辨槸浣跨敤浠�涔堢綉鍗★紝 - # 濡傛灉瑕佺洃鍚寮犵綉鍗★紝鍙互浣跨敤閫楀彿鍒嗛殧澶氫釜IP锛� 渚嬪锛� 192.168.1.4,10.0.0.4 - # 濡傛灉涓嶆槑鐧斤紝灏变娇鐢�0.0.0.0锛屽ぇ閮ㄥ垎鎯呭喌閮芥槸鍙互鐨� - # 璇蜂笉瑕佷娇鐢�127.0.0.1锛屼换浣曞寘鎷琹ocalhost鍦ㄥ唴鐨勫煙鍚嶉兘鏄笉鍙互鐨勩�� - ip: 172.19.128.50 # [鍙�塢 28181鏈嶅姟鐩戝惉鐨勭鍙� port: 8116 # 鏍规嵁鍥芥爣6.1.2涓瀹氾紝domain瀹滈噰鐢↖D缁熶竴缂栫爜鐨勫墠鍗佷綅缂栫爜銆傚浗鏍囬檮褰旸涓畾涔夊墠8浣嶄负涓績缂栫爜锛堢敱鐪佺骇銆佸競绾с�佸尯绾с�佸熀灞傜紪鍙风粍鎴愶紝鍙傜収GB/T 2260-2007锛� @@ -82,18 +77,14 @@ id: zlmediakit-local # [蹇呴』淇敼] zlm鏈嶅姟鍣ㄧ殑鍐呯綉IP ip: 172.19.128.50 + # [鍙�塢 鏈夊叕缃慖P灏遍厤缃叕缃慖P, 涓嶅彲鐢ㄥ煙鍚� + wan_ip: # [蹇呴』淇敼] zlm鏈嶅姟鍣ㄧ殑http.port http-port: 9092 - # [鍙�塢 杩斿洖娴佸湴鍧�鏃剁殑ip锛岀疆绌轰娇鐢� media.ip - stream-ip: 172.19.128.50 - # [鍙�塢 wvp鍦ㄥ浗鏍囦俊浠や腑浣跨敤鐨刬p锛屾ip涓烘憚鍍忔満鍙互璁块棶鍒扮殑ip锛� 缃┖浣跨敤 media.ip - sdp-ip: 172.19.128.50 - # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑hook鎵�浣跨敤鐨処P, 榛樿浣跨敤sip.ip + # [鍙�塢 zlm鏈嶅姟鍣ㄨ闂甒VP鎵�浣跨敤鐨処P, 榛樿浣跨敤127.0.0.1锛寊lm鍜寃vp娌℃湁閮ㄧ讲鍦ㄥ悓涓�鍙版湇鍔″櫒鏃跺繀椤婚厤缃� hook-ip: 172.19.128.50 - # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑http.sslport, 缃┖浣跨敤zlm閰嶇疆鏂囦欢閰嶇疆 - http-ssl-port: 1443 - # [鍙�塢 zlm鏈嶅姟鍣ㄧ殑hook.admin_params=secret - secret: 10000 + # [蹇呴�夐�塢 zlm鏈嶅姟鍣ㄧ殑hook.admin_params=secret + secret: TWSYFgYJOQWB4ftgeYut8DW4wbs7pQnj # 鍚敤澶氱鍙fā寮�, 澶氱鍙fā寮忎娇鐢ㄧ鍙e尯鍒嗘瘡璺祦锛屽吋瀹规�ф洿濂姐�� 鍗曠鍙d娇鐢ㄦ祦鐨剆src鍖哄垎锛� 鐐规挱瓒呮椂寤鸿浣跨敤澶氱鍙f祴璇� rtp: # [鍙�塢 鏄惁鍚敤澶氱鍙fā寮�, 寮�鍚悗浼氬湪portRange鑼冨洿鍐呴�夋嫨绔彛鐢ㄤ簬濯掍綋娴佷紶杈� @@ -102,14 +93,16 @@ port-range: 50000,50300 # 绔彛鑼冨洿 # [鍙�塢 鍥芥爣绾ц仈鍦ㄦ鑼冨洿鍐呴�夋嫨绔彛鍙戦�佸獟浣撴祦, send-port-range: 50000,50300 # 绔彛鑼冨洿 - # 褰曞儚杈呭姪鏈嶅姟锛� 閮ㄧ讲姝ゆ湇鍔″彲浠ュ疄鐜皕lm褰曞儚鐨勭鐞嗕笌涓嬭浇锛� 0 琛ㄧず涓嶄娇鐢� - record-assist-port: 18081 # [鏍规嵁涓氬姟闇�姹傞厤缃甝 user-settings: # 鐐规挱/褰曞儚鍥炴斁 绛夊緟瓒呮椂鏃堕棿,鍗曚綅锛氭绉� play-timeout: 180000 # [鍙�塢 鑷姩鐐规挱锛� 浣跨敤鍥哄畾娴佸湴鍧�杩涜鎾斁鏃讹紝濡傛灉鏈偣鎾垯鑷姩杩涜鐐规挱, 闇�瑕乺tp.enable=true auto-apply-play: true - # 璁惧/閫氶亾鐘舵�佸彉鍖栨椂鍙戦�佹秷鎭� - device-status-notify: true + # 鎺ㄦ祦鐩存挱鏄惁褰曞埗 + record-push-live: true + # 鍥芥爣鏄惁褰曞埗 + record-sip: true + # 鍥芥爣鐐规挱 鎸夐渶鎷夋祦, true锛氭湁浜鸿鐪嬫媺娴侊紝鏃犱汉瑙傜湅閲婃斁锛� false锛氭媺璧峰悗涓嶈嚜鍔ㄩ噴鏀� + stream-on-demand: true -- Gitblit v1.8.0