let ws = new WebSocket("ws://127.0.0.1:8000/ws"); let videoQueue = {}; // Hier speichern wir alle laufenden Videos ws.onmessage = function(event) { try { let message = JSON.parse(event.data); // Falls das Video noch nicht existiert, erstelle ein neues Element if (!videoQueue[message.id]) { videoQueue[message.id] = createVideoElement(message.id, message.source, message.target, message.path); } // Update der UI updateVideoElement(message.id, message); } catch (e) { console.error("Fehler beim Parsen der WebSocket-Nachricht:", e, event.data); } }; ws.onerror = function(event) { console.error("WebSocket Fehler:", event); }; function sekundenInStundenMinuten(sekunden) { const stunden = Math.floor(sekunden / 3600); // 1 Stunde = 3600 Sekunden const minuten = Math.floor((sekunden % 3600) / 60); // Restsekunden in Minuten umrechnen const verbleibendeSekunden = sekunden % 60; // Übrige Sekunden return `${stunden} Stunden, ${minuten} Minuten, ${verbleibendeSekunden} Sekunden`; } function createVideoElement(id, source, target, path) { let container = document.createElement("div"); container.className = "video"; container.id = id; container.innerHTML = `
${source}    ➝    ${target}
${path}
0 Anz
0 fps
0 Q
0 MB
0 Mb/s
0 x
0
`; document.getElementById("videos").appendChild(container); return container; } function updateVideoElement(id, data) { let container = document.getElementById(id); if (!container) return; container.querySelector(".frame").textContent = data.frame || '---'; container.querySelector(".fps").textContent = data.fps || '---'; container.querySelector(".q").textContent = data.q || '---'; container.querySelector(".size").textContent = data.size || '---'; container.querySelector(".bitrate").textContent = data.bitrate || '---'; container.querySelector(".speed").textContent = data.speed || '---'; container.querySelector(".time_remaining").textContent = data.time_remaining || '---'; let progressBar = container.querySelector(".progress-bar"); let progress = data.loading; // Annahme: `loading` kommt als Zahl von 0 bis 100 progressBar.style.width = progress + "%" if (data.finished == 0) { progressBar.style.background = "linear-gradient(90deg, #4caf50, #00c853)"; container.querySelector(".finished").textContent = "Läuft"; } else if(data.finished == 1) { progressBar.style.background = "#4caf50"; container.querySelector(".finished").textContent = "Fertig"; } else { progressBar.style.background = "#ff0000"; container.querySelector(".finished").textContent = "Fehler"; } }