fix video

This commit is contained in:
Francesco Picone
2025-12-09 16:46:59 +01:00
parent 625acba431
commit e7ea7dbd3b
5 changed files with 320 additions and 30 deletions

View File

@@ -134,30 +134,67 @@ $can_view = $lesson['is_demo'] || $user_owns;
style="border-radius: 8px;"></iframe>
<?php endif; ?>
<?php else: ?>
<!-- Video locale o altro -->
<!-- Video locale protetto -->
<?php
// Determina il percorso completo del video
$video_path = $lesson['video_url'];
// Se il percorso non inizia con http, aggiungi il SITE_URL
if (!preg_match('/^https?:\/\//', $video_path)) {
// Rimuovi eventuali slash iniziali
$video_path = ltrim($video_path, '/');
$video_path = SITE_URL . '/' . $video_path;
}
// Determina il tipo MIME dal file
$extension = strtolower(pathinfo($lesson['video_url'], PATHINFO_EXTENSION));
$mime_types = [
'mp4' => 'video/mp4',
'webm' => 'video/webm',
'ogg' => 'video/ogg',
'mov' => 'video/quicktime'
];
$mime_type = $mime_types[$extension] ?? 'video/mp4';
// Usa lo stream protetto per i video locali
$stream_url = SITE_URL . '/stream_video.php?lesson_id=' . $lesson_id;
?>
<video controls width="100%" height="100%" style="border-radius: 8px;" preload="metadata">
<source src="<?php echo htmlspecialchars($video_path); ?>" type="<?php echo $mime_type; ?>">
Il tuo browser non supporta il tag video.
<video
id="videoPlayer"
controls
controlslist="nodownload"
width="100%"
height="100%"
style="border-radius: 8px; background: #000;"
preload="auto"
playsinline
oncontextmenu="return false;">
<source src="<?php echo htmlspecialchars($stream_url); ?>" type="video/mp4">
<p style="color: white; padding: 20px;">
Il tuo browser non supporta la riproduzione video.<br>
Prova ad aggiornare il browser o usa Chrome/Firefox.
</p>
</video>
<script>
(function() {
var video = document.getElementById('videoPlayer');
// Disabilita tasto destro sul video
video.addEventListener('contextmenu', function(e) {
e.preventDefault();
return false;
});
// Debug: mostra errori del video
video.addEventListener('error', function(e) {
console.error('Errore video:', e);
var errorMsg = 'Errore nel caricamento del video.';
if (video.error) {
switch (video.error.code) {
case 1: errorMsg = 'Caricamento video interrotto.'; break;
case 2: errorMsg = 'Errore di rete nel caricamento.'; break;
case 3: errorMsg = 'Errore nella decodifica del video.'; break;
case 4: errorMsg = 'Formato video non supportato.'; break;
}
}
alert(errorMsg + ' Ricarica la pagina o contatta il supporto.');
});
// Conferma quando il video è pronto
video.addEventListener('loadedmetadata', function() {
console.log('Video caricato correttamente');
this.controlsList.add('nodownload');
});
// Disabilita screenshot (limitato)
document.addEventListener('keyup', function(e) {
if (e.key === 'PrintScreen') {
navigator.clipboard.writeText('');
alert('Gli screenshot sono disabilitati per questo contenuto.');
}
});
})();
</script>
<?php endif; ?>
<?php else: ?>
<div style="display: flex; align-items: center; justify-content: center; height: 100%; color: white;">