fix video
This commit is contained in:
79
lesson.php
79
lesson.php
@@ -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;">
|
||||
|
||||
Reference in New Issue
Block a user