diff --git a/frontend/js/views/content-library.js b/frontend/js/views/content-library.js
index 3049c96..fc9c16c 100644
--- a/frontend/js/views/content-library.js
+++ b/frontend/js/views/content-library.js
@@ -473,7 +473,7 @@ function showPreview(content) {
${isYoutube
- ? `
`
+ ? `
`
: isVideo
? `
`
: `

`
diff --git a/server/player/index.html b/server/player/index.html
index d11f640..190004a 100644
--- a/server/player/index.html
+++ b/server/player/index.html
@@ -504,6 +504,16 @@
}
// ==================== Content Rendering ====================
+ function fixYoutubeUrl(url) {
+ try {
+ const u = new URL(url);
+ if (!u.searchParams.has('mute')) u.searchParams.set('mute', '1');
+ if (!u.searchParams.has('enablejsapi')) u.searchParams.set('enablejsapi', '1');
+ if (!u.searchParams.has('origin')) u.searchParams.set('origin', window.location.origin);
+ return u.toString();
+ } catch { return url; }
+ }
+
function renderContent(item) {
const container = document.getElementById('playerContainer');
container.style.display = 'block';
@@ -522,7 +532,7 @@
// Fullscreen
if (isYoutube) {
const iframe = document.createElement('iframe');
- iframe.src = src;
+ iframe.src = fixYoutubeUrl(src);
iframe.allow = 'autoplay; encrypted-media';
iframe.allowFullscreen = true;
iframe.style.cssText = 'width:100%;height:100%;border:none;background:#000';
@@ -584,7 +594,7 @@
div.appendChild(iframe);
} else if (isYoutubeZone) {
const iframe = document.createElement('iframe');
- iframe.src = src;
+ iframe.src = fixYoutubeUrl(src);
iframe.allow = 'autoplay; encrypted-media';
iframe.allowFullscreen = true;
iframe.style.cssText = 'width:100%;height:100%;border:none';
diff --git a/server/routes/content.js b/server/routes/content.js
index 6e4eb84..b86d854 100644
--- a/server/routes/content.js
+++ b/server/routes/content.js
@@ -150,7 +150,7 @@ router.post('/youtube', (req, res) => {
if (!videoId) return res.status(400).json({ error: 'Invalid YouTube URL' });
const id = uuidv4();
- const embedUrl = `https://www.youtube.com/embed/${videoId}?autoplay=1&controls=0&rel=0&modestbranding=1&loop=1&playlist=${videoId}`;
+ const embedUrl = `https://www.youtube.com/embed/${videoId}?autoplay=1&mute=1&controls=0&rel=0&modestbranding=1&loop=1&playlist=${videoId}&enablejsapi=1&origin=${encodeURIComponent(req.protocol + '://' + req.get('host'))}`;
const thumbnailUrl = `https://img.youtube.com/vi/${videoId}/hqdefault.jpg`;
const filename = name || `YouTube: ${videoId}`;