daoan1412 commited on
Commit
da389b0
·
verified ·
1 Parent(s): 3217741

Add 2 files

Browse files
Files changed (2) hide show
  1. README.md +7 -5
  2. index.html +785 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Camera Conf
3
- emoji: 🌍
4
- colorFrom: yellow
5
- colorTo: red
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: camera-conf
3
+ emoji: 🐳
4
+ colorFrom: green
5
+ colorTo: gray
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,785 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="vi">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Cấu Hình Camera IP - ONVIF</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <style>
10
+ .hierarchy-item {
11
+ transition: all 0.3s ease;
12
+ }
13
+ .hierarchy-item:hover {
14
+ transform: translateX(5px);
15
+ }
16
+ .config-card {
17
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
18
+ transition: all 0.3s ease;
19
+ }
20
+ .config-card:hover {
21
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
22
+ }
23
+ .slider-thumb::-webkit-slider-thumb {
24
+ -webkit-appearance: none;
25
+ appearance: none;
26
+ width: 20px;
27
+ height: 20px;
28
+ border-radius: 50%;
29
+ background: #3b82f6;
30
+ cursor: pointer;
31
+ }
32
+ .preview-box {
33
+ background: linear-gradient(45deg, #f3f4f6 25%, transparent 25%) -50px 0,
34
+ linear-gradient(-45deg, #f3f4f6 25%, transparent 25%) -50px 0,
35
+ linear-gradient(45deg, transparent 75%, #f3f4f6 75%),
36
+ linear-gradient(-45deg, transparent 75%, #f3f4f6 75%);
37
+ background-size: 100px 100px;
38
+ }
39
+ .tab-active {
40
+ border-bottom: 3px solid #3b82f6;
41
+ color: #3b82f6;
42
+ font-weight: 600;
43
+ }
44
+ .tab-content {
45
+ display: none;
46
+ }
47
+ .tab-content.active {
48
+ display: block;
49
+ }
50
+ </style>
51
+ </head>
52
+ <body class="bg-gray-50">
53
+ <div class="container mx-auto px-4 py-8">
54
+ <!-- Header -->
55
+ <div class="flex justify-between items-center mb-8">
56
+ <h1 class="text-3xl font-bold text-gray-800">
57
+ <i class="fas fa-camera mr-2 text-blue-500"></i> Cấu Hình Camera IP
58
+ </h1>
59
+ <div class="flex space-x-4">
60
+ <button class="bg-blue-500 hover:bg-blue-600 text-white px-4 py-2 rounded-lg flex items-center">
61
+ <i class="fas fa-save mr-2"></i> Lưu Cấu Hình
62
+ </button>
63
+ <button class="bg-gray-200 hover:bg-gray-300 text-gray-800 px-4 py-2 rounded-lg flex items-center">
64
+ <i class="fas fa-redo mr-2"></i> Mặc Định
65
+ </button>
66
+ </div>
67
+ </div>
68
+
69
+ <!-- Main Content -->
70
+ <div class="grid grid-cols-1 lg:grid-cols-4 gap-6">
71
+ <!-- Left Sidebar - Hierarchy -->
72
+ <div class="lg:col-span-1 bg-white rounded-xl shadow p-4">
73
+ <h2 class="text-xl font-semibold mb-4 text-gray-700">
74
+ <i class="fas fa-sitemap mr-2 text-blue-500"></i> Phân Cấp Thiết Bị
75
+ </h2>
76
+
77
+ <div class="mb-4">
78
+ <div class="flex items-center justify-between mb-2">
79
+ <span class="font-medium">Chế Độ Cấu Hình:</span>
80
+ <select class="border rounded px-2 py-1 text-sm">
81
+ <option>Kế Thừa Từ Cấp Trên</option>
82
+ <option>Áp Dụng Cho Cấp Này</option>
83
+ <option>Tùy Chỉnh Thiết Bị</option>
84
+ </select>
85
+ </div>
86
+ </div>
87
+
88
+ <div class="space-y-2">
89
+ <div class="hierarchy-item bg-blue-50 p-3 rounded-lg cursor-pointer flex items-center">
90
+ <i class="fas fa-building mr-2 text-blue-500"></i>
91
+ <span class="font-medium">Tòa Nhà A</span>
92
+ <i class="fas fa-chevron-down ml-auto text-gray-500"></i>
93
+ </div>
94
+
95
+ <div class="ml-4 space-y-2">
96
+ <div class="hierarchy-item bg-blue-50 p-3 rounded-lg cursor-pointer flex items-center">
97
+ <i class="fas fa-layer-group mr-2 text-blue-400"></i>
98
+ <span>Tầng 1</span>
99
+ <i class="fas fa-chevron-down ml-auto text-gray-500"></i>
100
+ </div>
101
+
102
+ <div class="ml-4 space-y-2">
103
+ <div class="hierarchy-item bg-blue-50 p-3 rounded-lg cursor-pointer flex items-center">
104
+ <i class="fas fa-door-open mr-2 text-blue-300"></i>
105
+ <span>Khu Vực Lễ Tân</span>
106
+ <i class="fas fa-chevron-down ml-auto text-gray-500"></i>
107
+ </div>
108
+
109
+ <div class="ml-4 space-y-2">
110
+ <div class="hierarchy-item bg-blue-100 p-3 rounded-lg cursor-pointer flex items-center border border-blue-300">
111
+ <i class="fas fa-video mr-2 text-blue-600"></i>
112
+ <span class="font-medium">Camera 01</span>
113
+ <span class="ml-auto bg-blue-500 text-white text-xs px-2 py-1 rounded-full">ONVIF</span>
114
+ </div>
115
+ <div class="hierarchy-item bg-gray-100 p-3 rounded-lg cursor-pointer flex items-center">
116
+ <i class="fas fa-video mr-2 text-gray-600"></i>
117
+ <span>Camera 02</span>
118
+ </div>
119
+ </div>
120
+ </div>
121
+ </div>
122
+
123
+ <div class="hierarchy-item bg-gray-100 p-3 rounded-lg cursor-pointer flex items-center">
124
+ <i class="fas fa-building mr-2 text-gray-500"></i>
125
+ <span>Tòa Nhà B</span>
126
+ <i class="fas fa-chevron-right ml-auto text-gray-500"></i>
127
+ </div>
128
+ </div>
129
+ </div>
130
+
131
+ <!-- Right Content - Configuration -->
132
+ <div class="lg:col-span-3 space-y-6">
133
+ <!-- Device Info -->
134
+ <div class="bg-white rounded-xl shadow p-6">
135
+ <div class="flex items-center justify-between mb-4">
136
+ <h2 class="text-xl font-semibold text-gray-800">
137
+ <i class="fas fa-info-circle mr-2 text-blue-500"></i> Thông Tin Thiết Bị
138
+ </h2>
139
+ <span class="bg-green-100 text-green-800 text-sm px-3 py-1 rounded-full">
140
+ <i class="fas fa-check-circle mr-1"></i> ONVIF Profile T
141
+ </span>
142
+ </div>
143
+
144
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-4">
145
+ <div>
146
+ <label class="block text-sm font-medium text-gray-700 mb-1">Tên Thiết Bị</label>
147
+ <input type="text" value="Camera 01 - Lễ Tân" class="w-full border rounded px-3 py-2">
148
+ </div>
149
+ <div>
150
+ <label class="block text-sm font-medium text-gray-700 mb-1">Model</label>
151
+ <input type="text" value="Hikvision DS-2CD2342WD-I" class="w-full border rounded px-3 py-2" readonly>
152
+ </div>
153
+ <div>
154
+ <label class="block text-sm font-medium text-gray-700 mb-1">Địa Chỉ IP</label>
155
+ <input type="text" value="192.168.1.100" class="w-full border rounded px-3 py-2" readonly>
156
+ </div>
157
+ </div>
158
+ </div>
159
+
160
+ <!-- Configuration Tabs -->
161
+ <div class="bg-white rounded-xl shadow overflow-hidden">
162
+ <div class="border-b border-gray-200">
163
+ <nav class="flex -mb-px">
164
+ <button data-tab="video" class="mr-8 py-4 px-1 text-center border-b-2 font-medium text-sm tab-active text-blue-500 border-blue-500">
165
+ <i class="fas fa-video mr-2"></i> Cấu Hình Video
166
+ </button>
167
+ <button data-tab="audio" class="mr-8 py-4 px-1 text-center border-b-2 font-medium text-sm text-gray-500 hover:text-gray-700 border-transparent">
168
+ <i class="fas fa-volume-up mr-2"></i> Cấu Hình Âm Thanh
169
+ </button>
170
+ <button data-tab="image" class="mr-8 py-4 px-1 text-center border-b-2 font-medium text-sm text-gray-500 hover:text-gray-700 border-transparent">
171
+ <i class="fas fa-sliders-h mr-2"></i> Cấu Hình Hình Ảnh
172
+ </button>
173
+ <button data-tab="stream" class="py-4 px-1 text-center border-b-2 font-medium text-sm text-gray-500 hover:text-gray-700 border-transparent">
174
+ <i class="fas fa-network-wired mr-2"></i> Cấu Hình Stream
175
+ </button>
176
+ </nav>
177
+ </div>
178
+
179
+ <!-- Video Configuration Content -->
180
+ <div id="video-tab" class="tab-content active p-6">
181
+ <!-- Stream Profile Selection -->
182
+ <div class="mb-6">
183
+ <label class="block text-sm font-medium text-gray-700 mb-2">Profile Video</label>
184
+ <div class="flex space-x-4">
185
+ <button class="px-4 py-2 bg-blue-500 text-white rounded-lg">Main Stream</button>
186
+ <button class="px-4 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300">Sub Stream</button>
187
+ <button class="px-4 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300">Third Stream</button>
188
+ </div>
189
+ </div>
190
+
191
+ <div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
192
+ <!-- Video Settings -->
193
+ <div class="lg:col-span-2 space-y-6">
194
+ <!-- Encoding -->
195
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
196
+ <label class="block text-sm font-medium text-gray-700 mb-2">Chuẩn Mã Hóa</label>
197
+ <select class="w-full border rounded px-3 py-2">
198
+ <option>H.264</option>
199
+ <option>H.265</option>
200
+ <option>MJPEG</option>
201
+ </select>
202
+ <div class="mt-2 text-xs text-gray-500">
203
+ <i class="fas fa-info-circle mr-1"></i> H.265 tiết kiệm 50% băng thông so với H.264
204
+ </div>
205
+ </div>
206
+
207
+ <!-- Resolution & FPS -->
208
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
209
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
210
+ <label class="block text-sm font-medium text-gray-700 mb-2">Độ Phân Giải</label>
211
+ <select class="w-full border rounded px-3 py-2">
212
+ <option>3840x2160 (4K)</option>
213
+ <option>2560x1440 (2K)</option>
214
+ <option selected>1920x1080 (1080p)</option>
215
+ <option>1280x720 (720p)</option>
216
+ <option>640x480 (VGA)</option>
217
+ </select>
218
+ </div>
219
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
220
+ <label class="block text-sm font-medium text-gray-700 mb-2">FPS (Frame Rate)</label>
221
+ <select class="w-full border rounded px-3 py-2">
222
+ <option>60</option>
223
+ <option>30</option>
224
+ <option selected>25</option>
225
+ <option>20</option>
226
+ <option>15</option>
227
+ <option>10</option>
228
+ </select>
229
+ </div>
230
+ </div>
231
+
232
+ <!-- Quality & Bitrate -->
233
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
234
+ <label class="block text-sm font-medium text-gray-700 mb-2">Chất Lượng Video (1-10)</label>
235
+ <input type="range" min="1" max="10" value="7" class="w-full slider-thumb">
236
+ <div class="flex justify-between text-xs text-gray-500 mt-1">
237
+ <span>Thấp</span>
238
+ <span>Trung Bình</span>
239
+ <span>Cao</span>
240
+ </div>
241
+ </div>
242
+
243
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
244
+ <label class="block text-sm font-medium text-gray-700 mb-2">Bitrate (Kbps)</label>
245
+ <div class="flex items-center space-x-4">
246
+ <input type="range" min="512" max="8192" value="2048" step="128" class="flex-1 slider-thumb">
247
+ <input type="number" value="2048" class="w-20 border rounded px-2 py-1 text-sm">
248
+ </div>
249
+ <div class="mt-2 text-xs text-gray-500">
250
+ <i class="fas fa-info-circle mr-1"></i> Bitrate hiện tại: ~2Mbps - Dự kiến lưu trữ: 7.2GB/ngày
251
+ </div>
252
+ </div>
253
+
254
+ <!-- GOP & Profile -->
255
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
256
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
257
+ <label class="block text-sm font-medium text-gray-700 mb-2">GOP Length</label>
258
+ <select class="w-full border rounded px-3 py-2">
259
+ <option>10</option>
260
+ <option>25</option>
261
+ <option selected>30</option>
262
+ <option>50</option>
263
+ <option>100</option>
264
+ </select>
265
+ </div>
266
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
267
+ <label class="block text-sm font-medium text-gray-700 mb-2">Profile</label>
268
+ <select class="w-full border rounded px-3 py-2">
269
+ <option>Baseline</option>
270
+ <option selected>Main</option>
271
+ <option>High</option>
272
+ </select>
273
+ </div>
274
+ </div>
275
+ </div>
276
+
277
+ <!-- Preview & Advanced -->
278
+ <div class="space-y-6">
279
+ <!-- Preview -->
280
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
281
+ <label class="block text-sm font-medium text-gray-700 mb-2">Xem Trước</label>
282
+ <div class="preview-box w-full h-48 rounded-lg bg-gray-100 flex items-center justify-center">
283
+ <div class="text-center">
284
+ <i class="fas fa-video text-gray-400 text-3xl mb-2"></i>
285
+ <p class="text-gray-500 text-sm">Xem trước video</p>
286
+ </div>
287
+ </div>
288
+ <button class="mt-3 w-full bg-blue-500 hover:bg-blue-600 text-white py-2 rounded-lg text-sm">
289
+ <i class="fas fa-sync-alt mr-2"></i> Làm Mới Xem Trước
290
+ </button>
291
+ </div>
292
+
293
+ <!-- Advanced Settings -->
294
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
295
+ <label class="block text-sm font-medium text-gray-700 mb-2">Cài Đặt Nâng Cao</label>
296
+
297
+ <div class="flex items-center justify-between mb-3">
298
+ <span class="text-sm">Multicast</span>
299
+ <label class="relative inline-flex items-center cursor-pointer">
300
+ <input type="checkbox" class="sr-only peer">
301
+ <div class="w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-blue-500"></div>
302
+ </label>
303
+ </div>
304
+
305
+ <div class="flex items-center justify-between mb-3">
306
+ <span class="text-sm">Bộ Lọc Hồng Ngoại</span>
307
+ <select class="border rounded px-2 py-1 text-sm">
308
+ <option>Auto</option>
309
+ <option>On</option>
310
+ <option>Off</option>
311
+ </select>
312
+ </div>
313
+
314
+ <div class="flex items-center justify-between">
315
+ <span class="text-sm">Session Timeout</span>
316
+ <input type="text" value="00:10:00" class="w-20 border rounded px-2 py-1 text-sm">
317
+ </div>
318
+ </div>
319
+
320
+ <!-- Recommendations -->
321
+ <div class="config-card bg-blue-50 p-4 rounded-lg border border-blue-200">
322
+ <h3 class="font-medium text-blue-800 mb-2">
323
+ <i class="fas fa-lightbulb mr-2"></i> Gợi Ý Tối Ưu
324
+ </h3>
325
+ <p class="text-sm text-blue-700">
326
+ Dựa trên băng thông hiện tại, hệ thống đề xuất giảm FPS xuống 20 để tiết kiệm lưu trữ.
327
+ </p>
328
+ <button class="mt-3 w-full bg-blue-500 hover:bg-blue-600 text-white py-2 rounded-lg text-sm">
329
+ <i class="fas fa-magic mr-2"></i> Áp Dụng Tối Ưu
330
+ </button>
331
+ </div>
332
+ </div>
333
+ </div>
334
+ </div>
335
+
336
+ <!-- Audio Configuration Content -->
337
+ <div id="audio-tab" class="tab-content p-6">
338
+ <div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
339
+ <div class="lg:col-span-2 space-y-6">
340
+ <!-- Audio Settings -->
341
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
342
+ <div class="flex items-center justify-between mb-3">
343
+ <span class="text-sm font-medium">Kích Hoạt Âm Thanh</span>
344
+ <label class="relative inline-flex items-center cursor-pointer">
345
+ <input type="checkbox" class="sr-only peer" checked>
346
+ <div class="w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-blue-500"></div>
347
+ </label>
348
+ </div>
349
+
350
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200 mt-4">
351
+ <label class="block text-sm font-medium text-gray-700 mb-2">Chuẩn Mã Hóa Âm Thanh</label>
352
+ <select class="w-full border rounded px-3 py-2">
353
+ <option>G.711</option>
354
+ <option>AAC</option>
355
+ <option>G.726</option>
356
+ <option>PCM</option>
357
+ </select>
358
+ </div>
359
+
360
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4 mt-4">
361
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
362
+ <label class="block text-sm font-medium text-gray-700 mb-2">Bitrate Âm Thanh</label>
363
+ <select class="w-full border rounded px-3 py-2">
364
+ <option>64 Kbps</option>
365
+ <option>128 Kbps</option>
366
+ <option selected>256 Kbps</option>
367
+ <option>512 Kbps</option>
368
+ </select>
369
+ </div>
370
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
371
+ <label class="block text-sm font-medium text-gray-700 mb-2">Tần Số Mẫu</label>
372
+ <select class="w-full border rounded px-3 py-2">
373
+ <option>8 kHz</option>
374
+ <option>16 kHz</option>
375
+ <option selected>44.1 kHz</option>
376
+ <option>48 kHz</option>
377
+ </select>
378
+ </div>
379
+ </div>
380
+
381
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200 mt-4">
382
+ <label class="block text-sm font-medium text-gray-700 mb-2">Độ Nhạy Micro</label>
383
+ <input type="range" min="0" max="100" value="70" class="w-full slider-thumb">
384
+ <div class="flex justify-between text-xs text-gray-500 mt-1">
385
+ <span>Thấp</span>
386
+ <span>Trung Bình</span>
387
+ <span>Cao</span>
388
+ </div>
389
+ </div>
390
+ </div>
391
+ </div>
392
+
393
+ <div class="space-y-6">
394
+ <!-- Audio Preview -->
395
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
396
+ <label class="block text-sm font-medium text-gray-700 mb-2">Kiểm Tra Âm Thanh</label>
397
+ <div class="preview-box w-full h-48 rounded-lg bg-gray-100 flex items-center justify-center">
398
+ <div class="text-center">
399
+ <i class="fas fa-microphone text-gray-400 text-3xl mb-2"></i>
400
+ <p class="text-gray-500 text-sm">Âm thanh sẽ hiển thị tại đây</p>
401
+ <div class="w-full bg-gray-200 rounded-full h-2.5 mt-4">
402
+ <div class="bg-blue-500 h-2.5 rounded-full" style="width: 45%"></div>
403
+ </div>
404
+ </div>
405
+ </div>
406
+ <button class="mt-3 w-full bg-blue-500 hover:bg-blue-600 text-white py-2 rounded-lg text-sm">
407
+ <i class="fas fa-microphone-alt mr-2"></i> Kiểm Tra Micro
408
+ </button>
409
+ </div>
410
+
411
+ <!-- Audio Advanced -->
412
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
413
+ <label class="block text-sm font-medium text-gray-700 mb-2">Cài Đặt Nâng Cao</label>
414
+
415
+ <div class="flex items-center justify-between mb-3">
416
+ <span class="text-sm">Giảm Tiếng Ồn</span>
417
+ <label class="relative inline-flex items-center cursor-pointer">
418
+ <input type="checkbox" class="sr-only peer" checked>
419
+ <div class="w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-blue-500"></div>
420
+ </label>
421
+ </div>
422
+
423
+ <div class="flex items-center justify-between mb-3">
424
+ <span class="text-sm">Tự Động Điều Chỉnh Âm Lượng</span>
425
+ <label class="relative inline-flex items-center cursor-pointer">
426
+ <input type="checkbox" class="sr-only peer">
427
+ <div class="w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-blue-500"></div>
428
+ </label>
429
+ </div>
430
+
431
+ <div class="flex items-center justify-between">
432
+ <span class="text-sm">Độ Trễ Âm Thanh</span>
433
+ <input type="text" value="200ms" class="w-20 border rounded px-2 py-1 text-sm">
434
+ </div>
435
+ </div>
436
+ </div>
437
+ </div>
438
+ </div>
439
+
440
+ <!-- Image Configuration Content -->
441
+ <div id="image-tab" class="tab-content p-6">
442
+ <div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
443
+ <div class="lg:col-span-2 space-y-6">
444
+ <!-- Image Settings -->
445
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
446
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
447
+ <label class="block text-sm font-medium text-gray-700 mb-2">Độ Sáng</label>
448
+ <input type="range" min="0" max="100" value="50" class="w-full slider-thumb">
449
+ </div>
450
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
451
+ <label class="block text-sm font-medium text-gray-700 mb-2">Độ Tương Phản</label>
452
+ <input type="range" min="0" max="100" value="50" class="w-full slider-thumb">
453
+ </div>
454
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
455
+ <label class="block text-sm font-medium text-gray-700 mb-2">Độ Bão Hòa Màu</label>
456
+ <input type="range" min="0" max="100" value="50" class="w-full slider-thumb">
457
+ </div>
458
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
459
+ <label class="block text-sm font-medium text-gray-700 mb-2">Độ Sắc Nét</label>
460
+ <input type="range" min="0" max="100" value="50" class="w-full slider-thumb">
461
+ </div>
462
+ </div>
463
+
464
+ <!-- White Balance -->
465
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
466
+ <label class="block text-sm font-medium text-gray-700 mb-2">Cân Bằng Trắng</label>
467
+ <div class="grid grid-cols-2 md:grid-cols-4 gap-3 mt-3">
468
+ <button class="px-3 py-2 bg-blue-500 text-white rounded-lg text-sm">Auto</button>
469
+ <button class="px-3 py-2 bg-gray-200 text-gray-700 rounded-lg text-sm">Sunny</button>
470
+ <button class="px-3 py-2 bg-gray-200 text-gray-700 rounded-lg text-sm">Cloudy</button>
471
+ <button class="px-3 py-2 bg-gray-200 text-gray-700 rounded-lg text-sm">Fluorescent</button>
472
+ </div>
473
+ </div>
474
+
475
+ <!-- Exposure Settings -->
476
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
477
+ <label class="block text-sm font-medium text-gray-700 mb-2">Phơi Sáng</label>
478
+ <div class="flex items-center justify-between mb-3">
479
+ <span class="text-sm">Chế Độ</span>
480
+ <select class="border rounded px-2 py-1 text-sm">
481
+ <option selected>Auto</option>
482
+ <option>Manual</option>
483
+ </select>
484
+ </div>
485
+
486
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4 mt-3">
487
+ <div>
488
+ <label class="block text-sm font-medium text-gray-700 mb-1">Thời Gian Phơi Sáng</label>
489
+ <select class="w-full border rounded px-3 py-2 text-sm">
490
+ <option>1/30s</option>
491
+ <option>1/60s</option>
492
+ <option>1/120s</option>
493
+ <option>1/250s</option>
494
+ </select>
495
+ </div>
496
+ <div>
497
+ <label class="block text-sm font-medium text-gray-700 mb-1">Độ Nhạy Sáng (Gain)</label>
498
+ <input type="range" min="0" max="100" value="50" class="w-full slider-thumb">
499
+ </div>
500
+ </div>
501
+ </div>
502
+ </div>
503
+
504
+ <div class="space-y-6">
505
+ <!-- Image Preview -->
506
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
507
+ <label class="block text-sm font-medium text-gray-700 mb-2">Xem Trước Hình Ảnh</label>
508
+ <div class="preview-box w-full h-64 rounded-lg bg-gray-100 flex items-center justify-center">
509
+ <div class="text-center">
510
+ <i class="fas fa-image text-gray-400 text-3xl mb-2"></i>
511
+ <p class="text-gray-500 text-sm">Hình ảnh sẽ hiển thị tại đây</p>
512
+ </div>
513
+ </div>
514
+ <button class="mt-3 w-full bg-blue-500 hover:bg-blue-600 text-white py-2 rounded-lg text-sm">
515
+ <i class="fas fa-sync-alt mr-2"></i> Làm Mới Xem Trước
516
+ </button>
517
+ </div>
518
+
519
+ <!-- Image Presets -->
520
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
521
+ <label class="block text-sm font-medium text-gray-700 mb-2">Cài Đặt Trước</label>
522
+ <select class="w-full border rounded px-3 py-2 mb-3">
523
+ <option selected>Chọn cài đặt trước...</option>
524
+ <option>Trong Nhà</option>
525
+ <option>Ngoài Trời</option>
526
+ <option>Ban Đêm</option>
527
+ <option>Ánh Sáng Yếu</option>
528
+ </select>
529
+ <button class="w-full bg-gray-200 hover:bg-gray-300 text-gray-800 py-2 rounded-lg text-sm">
530
+ <i class="fas fa-save mr-2"></i> Lưu Cài Đặt Hiện Tại
531
+ </button>
532
+ </div>
533
+ </div>
534
+ </div>
535
+ </div>
536
+
537
+ <!-- Stream Configuration Content -->
538
+ <div id="stream-tab" class="tab-content p-6">
539
+ <div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
540
+ <div class="lg:col-span-2 space-y-6">
541
+ <!-- Stream Type -->
542
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
543
+ <label class="block text-sm font-medium text-gray-700 mb-2">Loại Stream</label>
544
+ <div class="flex space-x-4">
545
+ <button class="px-4 py-2 bg-blue-500 text-white rounded-lg">Unicast</button>
546
+ <button class="px-4 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300">Multicast</button>
547
+ </div>
548
+ </div>
549
+
550
+ <!-- Protocol Settings -->
551
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
552
+ <label class="block text-sm font-medium text-gray-700 mb-2">Giao Thức</label>
553
+ <select class="w-full border rounded px-3 py-2">
554
+ <option selected>RTSP</option>
555
+ <option>RTP-UDP</option>
556
+ <option>RTP-TCP</option>
557
+ <option>HTTP</option>
558
+ </select>
559
+ </div>
560
+
561
+ <!-- Port Settings -->
562
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
563
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
564
+ <label class="block text-sm font-medium text-gray-700 mb-2">Cổng RTSP</label>
565
+ <input type="number" value="554" class="w-full border rounded px-3 py-2">
566
+ </div>
567
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
568
+ <label class="block text-sm font-medium text-gray-700 mb-2">Cổng HTTP</label>
569
+ <input type="number" value="80" class="w-full border rounded px-3 py-2">
570
+ </div>
571
+ </div>
572
+
573
+ <!-- Multicast Settings -->
574
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
575
+ <label class="block text-sm font-medium text-gray-700 mb-2">Cài Đặt Multicast</label>
576
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4 mt-3">
577
+ <div>
578
+ <label class="block text-sm font-medium text-gray-700 mb-1">Địa Chỉ IP</label>
579
+ <input type="text" value="239.255.0.1" class="w-full border rounded px-3 py-2">
580
+ </div>
581
+ <div>
582
+ <label class="block text-sm font-medium text-gray-700 mb-1">Cổng</label>
583
+ <input type="number" value="5004" class="w-full border rounded px-3 py-2">
584
+ </div>
585
+ </div>
586
+ <div class="mt-3">
587
+ <label class="block text-sm font-medium text-gray-700 mb-1">TTL</label>
588
+ <input type="range" min="1" max="255" value="32" class="w-full slider-thumb">
589
+ </div>
590
+ </div>
591
+
592
+ <!-- Authentication -->
593
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
594
+ <label class="block text-sm font-medium text-gray-700 mb-2">Xác Thực</label>
595
+ <div class="flex items-center justify-between mb-3">
596
+ <span class="text-sm">Bật Xác Thực</span>
597
+ <label class="relative inline-flex items-center cursor-pointer">
598
+ <input type="checkbox" class="sr-only peer" checked>
599
+ <div class="w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-blue-500"></div>
600
+ </label>
601
+ </div>
602
+
603
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4 mt-3">
604
+ <div>
605
+ <label class="block text-sm font-medium text-gray-700 mb-1">Tên Đăng Nhập</label>
606
+ <input type="text" value="admin" class="w-full border rounded px-3 py-2">
607
+ </div>
608
+ <div>
609
+ <label class="block text-sm font-medium text-gray-700 mb-1">Mật Khẩu</label>
610
+ <input type="password" value="password" class="w-full border rounded px-3 py-2">
611
+ </div>
612
+ </div>
613
+ </div>
614
+ </div>
615
+
616
+ <div class="space-y-6">
617
+ <!-- Stream Info -->
618
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
619
+ <label class="block text-sm font-medium text-gray-700 mb-2">Thông Tin Stream</label>
620
+ <div class="bg-gray-100 p-3 rounded-lg">
621
+ <p class="text-sm font-mono break-all">
622
+ rtsp://admin:password@192.168.1.100:554/Streaming/Channels/101
623
+ </p>
624
+ </div>
625
+ <button class="mt-3 w-full bg-blue-500 hover:bg-blue-600 text-white py-2 rounded-lg text-sm">
626
+ <i class="fas fa-copy mr-2"></i> Sao Chép URL
627
+ </button>
628
+ </div>
629
+
630
+ <!-- Stream Status -->
631
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
632
+ <label class="block text-sm font-medium text-gray-700 mb-2">Trạng Thái Stream</label>
633
+ <div class="space-y-3">
634
+ <div class="flex justify-between">
635
+ <span class="text-sm">Trạng Thái:</span>
636
+ <span class="text-sm font-medium text-green-600">Đang Hoạt Động</span>
637
+ </div>
638
+ <div class="flex justify-between">
639
+ <span class="text-sm">Băng Thông:</span>
640
+ <span class="text-sm font-medium">2.1 Mbps</span>
641
+ </div>
642
+ <div class="flex justify-between">
643
+ <span class="text-sm">Độ Trễ:</span>
644
+ <span class="text-sm font-medium">120ms</span>
645
+ </div>
646
+ <div class="flex justify-between">
647
+ <span class="text-sm">Gói Tin Mất:</span>
648
+ <span class="text-sm font-medium">0.2%</span>
649
+ </div>
650
+ </div>
651
+ </div>
652
+
653
+ <!-- Stream Test -->
654
+ <div class="config-card bg-white p-4 rounded-lg border border-gray-200">
655
+ <label class="block text-sm font-medium text-gray-700 mb-2">Kiểm Tra Stream</label>
656
+ <button class="w-full bg-blue-500 hover:bg-blue-600 text-white py-2 rounded-lg text-sm mb-2">
657
+ <i class="fas fa-play mr-2"></i> Phát Stream
658
+ </button>
659
+ <button class="w-full bg-gray-200 hover:bg-gray-300 text-gray-800 py-2 rounded-lg text-sm">
660
+ <i class="fas fa-stop mr-2"></i> Dừng Stream
661
+ </button>
662
+ </div>
663
+ </div>
664
+ </div>
665
+ </div>
666
+ </div>
667
+
668
+ <!-- Comparison & Actions -->
669
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
670
+ <div class="bg-white rounded-xl shadow p-6">
671
+ <h2 class="text-lg font-semibold mb-4 text-gray-800">
672
+ <i class="fas fa-balance-scale mr-2 text-blue-500"></i> So Sánh Cấu Hình
673
+ </h2>
674
+ <table class="w-full text-sm">
675
+ <thead>
676
+ <tr class="border-b">
677
+ <th class="text-left py-2">Thông Số</th>
678
+ <th class="text-left py-2">Hiện Tại</th>
679
+ <th class="text-left py-2">Đề Xuất</th>
680
+ </tr>
681
+ </thead>
682
+ <tbody>
683
+ <tr class="border-b">
684
+ <td class="py-2">Độ Phân Giải</td>
685
+ <td class="py-2">1920x1080</td>
686
+ <td class="py-2 text-green-600">1920x1080</td>
687
+ </tr>
688
+ <tr class="border-b">
689
+ <td class="py-2">FPS</td>
690
+ <td class="py-2">25</td>
691
+ <td class="py-2 text-green-600">20</td>
692
+ </tr>
693
+ <tr class="border-b">
694
+ <td class="py-2">Bitrate</td>
695
+ <td class="py-2">2048 Kbps</td>
696
+ <td class="py-2 text-green-600">1536 Kbps</td>
697
+ </tr>
698
+ <tr>
699
+ <td class="py-2">Lưu Trữ/ngày</td>
700
+ <td class="py-2">7.2 GB</td>
701
+ <td class="py-2 text-green-600">5.5 GB</td>
702
+ </tr>
703
+ </tbody>
704
+ </table>
705
+ </div>
706
+
707
+ <div class="bg-white rounded-xl shadow p-6">
708
+ <h2 class="text-lg font-semibold mb-4 text-gray-800">
709
+ <i class="fas fa-tasks mr-2 text-blue-500"></i> Hành Động
710
+ </h2>
711
+ <div class="space-y-3">
712
+ <button class="w-full bg-blue-500 hover:bg-blue-600 text-white py-2 rounded-lg flex items-center justify-center">
713
+ <i class="fas fa-check-circle mr-2"></i> Áp Dụng Cho Thiết Bị Này
714
+ </button>
715
+ <button class="w-full bg-green-500 hover:bg-green-600 text-white py-2 rounded-lg flex items-center justify-center">
716
+ <i class="fas fa-layer-group mr-2"></i> Áp Dụng Cho Toàn Khu Vực
717
+ </button>
718
+ <button class="w-full bg-gray-200 hover:bg-gray-300 text-gray-800 py-2 rounded-lg flex items-center justify-center">
719
+ <i class="fas fa-file-export mr-2"></i> Xuất Cấu Hình
720
+ </button>
721
+ <button class="w-full bg-gray-200 hover:bg-gray-300 text-gray-800 py-2 rounded-lg flex items-center justify-center">
722
+ <i class="fas fa-file-import mr-2"></i> Nhập Cấu Hình
723
+ </button>
724
+ </div>
725
+ </div>
726
+ </div>
727
+ </div>
728
+ </div>
729
+ </div>
730
+
731
+ <script>
732
+ // Tab switching functionality
733
+ const tabs = document.querySelectorAll('nav button[data-tab]');
734
+ tabs.forEach(tab => {
735
+ tab.addEventListener('click', () => {
736
+ // Update tab styling
737
+ tabs.forEach(t => {
738
+ t.classList.remove('tab-active', 'text-blue-500', 'border-blue-500');
739
+ t.classList.add('text-gray-500', 'border-transparent');
740
+ });
741
+ tab.classList.add('tab-active', 'text-blue-500', 'border-blue-500');
742
+ tab.classList.remove('text-gray-500', 'border-transparent');
743
+
744
+ // Show corresponding content
745
+ const tabId = tab.getAttribute('data-tab');
746
+ document.querySelectorAll('.tab-content').forEach(content => {
747
+ content.classList.remove('active');
748
+ });
749
+ document.getElementById(`${tabId}-tab`).classList.add('active');
750
+ });
751
+ });
752
+
753
+ // Slider value display
754
+ const sliders = document.querySelectorAll('input[type="range"]');
755
+ sliders.forEach(slider => {
756
+ const valueDisplay = slider.nextElementSibling?.querySelector('input[type="number"]');
757
+ if (valueDisplay) {
758
+ slider.addEventListener('input', () => {
759
+ valueDisplay.value = slider.value;
760
+ });
761
+ valueDisplay.addEventListener('input', () => {
762
+ slider.value = valueDisplay.value;
763
+ });
764
+ }
765
+ });
766
+
767
+ // Hierarchy item click
768
+ const hierarchyItems = document.querySelectorAll('.hierarchy-item');
769
+ hierarchyItems.forEach(item => {
770
+ item.addEventListener('click', () => {
771
+ // In a real app, this would load the configuration for the selected item
772
+ console.log('Selected:', item.textContent.trim());
773
+ });
774
+ });
775
+
776
+ // Toggle switches
777
+ const toggleSwitches = document.querySelectorAll('input[type="checkbox"].peer');
778
+ toggleSwitches.forEach(switchEl => {
779
+ switchEl.addEventListener('change', (e) => {
780
+ console.log('Toggle changed:', e.target.checked);
781
+ });
782
+ });
783
+ </script>
784
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=daoan1412/camera-conf" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
785
+ </html>