Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>ScreenStream Studio 📹</title> | |
| <link rel="icon" type="image/x-icon" href="/static/favicon.ico"> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> | |
| <script src="https://unpkg.com/feather-icons"></script> | |
| <link rel="stylesheet" href="style.css"> | |
| <script> | |
| tailwind.config = { | |
| theme: { | |
| extend: { | |
| colors: { | |
| primary: '#3B82F6', | |
| secondary: '#10B981' | |
| } | |
| } | |
| } | |
| } | |
| </script> | |
| </head> | |
| <body class="bg-gray-50 min-h-screen"> | |
| <custom-header></custom-header> | |
| <main class="container mx-auto px-4 py-8"> | |
| <!-- Live Preview Section --> | |
| <section class="mb-8"> | |
| <div class="bg-white rounded-xl shadow-lg p-6"> | |
| <h2 class="text-2xl font-bold text-gray-800 mb-4 flex items-center gap-2"> | |
| <i data-feather="video"></i> | |
| Live Preview | |
| </h2> | |
| <div id="livePreview" class="aspect-video bg-gray-900 rounded-lg overflow-hidden flex items-center justify-center"> | |
| <img id="thumbnail" src="" alt="Live Camera Feed" class="w-full h-full object-contain hidden"> | |
| <div id="noFeed" class="text-gray-400 text-center"> | |
| <i data-feather="camera-off" class="w-16 h-16 mx-auto mb-2"></i> | |
| <p>Camera is not recording</p> | |
| </div> | |
| </div> | |
| <div class="mt-4 flex items-center justify-between"> | |
| <div id="recordingStatus" class="flex items-center gap-2"> | |
| <div id="statusDot" class="w-3 h-3 bg-red-500 rounded-full animate-pulse hidden"></div> | |
| <span id="statusText" class="text-gray-600">Not Recording</span> | |
| </div> | |
| <div id="duration" class="text-gray-600 font-mono"></div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Controls Section --> | |
| <section class="mb-8"> | |
| <div class="bg-white rounded-xl shadow-lg p-6"> | |
| <h2 class="text-2xl font-bold text-gray-800 mb-4 flex items-center gap-2"> | |
| <i data-feather="settings"></i> | |
| Recording Controls | |
| </h2> | |
| <div class="grid grid-cols-1 md:grid-cols-2 gap-4"> | |
| <div> | |
| <label for="filename" class="block text-sm font-medium text-gray-700 mb-2"> | |
| Filename | |
| </label> | |
| <input type="text" id="filename" placeholder="recording_001" | |
| class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent"> | |
| </div> | |
| <div> | |
| <label for="format" class="block text-sm font-medium text-gray-700 mb-2"> | |
| Format | |
| </label> | |
| <select id="format" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent"> | |
| <option value="mkv">MKV</option> | |
| <option value="mp4">MP4</option> | |
| <option value="webm">WebM</option> | |
| <option value="avi">AVI</option> | |
| <option value="mov">MOV</option> | |
| </select> | |
| </div> | |
| </div> | |
| <div class="flex gap-3 mt-6"> | |
| <button id="startBtn" | |
| class="flex-1 bg-primary hover:bg-blue-600 text-white py-3 px-6 rounded-lg font-semibold transition-colors flex items-center justify-center gap-2"> | |
| <i data-feather="play"></i> | |
| Start Recording | |
| </button> | |
| <button id="stopBtn" | |
| class="flex-1 bg-red-500 hover:bg-red-600 text-white py-3 px-6 rounded-lg font-semibold transition-colors flex items-center justify-center gap-2" | |
| disabled> | |
| <i data-feather="square"></i> | |
| Stop Recording | |
| </button> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Recordings Section --> | |
| <section> | |
| <div class="bg-white rounded-xl shadow-lg p-6"> | |
| <h2 class="text-2xl font-bold text-gray-800 mb-4 flex items-center gap-2"> | |
| <i data-feather="film"></i> | |
| Recorded Videos | |
| </h2> | |
| <div id="recordingsList" class="space-y-3"> | |
| <!-- Recordings will be populated here --> | |
| </div> | |
| </div> | |
| </section> | |
| </main> | |
| <custom-footer></custom-footer> | |
| <script src="components/header.js"></script> | |
| <script src="components/footer.js"></script> | |
| <script src="script.js"></script> | |
| <script> | |
| feather.replace(); | |
| </script> | |
| <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script> | |
| </body> | |
| </html> |