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);
}
};
function createVideoElement(id, source, target, path) {
let container = document.createElement("div");
container.className = "video";
container.id = id;
container.innerHTML = `
${path}
 | 0 Anz |
 | 0 fps |
 | 0 Q |
 | 0 MB |
 | 0 Mb/s |
 | 0 x |
| |
| |
|
|
`;
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 || '---';
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) {
progressBar.style.background = "#4caf50";
container.querySelector(".finished").textContent = "Fertig";
} else {
progressBar.style.background = "linear-gradient(90deg, #4caf50, #00c853)";
container.querySelector(".finished").textContent = "Läuft";
}
}