├── .gitignore
├── LICENSE
├── RTSPPlayer
├── .gitattributes
├── LICENSE
├── htmlstyle.css
├── index.html
├── jquery-1.6.1.min.js
├── movie.ogg
└── webrtcplayer.js
├── RTSPtoWebServer
├── RTSPtoWeb.exe
├── RunInGitBash.sh
├── config.json
└── web
│ ├── static
│ ├── css
│ │ ├── adminlte.min.css
│ │ ├── adminlte.min.css.map
│ │ ├── fonts
│ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJB9cme_xc.woff2
│ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJB9cme_xc.woff2
│ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDJB9cme.woff2
│ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJB9cme_xc.woff2
│ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJB9cme_xc.woff2
│ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJB9cme_xc.woff2
│ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJB9cme_xc.woff2
│ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lujVj9_mf.woff2
│ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lujVj9_mf.woff2
│ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lujVj9_mf.woff2
│ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lujVj9_mf.woff2
│ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lujVj9_mf.woff2
│ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7lujVj9w.woff2
│ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lujVj9_mf.woff2
│ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwkxdu3cOWxy40.woff2
│ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlBdu3cOWxy40.woff2
│ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu3cOWxw.woff2
│ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmBdu3cOWxy40.woff2
│ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmRdu3cOWxy40.woff2
│ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmhdu3cOWxy40.woff2
│ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmxdu3cOWxy40.woff2
│ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxdu3cOWxy40.woff2
│ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBdu3cOWxy40.woff2
│ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu3cOWxw.woff2
│ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBdu3cOWxy40.woff2
│ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRdu3cOWxy40.woff2
│ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhdu3cOWxy40.woff2
│ │ │ └── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxdu3cOWxy40.woff2
│ │ ├── fullmulti.css
│ │ ├── google-fonts.css
│ │ └── index.css
│ ├── img
│ │ ├── back.jpg
│ │ ├── green.jpg
│ │ ├── loader.svg
│ │ ├── noimage.svg
│ │ ├── pic.svg
│ │ ├── red.jpg
│ │ └── white.jpg
│ ├── js
│ │ ├── RtspToWeb.js
│ │ ├── adminlte.min.js
│ │ ├── adminlte.min.js.map
│ │ └── index.js
│ └── plugins
│ │ ├── bootstrap
│ │ ├── css
│ │ │ ├── bootstrap-grid.css
│ │ │ ├── bootstrap-grid.css.map
│ │ │ ├── bootstrap-grid.min.css
│ │ │ ├── bootstrap-grid.min.css.map
│ │ │ ├── bootstrap-reboot.css
│ │ │ ├── bootstrap-reboot.css.map
│ │ │ ├── bootstrap-reboot.min.css
│ │ │ ├── bootstrap-reboot.min.css.map
│ │ │ ├── bootstrap.css
│ │ │ ├── bootstrap.css.map
│ │ │ ├── bootstrap.min.css
│ │ │ └── bootstrap.min.css.map
│ │ └── js
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.bundle.js.map
│ │ │ ├── bootstrap.bundle.min.js
│ │ │ ├── bootstrap.bundle.min.js.map
│ │ │ ├── bootstrap.js
│ │ │ ├── bootstrap.js.map
│ │ │ ├── bootstrap.min.js
│ │ │ └── bootstrap.min.js.map
│ │ ├── fontawesome-free
│ │ ├── css
│ │ │ ├── all.css
│ │ │ ├── all.min.css
│ │ │ ├── brands.css
│ │ │ ├── brands.min.css
│ │ │ ├── fontawesome.css
│ │ │ ├── fontawesome.min.css
│ │ │ ├── regular.css
│ │ │ ├── regular.min.css
│ │ │ ├── solid.css
│ │ │ ├── solid.min.css
│ │ │ ├── svg-with-js.css
│ │ │ ├── svg-with-js.min.css
│ │ │ ├── v4-shims.css
│ │ │ └── v4-shims.min.css
│ │ └── webfonts
│ │ │ ├── fa-brands-400.eot
│ │ │ ├── fa-brands-400.svg
│ │ │ ├── fa-brands-400.ttf
│ │ │ ├── fa-brands-400.woff
│ │ │ ├── fa-brands-400.woff2
│ │ │ ├── fa-regular-400.eot
│ │ │ ├── fa-regular-400.svg
│ │ │ ├── fa-regular-400.ttf
│ │ │ ├── fa-regular-400.woff
│ │ │ ├── fa-regular-400.woff2
│ │ │ ├── fa-solid-900.eot
│ │ │ ├── fa-solid-900.svg
│ │ │ ├── fa-solid-900.ttf
│ │ │ ├── fa-solid-900.woff
│ │ │ └── fa-solid-900.woff2
│ │ ├── hlsjs
│ │ ├── hls.min.js
│ │ └── hls.min.js.map
│ │ ├── jquery
│ │ ├── core.js
│ │ ├── jquery.js
│ │ ├── jquery.min.js
│ │ ├── jquery.min.map
│ │ ├── jquery.slim.js
│ │ ├── jquery.slim.min.js
│ │ └── jquery.slim.min.map
│ │ └── sweetalert2
│ │ ├── sweetalert2.all.js
│ │ ├── sweetalert2.all.min.js
│ │ ├── sweetalert2.css
│ │ ├── sweetalert2.js
│ │ ├── sweetalert2.min.css
│ │ └── sweetalert2.min.js
│ └── templates
│ ├── add_stream.tmpl
│ ├── documentation.tmpl
│ ├── edit_stream.tmpl
│ ├── foot.tmpl
│ ├── fullscreenmulti.tmpl
│ ├── head.tmpl
│ ├── index.tmpl
│ ├── multiview.tmpl
│ ├── play_all.tmpl
│ ├── play_hls.tmpl
│ ├── play_mse.tmpl
│ ├── play_webrtc.tmpl
│ ├── player.tmpl
│ └── stream_list.tmpl
├── Unity
├── .gitignore
├── .vsconfig
├── Assets
│ ├── Demo.unity
│ ├── Demo.unity.meta
│ ├── Fonts.meta
│ ├── Fonts
│ │ ├── msyh.ttc
│ │ └── msyh.ttc.meta
│ ├── Plane.mat
│ ├── Plane.mat.meta
│ ├── Plugins.meta
│ ├── Plugins
│ │ ├── CallJS.jslib
│ │ └── CallJS.jslib.meta
│ ├── SecurityCamera.cs
│ ├── SecurityCamera.cs.meta
│ ├── WebGLTemplates.meta
│ ├── WebGLTemplates
│ │ ├── BetterTemplate.meta
│ │ └── BetterTemplate
│ │ │ ├── index.html
│ │ │ ├── index.html.meta
│ │ │ ├── logo.png
│ │ │ ├── logo.png.meta
│ │ │ ├── res.meta
│ │ │ └── res
│ │ │ ├── jquery-1.6.1.min.js
│ │ │ ├── jquery-1.6.1.min.js.meta
│ │ │ ├── webrtcplayer.js
│ │ │ └── webrtcplayer.js.meta
│ ├── securitycamera.fbx
│ └── securitycamera.fbx.meta
├── Build
│ ├── Build
│ │ ├── Build.data.unityweb
│ │ ├── Build.json
│ │ ├── Build.wasm.code.unityweb
│ │ ├── Build.wasm.framework.unityweb
│ │ └── UnityLoader.js
│ ├── index.html
│ ├── logo.png
│ └── res
│ │ ├── jquery-1.6.1.min.js
│ │ └── webrtcplayer.js
├── Logs
│ └── Packages-Update.log
├── Packages
│ ├── manifest.json
│ └── packages-lock.json
└── ProjectSettings
│ ├── AudioManager.asset
│ ├── ClusterInputManager.asset
│ ├── DynamicsManager.asset
│ ├── EditorBuildSettings.asset
│ ├── EditorSettings.asset
│ ├── GraphicsSettings.asset
│ ├── InputManager.asset
│ ├── NavMeshAreas.asset
│ ├── PackageManagerSettings.asset
│ ├── Physics2DSettings.asset
│ ├── PresetManager.asset
│ ├── ProjectSettings.asset
│ ├── ProjectVersion.txt
│ ├── QualitySettings.asset
│ ├── TagManager.asset
│ ├── TimeManager.asset
│ ├── UnityConnectSettings.asset
│ ├── VFXManager.asset
│ └── XRSettings.asset
├── WebServer
├── MyWebServer.exe
├── asp.dll
├── asp.net.dll
├── gzip.dll
├── httpd.ini
├── php.ini
├── readme.txt
└── server.ini
├── doc
├── config.png
└── rtspplayer.gif
└── readme.md
/.gitignore:
--------------------------------------------------------------------------------
1 | WebServer/log/
2 | WebServer/gziptmp/
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 雨落随风
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/RTSPPlayer/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/RTSPPlayer/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Bian-Sh
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/RTSPPlayer/htmlstyle.css:
--------------------------------------------------------------------------------
1 | .mask {
2 | position: fixed;
3 | top: 0;
4 | left: 0;
5 | width: 100%;
6 | height: 100%;
7 | background: #000;
8 | opacity: 0;
9 | display: none;
10 | z-index: 99;
11 | }
12 |
13 | .closebutton {
14 | position: fixed;
15 | top: 0;
16 | left: 0;
17 | width: 100%;
18 | height: 100%;
19 | background: #000;
20 | opacity: 0;
21 | display: none;
22 | z-index: 100;
23 | }
24 |
25 | .panel {
26 | position: absolute;
27 | display: none;
28 | text-align: center;
29 | z-index: 101;
30 | }
--------------------------------------------------------------------------------
/RTSPPlayer/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 测试弹窗播放视频
6 |
7 |
8 |
9 |
88 |
89 |
90 |
91 | 点击以弹窗形式居中播放视频
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
--------------------------------------------------------------------------------
/RTSPPlayer/movie.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPPlayer/movie.ogg
--------------------------------------------------------------------------------
/RTSPPlayer/webrtcplayer.js:
--------------------------------------------------------------------------------
1 | class WebRtcPlayer {
2 | static server = '127.0.0.1:8083';
3 | webrtc = null;
4 | video = null;
5 | server = null;
6 | rsdpLink = null;
7 | stream = new MediaStream();
8 | uuid = null;
9 | channel = 0;
10 | webrtcSendChannelInterval = null;
11 | options = {
12 | onStatusChange: null,
13 | onVideoPlayed: null
14 | };
15 |
16 | constructor(id, uuid, options = {}) {
17 | this.server = WebRtcPlayer.server;
18 | this.video = document.getElementById(id);
19 | this.uuid = uuid;
20 | Object.assign(this.options, options);
21 | this.createLinks();
22 | }
23 |
24 | createLinks() {
25 | this.rsdpLink = "//" + this.server + "/stream/" + this.uuid + "/channel/" + this.channel + "/webrtc?uuid=" + this.uuid + '&channel=' + this.channel;
26 | }
27 |
28 | play() {
29 | this.webrtc = new RTCPeerConnection({
30 | iceServers: [{
31 | urls: ["stun:stun.l.google.com:19302"]
32 | }],
33 | sdpSemantics: "unified-plan"
34 | });
35 | this.webrtc.onnegotiationneeded = this.handleNegotiationNeeded.bind(this);
36 | this.webrtc.ontrack = this.onTrack.bind(this);
37 |
38 | this.webrtc.addTransceiver('video', {
39 | 'direction': 'sendrecv'
40 | });
41 |
42 | this.webrtc.onconnectionstatechange = () => {
43 | if (typeof this.options.onStatusChange == 'function') {
44 | this.options.onStatusChange(this.webrtc.connectionState);
45 | }
46 | }
47 |
48 | var webrtcSendChannel = this.webrtc.createDataChannel('foo');
49 | webrtcSendChannel.onclose = () => {
50 | console.log('sendChannel has closed');
51 | if (this.webrtcSendChannelInterval != null) {
52 | clearInterval(this.webrtcSendChannelInterval);
53 | this.webrtcSendChannelInterval = null
54 | }
55 | }
56 | webrtcSendChannel.onopen = () => {
57 | console.log('sendChannel has opened');
58 | webrtcSendChannel.send('ping');
59 | this.webrtcSendChannelInterval = setInterval(() => {
60 | webrtcSendChannel.send('ping');
61 | }, 1000)
62 | }
63 | webrtcSendChannel.onmessage = e => console.log(e.data);
64 | }
65 |
66 | async handleNegotiationNeeded() {
67 | let offer = await this.webrtc.createOffer();
68 | await this.webrtc.setLocalDescription(offer);
69 |
70 | // 请注意:如果 uuid 错误将出现 500 (Internal Server Error) 的报错
71 | // caution: if you pass a wrong uuid , there will be a '500' error occured in the console.
72 | $.post(this.rsdpLink, {
73 | data: btoa(this.webrtc.localDescription.sdp)
74 | }, function (data) {
75 | try {
76 | this.webrtc.setRemoteDescription(new RTCSessionDescription({
77 | type: 'answer',
78 | sdp: atob(data)
79 | }))
80 | } catch (e) {
81 | console.warn(e);
82 | }
83 | }.bind(this));
84 | }
85 |
86 | onTrack(event) {
87 | this.stream.addTrack(event.track);
88 | this.video.srcObject = this.stream;
89 | this.video.play();
90 | if (typeof this.options.onVideoPlayed == 'function') {
91 | this.options.onVideoPlayed();
92 | console.log("should recenter div");
93 | }
94 |
95 | }
96 |
97 | load(uuid) {
98 | this.destroy();
99 | this.uuid = uuid;
100 | this.createLinks();
101 | this.play();
102 | }
103 |
104 | destroy() {
105 | if (this.webrtc != null) {
106 | this.webrtc.close();
107 | this.webrtc = null;
108 | }
109 | this.webrtc = null;
110 | this.video.srcObject = null;
111 | this.stream = new MediaStream();
112 | }
113 |
114 | static setServer(serv) {
115 | this.server = serv;
116 | }
117 | }
--------------------------------------------------------------------------------
/RTSPtoWebServer/RTSPtoWeb.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/RTSPtoWeb.exe
--------------------------------------------------------------------------------
/RTSPtoWebServer/RunInGitBash.sh:
--------------------------------------------------------------------------------
1 | exec RTSPtoWeb.exe
2 |
--------------------------------------------------------------------------------
/RTSPtoWebServer/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "channel_defaults": {},
3 | "server": {
4 | "debug": true,
5 | "http_debug": false,
6 | "http_demo": true,
7 | "http_dir": "web",
8 | "http_login": "demo",
9 | "http_password": "demo",
10 | "http_port": ":8083",
11 | "https": false,
12 | "https_auto_tls": false,
13 | "https_auto_tls_name": "",
14 | "https_cert": "server.crt",
15 | "https_key": "server.key",
16 | "https_port": ":443",
17 | "log_level": "debug",
18 | "rtsp_port": ":5541",
19 | "token": {
20 | "backend": "http://127.0.0.1/test.php",
21 | "enable": false
22 | }
23 | },
24 | "streams": {
25 | "Camera01": {
26 | "channels": {
27 | "0": {
28 | "debug": true,
29 | "on_demand": true,
30 | "url": "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov"
31 | }
32 | },
33 | "name": "Camera01"
34 | },
35 | "Camera02": {
36 | "channels": {
37 | "0": {
38 | "debug": true,
39 | "on_demand": true,
40 | "url": "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov"
41 | }
42 | },
43 | "name": "Camera02"
44 | },
45 | "Camera03": {
46 | "channels": {
47 | "0": {
48 | "debug": true,
49 | "on_demand": true,
50 | "url": "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov"
51 | }
52 | },
53 | "name": "Camera03"
54 | }
55 | }
56 | }
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJB9cme_xc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJB9cme_xc.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJB9cme_xc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJB9cme_xc.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDJB9cme.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDJB9cme.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJB9cme_xc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJB9cme_xc.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJB9cme_xc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJB9cme_xc.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJB9cme_xc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJB9cme_xc.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJB9cme_xc.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJB9cme_xc.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lujVj9_mf.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lujVj9_mf.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lujVj9_mf.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lujVj9_mf.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lujVj9_mf.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lujVj9_mf.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lujVj9_mf.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lujVj9_mf.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lujVj9_mf.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lujVj9_mf.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7lujVj9w.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7lujVj9w.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lujVj9_mf.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lujVj9_mf.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwkxdu3cOWxy40.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwkxdu3cOWxy40.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlBdu3cOWxy40.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlBdu3cOWxy40.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu3cOWxw.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu3cOWxw.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmBdu3cOWxy40.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmBdu3cOWxy40.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmRdu3cOWxy40.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmRdu3cOWxy40.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmhdu3cOWxy40.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmhdu3cOWxy40.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmxdu3cOWxy40.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmxdu3cOWxy40.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxdu3cOWxy40.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxdu3cOWxy40.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBdu3cOWxy40.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBdu3cOWxy40.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu3cOWxw.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu3cOWxw.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBdu3cOWxy40.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBdu3cOWxy40.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRdu3cOWxy40.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRdu3cOWxy40.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhdu3cOWxy40.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhdu3cOWxy40.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxdu3cOWxy40.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/css/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxdu3cOWxy40.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/fullmulti.css:
--------------------------------------------------------------------------------
1 | .grid-wrapper{
2 | height: calc(100vh - 30px);
3 | margin: 0px;
4 | background: transparent;
5 | display: flex;
6 | flex-wrap: wrap;
7 | }
8 | .layout-top-nav .wrapper .main-header {
9 | margin-left: 0;
10 | height: 30px;
11 | }
12 | video.background{
13 | pointer-events: none;
14 | position: absolute;
15 | top:0;
16 | left: 0;
17 | width: 100%;
18 | height: 100%;
19 | object-fit: cover;
20 | }
21 | .control-sidebar.custom{
22 | background: black;
23 | height: 100%;
24 | margin-top: -57px;
25 | padding: 30px 8px 8px;
26 | background: linear-gradient(45deg, black, transparent);
27 | overflow: hidden;
28 | }
29 | .control-sidebar.custom .row{
30 | height:100%;
31 | overflow: auto;
32 | }
33 | .control-sidebar.custom>h5{
34 | color: white;
35 | text-align: center;
36 | }
37 |
38 | .grid-wrapper .player video.video-class {
39 | background: #000;
40 | object-fit: fill;
41 | }
42 | .grid-wrapper .player video.video-class.empty {
43 | background: transparent;
44 | }
45 |
46 | .img-background{
47 | /* background: url(/../static/img/back.jpg); */
48 | background-color: #343a40;
49 | background-position: center;
50 | background-repeat: no-repeat;
51 | background-size: cover;
52 | backdrop-filter: sepia(0.5) grayscale(0.4);
53 | }
54 | .img-background .content-wrapper{
55 | background: transparent;
56 | }
57 | .img-background .main-header{
58 | background:
59 | }
60 | .grid-wrapper .player {
61 |
62 | padding: 0px;
63 | border: 2px solid #000;
64 | }
65 |
66 | .grid-wrapper .player .remove-btn{
67 | color:white;
68 | display: none;
69 | position: absolute;
70 | right: 0px;
71 | top: 0px;
72 | cursor: pointer;
73 | padding: 5px 10px;
74 | border-radius: 50px;
75 | filter: drop-shadow(1px 1px 1px black);
76 | }
77 | .grid-wrapper .player.empty .remove-btn{
78 | display: none;
79 | }
80 | .grid-wrapper .player:not(.empty):hover .remove-btn{
81 | display: block;
82 | }
83 |
84 | .grid-wrapper .player .add-stream-btn{
85 | position: absolute;
86 | left: 0;
87 | top: calc(50% - 2vw);
88 | text-align: center;
89 | width: 100%;
90 | font-variant-caps: all-petite-caps;
91 | font-size: 1.5vw;
92 | line-height: 1;
93 | color: white;
94 | cursor: pointer;
95 | display: none;
96 | filter: drop-shadow(2px 4px 6px black);
97 | }
98 | .grid-wrapper .player.empty .add-stream-btn{
99 | display: block;
100 |
101 | }
102 |
103 | .carousel-caption {
104 | pointer-events: none;
105 | filter: drop-shadow(1px 1px 1px black);
106 | }
107 | .stream-img{
108 | height: 150px;
109 | }
110 | .player .loader, .main-player .loader{
111 | position: absolute;
112 | width: 100px;
113 | height: 70px;
114 | top: calc(50% - 35px);
115 | left: calc(50% - 50px);
116 | }
117 | .control-sidebar-close-btn{
118 | position: absolute;
119 | top: 37px;
120 | right: 12px;
121 | color: #fff;
122 | }
123 | .control-sidebar-close-btn:hover{
124 | color: #999;
125 | }
126 | .dropdown-menu.custom-dropdown.show{
127 | color: #ffF;
128 | border: 1px solid #343a40;
129 | background: linear-gradient(45deg, #000000d1 30%,#343a40);
130 | padding: 0;
131 | text-align: center;
132 | }
133 |
134 | .dropdown-menu.custom-dropdown .custom-dropdown-item{
135 | float: left;
136 | width: 33%;
137 | padding: 10px;
138 | font-size: 12px;
139 | cursor: pointer;
140 | }
141 | .dropdown-menu.custom-dropdown .custom-dropdown-item.active,.dropdown-menu.custom-dropdown .custom-dropdown-item:hover{
142 | border-radius: 5px;
143 | box-shadow: inset 0px 0px 15px -5px;
144 | }
145 | .dropdown-menu.custom-dropdown .dropdown-item{
146 | color: #fff;
147 |
148 | }
149 | .dropdown-menu.custom-dropdown .dropdown-item:hover{
150 | box-shadow: inset 0px 0px 15px -5px;
151 | background: transparent;
152 | }
153 |
154 | .custom-dropdown-item.with-img{
155 | width: 50%!important;
156 | height: auto;
157 | padding: 2px!important;
158 |
159 | }
160 | .custom-dropdown-item.with-img img{
161 | width: 100%;
162 | height: auto;
163 | }
164 |
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/google-fonts.css:
--------------------------------------------------------------------------------
1 | /* cyrillic-ext */
2 | @font-face {
3 | font-family: 'Source Sans Pro';
4 | font-style: italic;
5 | font-weight: 400;
6 | src: url(fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJB9cme_xc.woff2) format('woff2');
7 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
8 | }
9 | /* cyrillic */
10 | @font-face {
11 | font-family: 'Source Sans Pro';
12 | font-style: italic;
13 | font-weight: 400;
14 | src: url(fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJB9cme_xc.woff2) format('woff2');
15 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
16 | }
17 | /* greek-ext */
18 | @font-face {
19 | font-family: 'Source Sans Pro';
20 | font-style: italic;
21 | font-weight: 400;
22 | src: url(fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJB9cme_xc.woff2) format('woff2');
23 | unicode-range: U+1F00-1FFF;
24 | }
25 | /* greek */
26 | @font-face {
27 | font-family: 'Source Sans Pro';
28 | font-style: italic;
29 | font-weight: 400;
30 | src: url(fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJB9cme_xc.woff2) format('woff2');
31 | unicode-range: U+0370-03FF;
32 | }
33 | /* vietnamese */
34 | @font-face {
35 | font-family: 'Source Sans Pro';
36 | font-style: italic;
37 | font-weight: 400;
38 | src: url(fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJB9cme_xc.woff2) format('woff2');
39 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
40 | }
41 | /* latin-ext */
42 | @font-face {
43 | font-family: 'Source Sans Pro';
44 | font-style: italic;
45 | font-weight: 400;
46 | src: url(fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJB9cme_xc.woff2) format('woff2');
47 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
48 | }
49 | /* latin */
50 | @font-face {
51 | font-family: 'Source Sans Pro';
52 | font-style: italic;
53 | font-weight: 400;
54 | src: url(fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDJB9cme.woff2) format('woff2');
55 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
56 | }
57 | /* cyrillic-ext */
58 | @font-face {
59 | font-family: 'Source Sans Pro';
60 | font-style: normal;
61 | font-weight: 300;
62 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhdu3cOWxy40.woff2) format('woff2');
63 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
64 | }
65 | /* cyrillic */
66 | @font-face {
67 | font-family: 'Source Sans Pro';
68 | font-style: normal;
69 | font-weight: 300;
70 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxdu3cOWxy40.woff2) format('woff2');
71 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
72 | }
73 | /* greek-ext */
74 | @font-face {
75 | font-family: 'Source Sans Pro';
76 | font-style: normal;
77 | font-weight: 300;
78 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxdu3cOWxy40.woff2) format('woff2');
79 | unicode-range: U+1F00-1FFF;
80 | }
81 | /* greek */
82 | @font-face {
83 | font-family: 'Source Sans Pro';
84 | font-style: normal;
85 | font-weight: 300;
86 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBdu3cOWxy40.woff2) format('woff2');
87 | unicode-range: U+0370-03FF;
88 | }
89 | /* vietnamese */
90 | @font-face {
91 | font-family: 'Source Sans Pro';
92 | font-style: normal;
93 | font-weight: 300;
94 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBdu3cOWxy40.woff2) format('woff2');
95 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
96 | }
97 | /* latin-ext */
98 | @font-face {
99 | font-family: 'Source Sans Pro';
100 | font-style: normal;
101 | font-weight: 300;
102 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRdu3cOWxy40.woff2) format('woff2');
103 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
104 | }
105 | /* latin */
106 | @font-face {
107 | font-family: 'Source Sans Pro';
108 | font-style: normal;
109 | font-weight: 300;
110 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu3cOWxw.woff2) format('woff2');
111 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
112 | }
113 | /* cyrillic-ext */
114 | @font-face {
115 | font-family: 'Source Sans Pro';
116 | font-style: normal;
117 | font-weight: 400;
118 | src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lujVj9_mf.woff2) format('woff2');
119 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
120 | }
121 | /* cyrillic */
122 | @font-face {
123 | font-family: 'Source Sans Pro';
124 | font-style: normal;
125 | font-weight: 400;
126 | src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lujVj9_mf.woff2) format('woff2');
127 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
128 | }
129 | /* greek-ext */
130 | @font-face {
131 | font-family: 'Source Sans Pro';
132 | font-style: normal;
133 | font-weight: 400;
134 | src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lujVj9_mf.woff2) format('woff2');
135 | unicode-range: U+1F00-1FFF;
136 | }
137 | /* greek */
138 | @font-face {
139 | font-family: 'Source Sans Pro';
140 | font-style: normal;
141 | font-weight: 400;
142 | src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lujVj9_mf.woff2) format('woff2');
143 | unicode-range: U+0370-03FF;
144 | }
145 | /* vietnamese */
146 | @font-face {
147 | font-family: 'Source Sans Pro';
148 | font-style: normal;
149 | font-weight: 400;
150 | src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lujVj9_mf.woff2) format('woff2');
151 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
152 | }
153 | /* latin-ext */
154 | @font-face {
155 | font-family: 'Source Sans Pro';
156 | font-style: normal;
157 | font-weight: 400;
158 | src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lujVj9_mf.woff2) format('woff2');
159 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
160 | }
161 | /* latin */
162 | @font-face {
163 | font-family: 'Source Sans Pro';
164 | font-style: normal;
165 | font-weight: 400;
166 | src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7lujVj9w.woff2) format('woff2');
167 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
168 | }
169 | /* cyrillic-ext */
170 | @font-face {
171 | font-family: 'Source Sans Pro';
172 | font-style: normal;
173 | font-weight: 700;
174 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmhdu3cOWxy40.woff2) format('woff2');
175 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
176 | }
177 | /* cyrillic */
178 | @font-face {
179 | font-family: 'Source Sans Pro';
180 | font-style: normal;
181 | font-weight: 700;
182 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwkxdu3cOWxy40.woff2) format('woff2');
183 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
184 | }
185 | /* greek-ext */
186 | @font-face {
187 | font-family: 'Source Sans Pro';
188 | font-style: normal;
189 | font-weight: 700;
190 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmxdu3cOWxy40.woff2) format('woff2');
191 | unicode-range: U+1F00-1FFF;
192 | }
193 | /* greek */
194 | @font-face {
195 | font-family: 'Source Sans Pro';
196 | font-style: normal;
197 | font-weight: 700;
198 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlBdu3cOWxy40.woff2) format('woff2');
199 | unicode-range: U+0370-03FF;
200 | }
201 | /* vietnamese */
202 | @font-face {
203 | font-family: 'Source Sans Pro';
204 | font-style: normal;
205 | font-weight: 700;
206 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmBdu3cOWxy40.woff2) format('woff2');
207 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
208 | }
209 | /* latin-ext */
210 | @font-face {
211 | font-family: 'Source Sans Pro';
212 | font-style: normal;
213 | font-weight: 700;
214 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmRdu3cOWxy40.woff2) format('woff2');
215 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
216 | }
217 | /* latin */
218 | @font-face {
219 | font-family: 'Source Sans Pro';
220 | font-style: normal;
221 | font-weight: 700;
222 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu3cOWxw.woff2) format('woff2');
223 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
224 | }
225 |
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/css/index.css:
--------------------------------------------------------------------------------
1 | #videoPlayer{
2 | width: 100%;
3 | background: black;
4 | position: -webkit-sticky; /* Safari */
5 | position: sticky;
6 | top: 15px;
7 | margin-bottom: -6px;
8 |
9 | }
10 | .videoPlayer{
11 | width: 100%;
12 | background: black;
13 | position: -webkit-sticky; /* Safari */
14 | position: sticky;
15 | top: 15px;
16 | margin-bottom: -6px;
17 |
18 | }
19 | .btn-group.stream{
20 | display: flex;
21 | justify-content: space-between;
22 | flex-wrap: wrap;
23 | }
24 | .btn-group.stream .btn{
25 | flex: 1 0 30%;
26 | }
27 | .btn-group.stream .input-group-prepend{
28 | flex: 1 0 30%;
29 | }
30 | .img-wrapper{
31 | width: 100%;
32 | height: 180px;
33 | background: black;
34 | cursor: pointer;
35 | }
36 | .img-wrapper img{
37 | width: 100%;
38 | height: 100%;
39 | }
40 | .text-wrapper{
41 | padding: 10px;
42 | }
43 |
44 | @media (min-width: 576px){
45 | .card-columns {
46 | -webkit-column-count: 4;
47 | -moz-column-count: 4;
48 | column-count: 4;
49 | -webkit-column-gap: 1.25rem;
50 | -moz-column-gap: 1.25rem;
51 | column-gap: 1.25rem;
52 | orphans: 1;
53 | widows: 1;
54 | }
55 | }
56 | @media (min-width: 576px){
57 | .card-column {
58 | column-count: 2;
59 | }
60 | }
61 | @media (min-width: 768px){
62 | .card-column {
63 | column-count: 4;
64 | }
65 | }
66 | @media (min-width: 1920px){
67 | .card-column {
68 | column-count: 6;
69 | }
70 | }
71 |
72 |
73 | .grid-wrapper{
74 | height: 80vh;
75 | margin: -1px;
76 | background: #000;
77 | display: flex;
78 | flex-wrap: wrap;
79 | }
80 | :-webkit-full-screen .grid-wrapper{/*WebKit, Opera 15+*/
81 | height: 100vh;
82 | width: 100vw;
83 | }
84 | :-moz-full-screen .grid-wrapper{/*FireFox*/
85 | height: 100vh;
86 | width: 100vw;
87 | }
88 | :full-screen .grid-wrapper{/*Opera 12.15-, Blink, w3c standard*/
89 | height: 100vh;
90 | width: 100vw;
91 | }
92 | .grid-wrapper .player{
93 | height: 50%;
94 | width: 50%;
95 | position: relative;
96 | padding: 2px;
97 | }
98 | .grid-wrapper .player.grid-6{
99 | width: 33.33%;
100 | }
101 | .grid-wrapper .player.grid-9{
102 | width: 33.33%;
103 | height: 33.33%;
104 | }
105 | .grid-wrapper .player.grid-12{
106 | width: 25%;
107 | height: 33.33%;
108 | }
109 | .grid-wrapper .player.grid-16{
110 | width: 25%;
111 | height: 25%;
112 | }
113 | .grid-wrapper .player.grid-25{
114 | width: 20%;
115 | height: 20%;
116 | }
117 | .grid-wrapper .player.grid-36{
118 | width: 16.66%;
119 | height: 16.66%;
120 | }
121 | .grid-wrapper .player.grid-49{
122 | width: 14.285%;
123 | height: 14.29%;
124 | }
125 | .grid-wrapper .player video{
126 | height: 100%;
127 | width: 100%;
128 | background: #343a40;
129 | margin-bottom: -6px;
130 | }
131 | .grid-wrapper .player .play-info{
132 | position: absolute;
133 | padding: 10px;
134 | text-align: center;
135 | color: #fff;
136 | top:0;
137 | left: 0;
138 | width: 100%;
139 | }
140 | .grid-wrapper .player .control{
141 | width: 100%;
142 | position: absolute;
143 | bottom: 0;
144 | padding: 10px;
145 | text-align: center;
146 | }
147 | .grid-wrapper .player .control .btn{
148 | margin: 0 0 10px 10px;
149 | }
150 |
151 | .card .stream-name{
152 | position: absolute;
153 | width: 100%;
154 | height: 100%;
155 | display: flex;
156 | align-items: center;
157 | }
158 | .card .stream-name .card-title{
159 | color: #FFF;
160 | width: 100%;
161 | filter: drop-shadow(1px 0px 1px black);
162 | font-size: 30px;
163 | }
164 | .one-line-header{
165 | white-space: nowrap;
166 | overflow: hidden;
167 | text-overflow: ellipsis;
168 | max-width: 95%;
169 | }
170 | .main-player-wrapper{
171 | position: fixed;
172 | top: 0;
173 | left: 0;
174 | width: 100vw;
175 | height: 100vh;
176 | background: rgb(0 0 0 / 0.8);
177 | z-index: 1100;
178 | padding: 15px;
179 | }
180 | .main-player-wrapper a{
181 | color: #fff;
182 | position: absolute;
183 | right: 5px;
184 | top: 5px;
185 | font-size: 30px;
186 | padding: 0 12px;
187 | border-radius: 50px;
188 | box-shadow: 0px 0px 10px -1px #fff;
189 | cursor: pointer;
190 | }
191 | .main-player-wrapper a:hover{
192 | color: #dc3545;
193 | box-shadow: 0px 0px 10px -1px #dc3545;
194 | }
195 | .main-player-wrapper .main-player{
196 | width: 100%;
197 | height: 100%;
198 | position: relative;
199 | }
200 | .main-player-wrapper .main-player video{
201 | width: 100%;
202 | height: 100%;
203 | background: #000;
204 | }
205 | .main-player-wrapper .main-player .play-info{
206 | position: absolute;
207 | padding: 10px;
208 | text-align: center;
209 | color: #fff;
210 | top: 0;
211 | width: 100%;
212 | }
213 | .carousel-caption{
214 | pointer-events: none;
215 | }
216 | .fix-height{
217 | object-fit: fill;
218 | aspect-ratio: 16/9;
219 | }
220 |
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/img/back.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/img/back.jpg
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/img/green.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/img/green.jpg
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/img/loader.svg:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/img/noimage.svg:
--------------------------------------------------------------------------------
1 |
2 |
81 |
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/img/pic.svg:
--------------------------------------------------------------------------------
1 |
2 |
90 |
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/img/red.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/img/red.jpg
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/img/white.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/img/white.jpg
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/js/RtspToWeb.js:
--------------------------------------------------------------------------------
1 | var rtspPlayer={
2 | active:false,
3 | type:'live',
4 | hls:null,
5 | ws:null,
6 | mseSourceBuffer:null,
7 | mse:null,
8 | mseQueue:[],
9 | mseStreamingStarted:false,
10 | webrtc:null,
11 | webrtcSendChannel:null,
12 | webrtcSendChannelInterval:null,
13 | uuid:null,
14 |
15 | clearPlayer:function(){
16 | if(this.active){
17 |
18 | if(this.hls!=null){
19 | this.hls.destroy();
20 | this.hls=null;
21 | }
22 | if(this.ws!=null){
23 | //close WebSocket connection if opened
24 | this.ws.close(1000);
25 | this.ws=null;
26 | }
27 | if(this.webrtc!=null){
28 | clearInterval(this.webrtcSendChannelInterval);
29 |
30 | this.webrtc=null;
31 | }
32 | $('#videoPlayer')[0].src = '';
33 | $('#videoPlayer')[0].load();
34 |
35 |
36 | this.active=false;
37 | }
38 | },
39 | livePlayer:function(type,uuid){
40 | this.clearPlayer();
41 | this.uuid=uuid;
42 | this.active=true;
43 |
44 | $('.streams-vs-player').addClass('active-player');
45 | if(type==0){
46 | type=$('input[name=defaultPlayer]:checked').val()
47 | }
48 | switch (type) {
49 | case 'hls':
50 | this.playHls();
51 | break;
52 | case 'mse':
53 | this.playMse();
54 | break;
55 | case 'webrtc':
56 | this.playWebrtc();
57 | break;
58 | default:
59 | Swal.fire(
60 | 'Sorry',
61 | 'This option is still under development',
62 | 'question'
63 | )
64 | return;
65 | }
66 |
67 | },
68 | playHls:function(){
69 | if(this.hls==null && Hls.isSupported()){
70 | this.hls = new Hls();
71 | }
72 | if ($("#videoPlayer")[0].canPlayType('application/vnd.apple.mpegurl')) {
73 | $("#videoPlayer")[0].src = this.streamPlayUrl('hls');
74 | $("#videoPlayer")[0].load();
75 | } else {
76 | if (this.hls != null) {
77 | this.hls.loadSource(this.streamPlayUrl('hls'));
78 | this.hls.attachMedia($("#videoPlayer")[0]);
79 | } else {
80 | Swal.fire({
81 | icon: 'error',
82 | title: 'Oops...',
83 | text: 'Your browser don`t support hls '
84 | })
85 | }
86 | }
87 | },
88 | playWebrtc:function(){
89 | var _this=this;
90 | this.webrtc=new RTCPeerConnection({
91 | iceServers: [{
92 | urls: ["stun:stun.l.google.com:19302"]
93 | }]
94 | });
95 | this.webrtc.onnegotiationneeded = this.handleNegotiationNeeded;
96 | this.webrtc.ontrack = function(event) {
97 | console.log(event.streams.length + ' track is delivered');
98 | $("#videoPlayer")[0].srcObject = event.streams[0];
99 | $("#videoPlayer")[0].play();
100 | }
101 | this.webrtc.addTransceiver('video', {
102 | 'direction': 'sendrecv'
103 | });
104 | this.webrtcSendChannel = this.webrtc.createDataChannel('foo');
105 | this.webrtcSendChannel.onclose = () => console.log('sendChannel has closed');
106 | this.webrtcSendChannel.onopen = () => {
107 | console.log('sendChannel has opened');
108 | this.webrtcSendChannel.send('ping');
109 | this.webrtcSendChannelInterval = setInterval(() => {
110 | this.webrtcSendChannel.send('ping');
111 | }, 1000)
112 | }
113 |
114 | this.webrtcSendChannel.onmessage = e => console.log(e.data);
115 | },
116 | handleNegotiationNeeded: async function(){
117 | var _this=rtspPlayer;
118 |
119 | offer = await _this.webrtc.createOffer();
120 | await _this.webrtc.setLocalDescription(offer);
121 | $.post(_this.streamPlayUrl('webrtc'), {
122 | data: btoa(_this.webrtc.localDescription.sdp)
123 | }, function(data) {
124 | //console.log(data)
125 | try {
126 |
127 | _this.webrtc.setRemoteDescription(new RTCSessionDescription({
128 | type: 'answer',
129 | sdp: atob(data)
130 | }))
131 |
132 |
133 |
134 | } catch (e) {
135 | console.warn(e);
136 | }
137 |
138 | });
139 | },
140 | playMse:function(){
141 | //console.log(this.streamPlayUrl('mse'));
142 | var _this=this;
143 | this.mse = new MediaSource();
144 | $("#videoPlayer")[0].src=window.URL.createObjectURL(this.mse);
145 | this.mse.addEventListener('sourceopen', function(){
146 | _this.ws=new WebSocket(_this.streamPlayUrl('mse'));
147 | _this.ws.binaryType = "arraybuffer";
148 | _this.ws.onopen = function(event) {
149 | console.log('Connect to ws');
150 | }
151 |
152 | _this.ws.onmessage = function(event) {
153 | var data = new Uint8Array(event.data);
154 | if (data[0] == 9) {
155 | decoded_arr=data.slice(1);
156 | if (window.TextDecoder) {
157 | mimeCodec = new TextDecoder("utf-8").decode(decoded_arr);
158 | } else {
159 | mimeCodec = Utf8ArrayToStr(decoded_arr);
160 | }
161 | console.log(mimeCodec);
162 | _this.mseSourceBuffer = _this.mse.addSourceBuffer('video/mp4; codecs="' + mimeCodec + '"');
163 | _this.mseSourceBuffer.mode = "segments"
164 | _this.mseSourceBuffer.addEventListener("updateend", _this.pushPacket);
165 |
166 | } else {
167 | _this.readPacket(event.data);
168 | }
169 | };
170 | }, false);
171 |
172 | },
173 | readPacket:function(packet){
174 | if (!this.mseStreamingStarted) {
175 | this.mseSourceBuffer.appendBuffer(packet);
176 | this.mseStreamingStarted = true;
177 | return;
178 | }
179 | this.mseQueue.push(packet);
180 |
181 | if (!this.mseSourceBuffer.updating) {
182 | this.pushPacket();
183 | }
184 | },
185 | pushPacket:function(){
186 | var _this=rtspPlayer;
187 | if (!_this.mseSourceBuffer.updating) {
188 | if (_this.mseQueue.length > 0) {
189 | packet = _this.mseQueue.shift();
190 | var view = new Uint8Array(packet);
191 | _this.mseSourceBuffer.appendBuffer(packet);
192 | } else {
193 | _this.mseStreamingStarted = false;
194 | }
195 | }
196 | },
197 | streamPlayUrl:function(type){
198 | switch (type) {
199 | case 'hls':
200 | return '/stream/' + this.uuid + '/hls/live/index.m3u8';
201 | break;
202 | case 'mse':
203 | var potocol = 'ws';
204 | if (location.protocol == 'https:') {
205 | potocol = 'wss';
206 | }
207 | return potocol+'://'+location.host+'/stream/' + this.uuid +'/mse?uuid='+this.uuid;
208 | //return 'ws://sr4.ipeye.ru/ws/mp4/live?name=d4ee855e40874ef7b7149357a42f18f0';
209 | break;
210 | case 'webrtc':
211 | return "/stream/"+this.uuid+"/webrtc?uuid=" + this.uuid;
212 | break;
213 | default:
214 | return '';
215 | }
216 | }
217 |
218 | }
219 |
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/bootstrap/css/bootstrap-reboot.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Reboot v4.5.1 (https://getbootstrap.com/)
3 | * Copyright 2011-2020 The Bootstrap Authors
4 | * Copyright 2011-2020 Twitter, Inc.
5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
7 | */
8 | *,
9 | *::before,
10 | *::after {
11 | box-sizing: border-box;
12 | }
13 |
14 | html {
15 | font-family: sans-serif;
16 | line-height: 1.15;
17 | -webkit-text-size-adjust: 100%;
18 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
19 | }
20 |
21 | article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
22 | display: block;
23 | }
24 |
25 | body {
26 | margin: 0;
27 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
28 | font-size: 1rem;
29 | font-weight: 400;
30 | line-height: 1.5;
31 | color: #212529;
32 | text-align: left;
33 | background-color: #fff;
34 | }
35 |
36 | [tabindex="-1"]:focus:not(:focus-visible) {
37 | outline: 0 !important;
38 | }
39 |
40 | hr {
41 | box-sizing: content-box;
42 | height: 0;
43 | overflow: visible;
44 | }
45 |
46 | h1, h2, h3, h4, h5, h6 {
47 | margin-top: 0;
48 | margin-bottom: 0.5rem;
49 | }
50 |
51 | p {
52 | margin-top: 0;
53 | margin-bottom: 1rem;
54 | }
55 |
56 | abbr[title],
57 | abbr[data-original-title] {
58 | text-decoration: underline;
59 | -webkit-text-decoration: underline dotted;
60 | text-decoration: underline dotted;
61 | cursor: help;
62 | border-bottom: 0;
63 | -webkit-text-decoration-skip-ink: none;
64 | text-decoration-skip-ink: none;
65 | }
66 |
67 | address {
68 | margin-bottom: 1rem;
69 | font-style: normal;
70 | line-height: inherit;
71 | }
72 |
73 | ol,
74 | ul,
75 | dl {
76 | margin-top: 0;
77 | margin-bottom: 1rem;
78 | }
79 |
80 | ol ol,
81 | ul ul,
82 | ol ul,
83 | ul ol {
84 | margin-bottom: 0;
85 | }
86 |
87 | dt {
88 | font-weight: 700;
89 | }
90 |
91 | dd {
92 | margin-bottom: .5rem;
93 | margin-left: 0;
94 | }
95 |
96 | blockquote {
97 | margin: 0 0 1rem;
98 | }
99 |
100 | b,
101 | strong {
102 | font-weight: bolder;
103 | }
104 |
105 | small {
106 | font-size: 80%;
107 | }
108 |
109 | sub,
110 | sup {
111 | position: relative;
112 | font-size: 75%;
113 | line-height: 0;
114 | vertical-align: baseline;
115 | }
116 |
117 | sub {
118 | bottom: -.25em;
119 | }
120 |
121 | sup {
122 | top: -.5em;
123 | }
124 |
125 | a {
126 | color: #007bff;
127 | text-decoration: none;
128 | background-color: transparent;
129 | }
130 |
131 | a:hover {
132 | color: #0056b3;
133 | text-decoration: underline;
134 | }
135 |
136 | a:not([href]):not([class]) {
137 | color: inherit;
138 | text-decoration: none;
139 | }
140 |
141 | a:not([href]):not([class]):hover {
142 | color: inherit;
143 | text-decoration: none;
144 | }
145 |
146 | pre,
147 | code,
148 | kbd,
149 | samp {
150 | font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
151 | font-size: 1em;
152 | }
153 |
154 | pre {
155 | margin-top: 0;
156 | margin-bottom: 1rem;
157 | overflow: auto;
158 | -ms-overflow-style: scrollbar;
159 | }
160 |
161 | figure {
162 | margin: 0 0 1rem;
163 | }
164 |
165 | img {
166 | vertical-align: middle;
167 | border-style: none;
168 | }
169 |
170 | svg {
171 | overflow: hidden;
172 | vertical-align: middle;
173 | }
174 |
175 | table {
176 | border-collapse: collapse;
177 | }
178 |
179 | caption {
180 | padding-top: 0.75rem;
181 | padding-bottom: 0.75rem;
182 | color: #6c757d;
183 | text-align: left;
184 | caption-side: bottom;
185 | }
186 |
187 | th {
188 | text-align: inherit;
189 | }
190 |
191 | label {
192 | display: inline-block;
193 | margin-bottom: 0.5rem;
194 | }
195 |
196 | button {
197 | border-radius: 0;
198 | }
199 |
200 | button:focus {
201 | outline: 1px dotted;
202 | outline: 5px auto -webkit-focus-ring-color;
203 | }
204 |
205 | input,
206 | button,
207 | select,
208 | optgroup,
209 | textarea {
210 | margin: 0;
211 | font-family: inherit;
212 | font-size: inherit;
213 | line-height: inherit;
214 | }
215 |
216 | button,
217 | input {
218 | overflow: visible;
219 | }
220 |
221 | button,
222 | select {
223 | text-transform: none;
224 | }
225 |
226 | [role="button"] {
227 | cursor: pointer;
228 | }
229 |
230 | select {
231 | word-wrap: normal;
232 | }
233 |
234 | button,
235 | [type="button"],
236 | [type="reset"],
237 | [type="submit"] {
238 | -webkit-appearance: button;
239 | }
240 |
241 | button:not(:disabled),
242 | [type="button"]:not(:disabled),
243 | [type="reset"]:not(:disabled),
244 | [type="submit"]:not(:disabled) {
245 | cursor: pointer;
246 | }
247 |
248 | button::-moz-focus-inner,
249 | [type="button"]::-moz-focus-inner,
250 | [type="reset"]::-moz-focus-inner,
251 | [type="submit"]::-moz-focus-inner {
252 | padding: 0;
253 | border-style: none;
254 | }
255 |
256 | input[type="radio"],
257 | input[type="checkbox"] {
258 | box-sizing: border-box;
259 | padding: 0;
260 | }
261 |
262 | textarea {
263 | overflow: auto;
264 | resize: vertical;
265 | }
266 |
267 | fieldset {
268 | min-width: 0;
269 | padding: 0;
270 | margin: 0;
271 | border: 0;
272 | }
273 |
274 | legend {
275 | display: block;
276 | width: 100%;
277 | max-width: 100%;
278 | padding: 0;
279 | margin-bottom: .5rem;
280 | font-size: 1.5rem;
281 | line-height: inherit;
282 | color: inherit;
283 | white-space: normal;
284 | }
285 |
286 | progress {
287 | vertical-align: baseline;
288 | }
289 |
290 | [type="number"]::-webkit-inner-spin-button,
291 | [type="number"]::-webkit-outer-spin-button {
292 | height: auto;
293 | }
294 |
295 | [type="search"] {
296 | outline-offset: -2px;
297 | -webkit-appearance: none;
298 | }
299 |
300 | [type="search"]::-webkit-search-decoration {
301 | -webkit-appearance: none;
302 | }
303 |
304 | ::-webkit-file-upload-button {
305 | font: inherit;
306 | -webkit-appearance: button;
307 | }
308 |
309 | output {
310 | display: inline-block;
311 | }
312 |
313 | summary {
314 | display: list-item;
315 | cursor: pointer;
316 | }
317 |
318 | template {
319 | display: none;
320 | }
321 |
322 | [hidden] {
323 | display: none !important;
324 | }
325 | /*# sourceMappingURL=bootstrap-reboot.css.map */
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/bootstrap/css/bootstrap-reboot.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Reboot v4.5.1 (https://getbootstrap.com/)
3 | * Copyright 2011-2020 The Bootstrap Authors
4 | * Copyright 2011-2020 Twitter, Inc.
5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
7 | */*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
8 | /*# sourceMappingURL=bootstrap-reboot.min.css.map */
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/css/brands.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | @font-face {
6 | font-family: 'Font Awesome 5 Brands';
7 | font-style: normal;
8 | font-weight: 400;
9 | font-display: block;
10 | src: url("../webfonts/fa-brands-400.eot");
11 | src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); }
12 |
13 | .fab {
14 | font-family: 'Font Awesome 5 Brands';
15 | font-weight: 400; }
16 |
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/css/brands.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | @font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands";font-weight:400}
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/css/regular.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | @font-face {
6 | font-family: 'Font Awesome 5 Free';
7 | font-style: normal;
8 | font-weight: 400;
9 | font-display: block;
10 | src: url("../webfonts/fa-regular-400.eot");
11 | src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); }
12 |
13 | .far {
14 | font-family: 'Font Awesome 5 Free';
15 | font-weight: 400; }
16 |
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/css/regular.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | @font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400}
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/css/solid.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | @font-face {
6 | font-family: 'Font Awesome 5 Free';
7 | font-style: normal;
8 | font-weight: 900;
9 | font-display: block;
10 | src: url("../webfonts/fa-solid-900.eot");
11 | src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }
12 |
13 | .fa,
14 | .fas {
15 | font-family: 'Font Awesome 5 Free';
16 | font-weight: 900; }
17 |
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/css/solid.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | @font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900}
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/css/svg-with-js.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | svg:not(:root).svg-inline--fa {
6 | overflow: visible; }
7 |
8 | .svg-inline--fa {
9 | display: inline-block;
10 | font-size: inherit;
11 | height: 1em;
12 | overflow: visible;
13 | vertical-align: -.125em; }
14 | .svg-inline--fa.fa-lg {
15 | vertical-align: -.225em; }
16 | .svg-inline--fa.fa-w-1 {
17 | width: 0.0625em; }
18 | .svg-inline--fa.fa-w-2 {
19 | width: 0.125em; }
20 | .svg-inline--fa.fa-w-3 {
21 | width: 0.1875em; }
22 | .svg-inline--fa.fa-w-4 {
23 | width: 0.25em; }
24 | .svg-inline--fa.fa-w-5 {
25 | width: 0.3125em; }
26 | .svg-inline--fa.fa-w-6 {
27 | width: 0.375em; }
28 | .svg-inline--fa.fa-w-7 {
29 | width: 0.4375em; }
30 | .svg-inline--fa.fa-w-8 {
31 | width: 0.5em; }
32 | .svg-inline--fa.fa-w-9 {
33 | width: 0.5625em; }
34 | .svg-inline--fa.fa-w-10 {
35 | width: 0.625em; }
36 | .svg-inline--fa.fa-w-11 {
37 | width: 0.6875em; }
38 | .svg-inline--fa.fa-w-12 {
39 | width: 0.75em; }
40 | .svg-inline--fa.fa-w-13 {
41 | width: 0.8125em; }
42 | .svg-inline--fa.fa-w-14 {
43 | width: 0.875em; }
44 | .svg-inline--fa.fa-w-15 {
45 | width: 0.9375em; }
46 | .svg-inline--fa.fa-w-16 {
47 | width: 1em; }
48 | .svg-inline--fa.fa-w-17 {
49 | width: 1.0625em; }
50 | .svg-inline--fa.fa-w-18 {
51 | width: 1.125em; }
52 | .svg-inline--fa.fa-w-19 {
53 | width: 1.1875em; }
54 | .svg-inline--fa.fa-w-20 {
55 | width: 1.25em; }
56 | .svg-inline--fa.fa-pull-left {
57 | margin-right: .3em;
58 | width: auto; }
59 | .svg-inline--fa.fa-pull-right {
60 | margin-left: .3em;
61 | width: auto; }
62 | .svg-inline--fa.fa-border {
63 | height: 1.5em; }
64 | .svg-inline--fa.fa-li {
65 | width: 2em; }
66 | .svg-inline--fa.fa-fw {
67 | width: 1.25em; }
68 |
69 | .fa-layers svg.svg-inline--fa {
70 | bottom: 0;
71 | left: 0;
72 | margin: auto;
73 | position: absolute;
74 | right: 0;
75 | top: 0; }
76 |
77 | .fa-layers {
78 | display: inline-block;
79 | height: 1em;
80 | position: relative;
81 | text-align: center;
82 | vertical-align: -.125em;
83 | width: 1em; }
84 | .fa-layers svg.svg-inline--fa {
85 | -webkit-transform-origin: center center;
86 | transform-origin: center center; }
87 |
88 | .fa-layers-text, .fa-layers-counter {
89 | display: inline-block;
90 | position: absolute;
91 | text-align: center; }
92 |
93 | .fa-layers-text {
94 | left: 50%;
95 | top: 50%;
96 | -webkit-transform: translate(-50%, -50%);
97 | transform: translate(-50%, -50%);
98 | -webkit-transform-origin: center center;
99 | transform-origin: center center; }
100 |
101 | .fa-layers-counter {
102 | background-color: #ff253a;
103 | border-radius: 1em;
104 | -webkit-box-sizing: border-box;
105 | box-sizing: border-box;
106 | color: #fff;
107 | height: 1.5em;
108 | line-height: 1;
109 | max-width: 5em;
110 | min-width: 1.5em;
111 | overflow: hidden;
112 | padding: .25em;
113 | right: 0;
114 | text-overflow: ellipsis;
115 | top: 0;
116 | -webkit-transform: scale(0.25);
117 | transform: scale(0.25);
118 | -webkit-transform-origin: top right;
119 | transform-origin: top right; }
120 |
121 | .fa-layers-bottom-right {
122 | bottom: 0;
123 | right: 0;
124 | top: auto;
125 | -webkit-transform: scale(0.25);
126 | transform: scale(0.25);
127 | -webkit-transform-origin: bottom right;
128 | transform-origin: bottom right; }
129 |
130 | .fa-layers-bottom-left {
131 | bottom: 0;
132 | left: 0;
133 | right: auto;
134 | top: auto;
135 | -webkit-transform: scale(0.25);
136 | transform: scale(0.25);
137 | -webkit-transform-origin: bottom left;
138 | transform-origin: bottom left; }
139 |
140 | .fa-layers-top-right {
141 | right: 0;
142 | top: 0;
143 | -webkit-transform: scale(0.25);
144 | transform: scale(0.25);
145 | -webkit-transform-origin: top right;
146 | transform-origin: top right; }
147 |
148 | .fa-layers-top-left {
149 | left: 0;
150 | right: auto;
151 | top: 0;
152 | -webkit-transform: scale(0.25);
153 | transform: scale(0.25);
154 | -webkit-transform-origin: top left;
155 | transform-origin: top left; }
156 |
157 | .fa-lg {
158 | font-size: 1.33333em;
159 | line-height: 0.75em;
160 | vertical-align: -.0667em; }
161 |
162 | .fa-xs {
163 | font-size: .75em; }
164 |
165 | .fa-sm {
166 | font-size: .875em; }
167 |
168 | .fa-1x {
169 | font-size: 1em; }
170 |
171 | .fa-2x {
172 | font-size: 2em; }
173 |
174 | .fa-3x {
175 | font-size: 3em; }
176 |
177 | .fa-4x {
178 | font-size: 4em; }
179 |
180 | .fa-5x {
181 | font-size: 5em; }
182 |
183 | .fa-6x {
184 | font-size: 6em; }
185 |
186 | .fa-7x {
187 | font-size: 7em; }
188 |
189 | .fa-8x {
190 | font-size: 8em; }
191 |
192 | .fa-9x {
193 | font-size: 9em; }
194 |
195 | .fa-10x {
196 | font-size: 10em; }
197 |
198 | .fa-fw {
199 | text-align: center;
200 | width: 1.25em; }
201 |
202 | .fa-ul {
203 | list-style-type: none;
204 | margin-left: 2.5em;
205 | padding-left: 0; }
206 | .fa-ul > li {
207 | position: relative; }
208 |
209 | .fa-li {
210 | left: -2em;
211 | position: absolute;
212 | text-align: center;
213 | width: 2em;
214 | line-height: inherit; }
215 |
216 | .fa-border {
217 | border: solid 0.08em #eee;
218 | border-radius: .1em;
219 | padding: .2em .25em .15em; }
220 |
221 | .fa-pull-left {
222 | float: left; }
223 |
224 | .fa-pull-right {
225 | float: right; }
226 |
227 | .fa.fa-pull-left,
228 | .fas.fa-pull-left,
229 | .far.fa-pull-left,
230 | .fal.fa-pull-left,
231 | .fab.fa-pull-left {
232 | margin-right: .3em; }
233 |
234 | .fa.fa-pull-right,
235 | .fas.fa-pull-right,
236 | .far.fa-pull-right,
237 | .fal.fa-pull-right,
238 | .fab.fa-pull-right {
239 | margin-left: .3em; }
240 |
241 | .fa-spin {
242 | -webkit-animation: fa-spin 2s infinite linear;
243 | animation: fa-spin 2s infinite linear; }
244 |
245 | .fa-pulse {
246 | -webkit-animation: fa-spin 1s infinite steps(8);
247 | animation: fa-spin 1s infinite steps(8); }
248 |
249 | @-webkit-keyframes fa-spin {
250 | 0% {
251 | -webkit-transform: rotate(0deg);
252 | transform: rotate(0deg); }
253 | 100% {
254 | -webkit-transform: rotate(360deg);
255 | transform: rotate(360deg); } }
256 |
257 | @keyframes fa-spin {
258 | 0% {
259 | -webkit-transform: rotate(0deg);
260 | transform: rotate(0deg); }
261 | 100% {
262 | -webkit-transform: rotate(360deg);
263 | transform: rotate(360deg); } }
264 |
265 | .fa-rotate-90 {
266 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
267 | -webkit-transform: rotate(90deg);
268 | transform: rotate(90deg); }
269 |
270 | .fa-rotate-180 {
271 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
272 | -webkit-transform: rotate(180deg);
273 | transform: rotate(180deg); }
274 |
275 | .fa-rotate-270 {
276 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
277 | -webkit-transform: rotate(270deg);
278 | transform: rotate(270deg); }
279 |
280 | .fa-flip-horizontal {
281 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
282 | -webkit-transform: scale(-1, 1);
283 | transform: scale(-1, 1); }
284 |
285 | .fa-flip-vertical {
286 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
287 | -webkit-transform: scale(1, -1);
288 | transform: scale(1, -1); }
289 |
290 | .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
291 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
292 | -webkit-transform: scale(-1, -1);
293 | transform: scale(-1, -1); }
294 |
295 | :root .fa-rotate-90,
296 | :root .fa-rotate-180,
297 | :root .fa-rotate-270,
298 | :root .fa-flip-horizontal,
299 | :root .fa-flip-vertical,
300 | :root .fa-flip-both {
301 | -webkit-filter: none;
302 | filter: none; }
303 |
304 | .fa-stack {
305 | display: inline-block;
306 | height: 2em;
307 | position: relative;
308 | width: 2.5em; }
309 |
310 | .fa-stack-1x,
311 | .fa-stack-2x {
312 | bottom: 0;
313 | left: 0;
314 | margin: auto;
315 | position: absolute;
316 | right: 0;
317 | top: 0; }
318 |
319 | .svg-inline--fa.fa-stack-1x {
320 | height: 1em;
321 | width: 1.25em; }
322 |
323 | .svg-inline--fa.fa-stack-2x {
324 | height: 2em;
325 | width: 2.5em; }
326 |
327 | .fa-inverse {
328 | color: #fff; }
329 |
330 | .sr-only {
331 | border: 0;
332 | clip: rect(0, 0, 0, 0);
333 | height: 1px;
334 | margin: -1px;
335 | overflow: hidden;
336 | padding: 0;
337 | position: absolute;
338 | width: 1px; }
339 |
340 | .sr-only-focusable:active, .sr-only-focusable:focus {
341 | clip: auto;
342 | height: auto;
343 | margin: 0;
344 | overflow: visible;
345 | position: static;
346 | width: auto; }
347 |
348 | .svg-inline--fa .fa-primary {
349 | fill: var(--fa-primary-color, currentColor);
350 | opacity: 1;
351 | opacity: var(--fa-primary-opacity, 1); }
352 |
353 | .svg-inline--fa .fa-secondary {
354 | fill: var(--fa-secondary-color, currentColor);
355 | opacity: 0.4;
356 | opacity: var(--fa-secondary-opacity, 0.4); }
357 |
358 | .svg-inline--fa.fa-swap-opacity .fa-primary {
359 | opacity: 0.4;
360 | opacity: var(--fa-secondary-opacity, 0.4); }
361 |
362 | .svg-inline--fa.fa-swap-opacity .fa-secondary {
363 | opacity: 1;
364 | opacity: var(--fa-primary-opacity, 1); }
365 |
366 | .svg-inline--fa mask .fa-primary,
367 | .svg-inline--fa mask .fa-secondary {
368 | fill: black; }
369 |
370 | .fad.fa-inverse {
371 | color: #fff; }
372 |
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/css/svg-with-js.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | .svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor)}.svg-inline--fa .fa-secondary,.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fad.fa-inverse{color:#fff}
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-brands-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-brands-400.eot
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-brands-400.ttf
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-brands-400.woff
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-brands-400.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-regular-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-regular-400.eot
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-regular-400.ttf
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-regular-400.woff
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-solid-900.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-solid-900.eot
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-solid-900.ttf
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-solid-900.woff
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Bian-Sh/RTSP-Player-For-Unity-WebGL/65fc0ca6a9bd7c7f0fb77eb9d8f36bc926245f09/RTSPtoWebServer/web/static/plugins/fontawesome-free/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/templates/add_stream.tmpl:
--------------------------------------------------------------------------------
1 | {{template "head.tmpl" .}}
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 | {{template "foot.tmpl" .}}
74 |
75 |
100 |
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/templates/documentation.tmpl:
--------------------------------------------------------------------------------
1 | {{template "head.tmpl" .}}
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | API documentation is available in the GitHub repository.
24 |
25 |
26 | See the project README for installation and configuration instructions.
27 |
28 |
29 |
30 |
31 |
32 | {{template "foot.tmpl" .}}
33 |
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/templates/edit_stream.tmpl:
--------------------------------------------------------------------------------
1 | {{template "head.tmpl" .}}
2 |
17 |
18 | {{ $stream:= (index .streams .uuid)}}
19 | {{ $mainChannel := (index $stream.Channels "0") }}
20 |
21 |
22 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 | {{template "foot.tmpl" .}}
129 |
130 |
152 |
--------------------------------------------------------------------------------
/RTSPtoWebServer/web/templates/foot.tmpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
30 |
31 |
32 |
33 |
41 |
42 |
43 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |