• 视频监控解决方案(BS架构,支持window、linux、linux arm)


    开源流媒体服务器(m7s)+ webrtc

    优势:跨平台,低延时,低配置可跑多路视频流,低CPU,使用浏览器硬解,前端就够完成开发

    流媒体:https://m7s.live/

    播放器:http://jessibuca.monibuca.com/

    github:https://github.com/langhuihui/monibuca

    文档:http://docs.monibuca.com/

    普通功能

    1. 通过ffmpeg向m7s进行推流

     ffmpeg -i **** rtsp://localhost/live/test

    bat文件

    :loop
      D:\StreamingMedia\ZLMRelease\ffmpeg\bin\ffmpeg.exe -re -i D:\StreamingMedia\MP4\dock1.mp4 -strict -2 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://192.168.0.113/live/test1
    goto loop

    2. 拉流转发

    3. GB28181 api接口

    3.1  获取在线设备

    http://localhost:8081/api/gb28181/list

    [{
    "ID": "34020000001110000107",
    "Name": "Network Video Recorder",
    "Manufacturer": "HIKVISION",
    "Model": "DS-7816N-R2",
    "Owner": "",
    "RegisterTime": "2022-05-05T09:49:37.2410515+08:00",
    "UpdateTime": "2022-05-05T09:56:31.5065763+08:00",
    "LastKeepaliveAt": "2022-05-05T09:56:31.5065763+08:00",
    "Status": "ONLINE",
    "Channels": [{
    "DeviceID": "34020000001320000011",
    "ParentID": "",
    "Name": "Camera 01",
    "Manufacturer": "Manufacturer",
    "Model": "Camera",
    "Owner": "Owner",
    "CivilCode": "CivilCode",
    "Address": "192.168.0.11",
    "Parental": 0,
    "SafetyWay": 0,
    "RegisterWay": 1,
    "Secrecy": 0,
    "Status": "OFF",
    "RecordPublisher": null,
    "LivePublisher": null,
    "LiveSubSP": "",
    "Records": null,
    "RecordStartTime": "",
    "RecordEndTime": ""
    }],
    "Addr": "192.168.0.104:5060",
    "SipIP": "192.168.0.113"
    }, {
    "ID": "34020000001320000020",
    "Name": "IPC-HFW2433DM-LED",
    "Manufacturer": "Dahua",
    "Model": "IPC-HFW2433DM-LED",
    "Owner": "",
    "RegisterTime": "2022-05-05T09:49:34.9500624+08:00",
    "UpdateTime": "2022-05-05T09:56:34.9891245+08:00",
    "LastKeepaliveAt": "2022-05-05T09:56:34.9893935+08:00",
    "Status": "ONLINE",
    "Channels": [{
    "DeviceID": "34020000001320000020",
    "ParentID": "34020000001320000020",
    "Name": "IPC",
    "Manufacturer": "Dahua",
    "Model": "IPC-HFW2433DM-LED",
    "Owner": "0",
    "CivilCode": "340200",
    "Address": "axy",
    "Parental": 0,
    "SafetyWay": 0,
    "RegisterWay": 1,
    "Secrecy": 0,
    "Status": "ON",
    "RecordPublisher": null,
    "LivePublisher": {
    "URL": "",
    "StreamPath": "34020000001320000020/34020000001320000020",
    "Type": "GB28181 Live",
    "StartTime": "2022-05-05T09:49:35.0313162+08:00",
    "Subscribers": null,
    "VideoTracks": {
    "h264": {
    "CodecID": 7,
    "PacketCount": 11169,
    "BPS": 540346,
    "SPSInfo": {
    "ProfileIdc": 77,
    "LevelIdc": 40,
    "MbWidth": 120,
    "MbHeight": 68,
    "CropLeft": 0,
    "CropRight": 0,
    "CropTop": 0,
    "CropBottom": 4,
    "Width": 1920,
    "Height": 1080
    },
    "GOP": 50,
    "UsingDonlField": false
    }
    },
    "AudioTracks": {},
    "DataTracks": {},
    "AutoCloseAfter": -1,
    "Transcoding": null,
    "ExtraProp": null,
    "AppName": "34020000001320000020",
    "StreamName": "34020000001320000020"
    },
    "LiveSubSP": "",
    "Records": null,
    "RecordStartTime": "",
    "RecordEndTime": ""
    }],
    "Addr": "192.168.0.20:5060",
    "SipIP": "192.168.0.113"
    }, {
    "ID": "34020000001320000013",
    "Name": "IP DOME",
    "Manufacturer": "Hikvision",
    "Model": "DS-2DE2204IW-D3/W/XM",
    "Owner": "",
    "RegisterTime": "2022-05-05T09:49:48.42196+08:00",
    "UpdateTime": "2022-05-05T09:56:54.2722771+08:00",
    "LastKeepaliveAt": "2022-05-05T09:56:54.2722771+08:00",
    "Status": "ONLINE",
    "Channels": [{
    "DeviceID": "34020000001320000013",
    "ParentID": "34020000002000000001",
    "Name": "IPdome",
    "Manufacturer": "Hikvision",
    "Model": "IP Camera",
    "Owner": "Owner",
    "CivilCode": "3402000000",
    "Address": "Address",
    "Parental": 0,
    "SafetyWay": 0,
    "RegisterWay": 1,
    "Secrecy": 0,
    "Status": "ON",
    "RecordPublisher": null,
    "LivePublisher": {
    "URL": "",
    "StreamPath": "34020000001320000013/34020000001320000013",
    "Type": "GB28181 Live",
    "StartTime": "2022-05-05T09:49:53.4551083+08:00",
    "Subscribers": null,
    "VideoTracks": {
    "h264": {
    "CodecID": 7,
    "PacketCount": 10726,
    "BPS": 461026,
    "SPSInfo": {
    "ProfileIdc": 77,
    "LevelIdc": 42,
    "MbWidth": 120,
    "MbHeight": 68,
    "CropLeft": 0,
    "CropRight": 0,
    "CropTop": 0,
    "CropBottom": 4,
    "Width": 1920,
    "Height": 1080
    },
    "GOP": 50,
    "UsingDonlField": false
    }
    },
    "AudioTracks": {
    "pcma": {
    "CodecID": 7,
    "PacketCount": 10709,
    "BPS": 8000,
    "SoundRate": 8000,
    "SoundSize": 16,
    "Channels": 1
    }
    },
    "DataTracks": {},
    "AutoCloseAfter": -1,
    "Transcoding": null,
    "ExtraProp": null,
    "AppName": "34020000001320000013",
    "StreamName": "34020000001320000013"
    },
    "LiveSubSP": "",
    "Records": null,
    "RecordStartTime": "",
    "RecordEndTime": ""
    }],
    "Addr": "192.168.0.13:5060",
    "SipIP": "192.168.0.113"
    }, {
    "ID": "34020000001320000012",
    "Name": "IP CAMERA",
    "Manufacturer": "Hikvision",
    "Model": "DS-2CD3T27DWD-L",
    "Owner": "",
    "RegisterTime": "2022-05-05T09:49:36.9636585+08:00",
    "UpdateTime": "2022-05-05T09:56:38.7406656+08:00",
    "LastKeepaliveAt": "2022-05-05T09:56:38.741325+08:00",
    "Status": "ONLINE",
    "Channels": [{
    "DeviceID": "34020000001320000012",
    "ParentID": "34020000001320000012",
    "Name": "Camera 01",
    "Manufacturer": "Hikvision",
    "Model": "IP Camera",
    "Owner": "Owner",
    "CivilCode": "CivilCode",
    "Address": "Address",
    "Parental": 0,
    "SafetyWay": 0,
    "RegisterWay": 1,
    "Secrecy": 0,
    "Status": "ON",
    "RecordPublisher": null,
    "LivePublisher": {
    "URL": "",
    "StreamPath": "34020000001320000012/34020000001320000012",
    "Type": "GB28181 Live",
    "StartTime": "2022-05-05T09:49:37.8322787+08:00",
    "Subscribers": null,
    "VideoTracks": {
    "h264": {
    "CodecID": 7,
    "PacketCount": 11087,
    "BPS": 377280,
    "SPSInfo": {
    "ProfileIdc": 77,
    "LevelIdc": 42,
    "MbWidth": 120,
    "MbHeight": 68,
    "CropLeft": 0,
    "CropRight": 0,
    "CropTop": 0,
    "CropBottom": 4,
    "Width": 1920,
    "Height": 1080
    },
    "GOP": 50,
    "UsingDonlField": false
    }
    },
    "AudioTracks": {},
    "DataTracks": {},
    "AutoCloseAfter": -1,
    "Transcoding": null,
    "ExtraProp": null,
    "AppName": "34020000001320000012",
    "StreamName": "34020000001320000012"
    },
    "LiveSubSP": "",
    "Records": null,
    "RecordStartTime": "",
    "RecordEndTime": ""
    }],
    "Addr": "192.168.0.12:5060",
    "SipIP": "192.168.0.113"
    }]

    3.2 PTZ控制(参考国标协议组装ptz命令-方向、光圈、焦点、预置点)

    http://192.168.0.113:8081/api/gb28181/control?id=34020000001320000013&channel=34020000001320000013&ptzcmd=A50F0108007D003A (向上速度5)

    3. 录像回放(1650780387 2022-04-24 14:06:27 )

    3.1 回放申请

    http://localhost:8081/api/gb28181/invite?id=34020000001110000107&channel=34020000001320000011&startTime=1650780600&endTime=1650780720

    3.2 在线回放 ws://localhost:8081/jessica/34020000001110000107/34020000001320000011/1650780600-1650780720 (使用MSE-demo.html)

    4. webrtc在线播放视频流

    http://localhost:8081/api/webrtc/play?streamPath=34020000001320000020/34020000001320000020

    {
    "type": "offer",
    "sdp": "v=0\r\no=- 228882373012133062 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 122 127 121 125 107 108 109 124 120 123 119 35 36 37 38 39 40 114 115 116 117 118 41\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:5asH\r\na=ice-pwd:RVEEbZjdKU9FBLv8RtdyAI6b\r\na=ice-options:trickle\r\na=fingerprint:sha-256 F4:7D:A9:A1:CB:9F:14:C5:F5:0F:07:6D:90:A5:27:6B:4D:E4:F4:BC:8D:AB:A0:E3:7F:D7:8F:49:EB:D8:02:4D\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 urn:3gpp:video-orientation\r\na=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=recvonly\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=fmtp:98 profile-id=0\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 VP9/90000\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 transport-cc\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=fmtp:100 profile-id=2\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:102 VP9/90000\r\na=rtcp-fb:102 goog-remb\r\na=rtcp-fb:102 transport-cc\r\na=rtcp-fb:102 ccm fir\r\na=rtcp-fb:102 nack\r\na=rtcp-fb:102 nack pli\r\na=fmtp:102 profile-id=1\r\na=rtpmap:122 rtx/90000\r\na=fmtp:122 apt=102\r\na=rtpmap:127 H264/90000\r\na=rtcp-fb:127 goog-remb\r\na=rtcp-fb:127 transport-cc\r\na=rtcp-fb:127 ccm fir\r\na=rtcp-fb:127 nack\r\na=rtcp-fb:127 nack pli\r\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:121 rtx/90000\r\na=fmtp:121 apt=127\r\na=rtpmap:125 H264/90000\r\na=rtcp-fb:125 goog-remb\r\na=rtcp-fb:125 transport-cc\r\na=rtcp-fb:125 ccm fir\r\na=rtcp-fb:125 nack\r\na=rtcp-fb:125 nack pli\r\na=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\r\na=rtpmap:107 rtx/90000\r\na=fmtp:107 apt=125\r\na=rtpmap:108 H264/90000\r\na=rtcp-fb:108 goog-remb\r\na=rtcp-fb:108 transport-cc\r\na=rtcp-fb:108 ccm fir\r\na=rtcp-fb:108 nack\r\na=rtcp-fb:108 nack pli\r\na=fmtp:108 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:109 rtx/90000\r\na=fmtp:109 apt=108\r\na=rtpmap:124 H264/90000\r\na=rtcp-fb:124 goog-remb\r\na=rtcp-fb:124 transport-cc\r\na=rtcp-fb:124 ccm fir\r\na=rtcp-fb:124 nack\r\na=rtcp-fb:124 nack pli\r\na=fmtp:124 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\r\na=rtpmap:120 rtx/90000\r\na=fmtp:120 apt=124\r\na=rtpmap:123 H264/90000\r\na=rtcp-fb:123 goog-remb\r\na=rtcp-fb:123 transport-cc\r\na=rtcp-fb:123 ccm fir\r\na=rtcp-fb:123 nack\r\na=rtcp-fb:123 nack pli\r\na=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f\r\na=rtpmap:119 rtx/90000\r\na=fmtp:119 apt=123\r\na=rtpmap:35 H264/90000\r\na=rtcp-fb:35 goog-remb\r\na=rtcp-fb:35 transport-cc\r\na=rtcp-fb:35 ccm fir\r\na=rtcp-fb:35 nack\r\na=rtcp-fb:35 nack pli\r\na=fmtp:35 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001f\r\na=rtpmap:36 rtx/90000\r\na=fmtp:36 apt=35\r\na=rtpmap:37 H264/90000\r\na=rtcp-fb:37 goog-remb\r\na=rtcp-fb:37 transport-cc\r\na=rtcp-fb:37 ccm fir\r\na=rtcp-fb:37 nack\r\na=rtcp-fb:37 nack pli\r\na=fmtp:37 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=f4001f\r\na=rtpmap:38 rtx/90000\r\na=fmtp:38 apt=37\r\na=rtpmap:39 H264/90000\r\na=rtcp-fb:39 goog-remb\r\na=rtcp-fb:39 transport-cc\r\na=rtcp-fb:39 ccm fir\r\na=rtcp-fb:39 nack\r\na=rtcp-fb:39 nack pli\r\na=fmtp:39 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=f4001f\r\na=rtpmap:40 rtx/90000\r\na=fmtp:40 apt=39\r\na=rtpmap:114 H264/90000\r\na=rtcp-fb:114 goog-remb\r\na=rtcp-fb:114 transport-cc\r\na=rtcp-fb:114 ccm fir\r\na=rtcp-fb:114 nack\r\na=rtcp-fb:114 nack pli\r\na=fmtp:114 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f\r\na=rtpmap:115 rtx/90000\r\na=fmtp:115 apt=114\r\na=rtpmap:116 red/90000\r\na=rtpmap:117 rtx/90000\r\na=fmtp:117 apt=116\r\na=rtpmap:118 ulpfec/90000\r\na=rtpmap:41 flexfec-03/90000\r\na=rtcp-fb:41 goog-remb\r\na=rtcp-fb:41 transport-cc\r\na=fmtp:41 repair-window=10000000\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 63 103 104 9 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:5asH\r\na=ice-pwd:RVEEbZjdKU9FBLv8RtdyAI6b\r\na=ice-options:trickle\r\na=fingerprint:sha-256 F4:7D:A9:A1:CB:9F:14:C5:F5:0F:07:6D:90:A5:27:6B:4D:E4:F4:BC:8D:AB:A0:E3:7F:D7:8F:49:EB:D8:02:4D\r\na=setup:actpass\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=recvonly\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:63 red/48000/2\r\na=fmtp:63 111/111\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:112 telephone-event/32000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\n"
    }

    备注:webrtc比jessibuca播放器更低延时(200-300ms),推荐使用

    5. 直播功能(手机端或者web端pull视频流,用webrtc播放)

    客户机用Chrome访问服务端,提示TypeError: Cannot read property 'getUserMedia' of undefined ,解决方案

     

    chrome://flags/#unsafely-treat-insecure-origin-as-secure

     

    重启Chrome

    6. webrtc断网重连、截图、录像

    player-via-3x3.html

  • 相关阅读:
    如何手动卸载 SQL Server 2005 实例
    马大哈的读后感
    CVS提交0KB的文件失败
    confluence权限管理
    关于confluence注册
    建议使用j2ee自带的ant
    cvs log的几个选项说明(b,r HEAD,n,d)
    JIRA与Confluence的安装与集成(4)
    使用命令行调用Beyond Compare进行文件对比
    利用SecureCRT实现Linux编译
  • 原文地址:https://www.cnblogs.com/chen1880/p/16223730.html
Copyright © 2020-2023  润新知