-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathstreamana.html
143 lines (143 loc) · 7.32 KB
/
streamana.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<!DOCTYPE html>
<html class="busy">
<head>
<title>Streamana</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
<link href="./streamana.css" rel="stylesheet">
<script type="module" src="./streamana.js"></script>
</head>
<body class="d-flex flex-column vh-100 d-none">
<iframe credentialless id="poster" src="poster.html" width=0 height=0></iframe>
<div id="busy" class="busy"></div>
<nav id="nav" class="navbar navbar-light bg-light flex-grow-0">
<div class="container-fluid">
<div class="row gx-2 gy-2 gy-sm-0 w-100 mx-0 align-items-center">
<div class="col-sm col-auto order-0">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggleExternalContent">
<span class="navbar-toggler-icon"></span>
</button>
</div>
<div class="col-sm order-3 order-sm-2 d-sm-block">
<input id="ingestion-url" type="text" class="form-control" placeholder="Ingestion URL">
</div>
<div class="col-sm col-auto order-2 order-sm-3 ms-auto">
<div class="input-group-text">
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" id="go-live" disabled autocomplete="off">
<label for="go-live">Live</label>
</div>
</div>
</div>
<div id="mic" class="col-sm col-auto order-1">
<button type="button" class="navbar-toggler">
<span id="mic-icon" class="navbar-toggler-icon mic-icon off"></span>
</button>
</div>
<div id="camera" class="col-sm col-auto order-1">
<button type="button" class="navbar-toggler">
<span id="camera-icon" class="navbar-toggler-icon camera-icon off"></span>
</button>
</div>
<div id="camera-swap" class="col-sm col-auto order-1 d-none">
<button type="button" class="navbar-toggler">
<span class="navbar-toggler-icon camera-swap-icon"></span>
</button>
</div>
</div>
</div>
</nav>
<div class="collapse p-3 bg-light text-dark card border-dark flex-grow-0" id="navbarToggleExternalContent">
<div class="pb-4">
<label for="resolution" class="form-label">Video resolution</label>
<select id="resolution" class="form-select"></select>
</div>
<div class="form-check">
<input id="greyscale" class="form-check-input" type="checkbox">
<label for="greyscale" class="form-check-label">Greyscale</label>
</div>
<div class="form-check">
<input id="lock-portrait" class="form-check-input" type="checkbox">
<label for="lock-portrait" class="form-check-label">Lock and rotate portrait mode</label>
</div>
<div class="form-check">
<input id="zoom-video" class="form-check-input" type="checkbox">
<label for="zoom-video" class="form-check-label">Minimize vertical bars in local video display</label>
</div>
<div class="pt-4">
<div class="form-label">Ingestion protocol</div>
<div>
<div class="form-check form-check-inline">
<input id="protocol-hls" name="protocol" class="form-check-input" type="radio" value="ffmpeg-worker-hls.js">
<label for="protocol-hls" class="form-check-label">HLS (H.264)</label>
</div>
<div class="form-check form-check-inline">
<input id="protocol-dash" name="protocol" class="form-check-input" type="radio" value="ffmpeg-worker-dash.js">
<label for="protocol-dash" class="form-check-label">DASH (VP9)</label>
</div>
</div>
</div>
<div class="pt-4">
<div class="form-label">Request method</div>
<div>
<div class="form-check form-check-inline">
<input id="request-post" name="request-method" class="form-check-input" type="radio" value="POST">
<label for="request-post" class="form-check-label">POST</label>
</div>
<div class="form-check form-check-inline">
<input id="request-put" name="request-method" class="form-check-input" type="radio" value="PUT">
<label for="request-put" class="form-check-label">PUT</label>
</div>
</div>
</div>
<div class="pt-4">
<div class="form-label">Cross-Origin Resource Sharing (CORS)</div>
<div>
<div class="form-check form-check-inline">
<input id="request-cors" name="request-mode" class="form-check-input" type="radio" value="cors">
<label for="request-cors" class="form-check-label">Allow (cors)</label>
</div>
<div class="form-check form-check-inline">
<input id="request-no-cors" name="request-mode" class="form-check-input" type="radio" value="no-cors">
<label for="request-no-cors" class="form-check-label">Restrict (no-cors)</label>
</div>
<div class="form-check form-check-inline">
<input id="request-same-origin" name="request-mode" class="form-check-input" type="radio" value="same-origin">
<label for="request-same-origin" class="form-check-label">Deny (same-origin)</label>
</div>
</div>
</div>
<div class="pt-4">
<div class="form-label">Encoder Preference</div>
<div>
<div class="form-check form-check-inline">
<input id="prefer-mediarecorder" name="preferred-encoder" class="form-check-input" type="radio" value="mediarecorder">
<label for="prefer-mediarecorder" class="form-check-label">MediaRecorder</label>
</div>
<div class="form-check form-check-inline">
<input id="prefer-webcodecs" name="preferred-encoder" class="form-check-input" type="radio" value="webcodecs">
<label for="prefer-webcodecs" class="form-check-label">WebCodecs</label>
</div>
</div>
</div>
<div class="pt-4">
<label for="ffmpeg-lib-url" class="form-label">FFmpeg library URL</label>
<input id="ffmpeg-lib-url" class="form-control" type="text">
</div>
</div>
<div id="error-alert" class="alert alert-danger alert-dismissible fade mb-0 flex-grow-0" role="alert">
<strong><div id="error-msg"></div></strong> See the Developer Console for details
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
<div class="position-relative overflow-hidden flex-grow-1 mx-auto d-flex align-items-center">
<canvas id="canvas" class="mw-100 mh-100" playsinline></canvas>
<div class="position-absolute top-50 start-50 translate-middle">
<div id="waiting" class="text-primary spinner-border d-none" role="status">
<span class="visually-hidden">Loading...</span>
</div>
</div>
</div>
</body>
</html>