I 
		
				
			
		InfinityFree
Curioso
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
		¡Hola comunidad de FotoBeta! 😄
Antes que nada, un enorme saludo a todos los que hacen este foro un espacio tan útil, lleno de conocimiento y buena vibra.
Hoy vengo a pedir una ayudita —y también a compartir mi pequeño experimento con MEGA.
Estoy trabajando en un Direct Link Proxy para archivos de MEGA, con el objetivo de generar un enlace de transmisión (streaming) en lugar de forzar una descarga directa.
Por ahora, tengo un código funcional (bastante completo) que realiza todo el proceso de debug, obtiene la información pública del archivo, muestra la URL original y hasta crea un pequeño reproductor HTML5 para pruebas.
El archivo principal es index.php, y este es su contenido:
	
	
	
		
megaapi.php
El archivo se obtiene correctamente, la URL pública se genera bien, pero el reproductor HTML5 no logra reproducir el contenido de MEGA directamente.
Carga, sí, pero no empieza a reproducir (posiblemente por los headers o por cómo MEGA entrega el archivo).
👉 Mi duda principal:
Sospecho que hay algo que deba configurarse en el Content-Type o en el manejo de rangos (206 Partial Content), pero no lo tengo del todo claro.
A los programadores de todos los niveles —principiantes, intermedios y expertos— les agradecería muchísimo si pudieran darme una mano o compartir su experiencia.
Prometo mantener el hilo actualizado con cualquier avance o corrección que logre aplicar.
Gracias de corazón por su tiempo y atención.
¡Un abrazo a todos los que hacen que FotoBeta sea un espacio de aprendizaje increíble! ❤️
— InfinityFree
	
		
			
		
		
	
				
			Antes que nada, un enorme saludo a todos los que hacen este foro un espacio tan útil, lleno de conocimiento y buena vibra.
Hoy vengo a pedir una ayudita —y también a compartir mi pequeño experimento con MEGA.
🧩 Contexto:
Estoy trabajando en un Direct Link Proxy para archivos de MEGA, con el objetivo de generar un enlace de transmisión (streaming) en lugar de forzar una descarga directa.
Por ahora, tengo un código funcional (bastante completo) que realiza todo el proceso de debug, obtiene la información pública del archivo, muestra la URL original y hasta crea un pequeño reproductor HTML5 para pruebas.
El archivo principal es index.php, y este es su contenido:
		Insertar CODE, HTML o PHP:
	
	<?php
include "megaapi.php";
// Se for request de streaming
if (isset($_GET['stream'])) {
    header('Content-Type: text/html; charset=utf-8');
    
    $megaUrl = 'https://mega.nz/file/AzUU2TrA#itkdCOsAgElwR87fC28q6JU3aFVwxnvBtzDya2-IiFo';
    
    echo "<!DOCTYPE html><html><head><title>DEBUG MEGA STREAM</title></head><body>";
    echo "<h1>🔍 DEBUG MEGA STREAM</h1>";
    
    try {
        // Primeiro vamos obter a URL do MEGA
        $mega = new MEGA();
        
        echo "<h2>1. Parsing MEGA Link</h2>";
        preg_match('/mega\.nz\/file\/([a-zA-Z0-9]+)#([a-zA-Z0-9_,\-]+)/', $megaUrl, $matches);
        
        if (count($matches) < 3) {
            die("❌ Link MEGA inválido");
        }
        
        $ph = $matches[1];
        $key = $matches[2];
        
        echo "<p><strong>Public Handle:</strong> $ph</p>";
        echo "<p><strong>Key:</strong> " . substr($key, 0, 20) . "...</p>";
        
        echo "<h2>2. Obtendo informações do arquivo</h2>";
        $fileInfo = $mega->public_file_info($ph, $key, true);
        
        echo "<pre>" . print_r($fileInfo, true) . "</pre>";
        
        if (!$fileInfo || !isset($fileInfo['g'])) {
            die("❌ Não foi possível obter URL de streaming");
        }
        
        $streamUrl = $fileInfo['g'];
        $filename = $fileInfo['at']['n'] ?? 'video.mp4';
        $size = $fileInfo['s'] ?? 0;
        
        echo "<h2>3. URL ORIGINAL DO MEGA</h2>";
        echo "<p><strong>URL:</strong> <a href='$streamUrl' target='_blank'>$streamUrl</a></p>";
        echo "<p><strong>Filename:</strong> $filename</p>";
        echo "<p><strong>Size:</strong> " . number_format($size) . " bytes</p>";
        
        echo "<h2>4. Testando acesso à URL</h2>";
        
        // Testar se a URL é acessível
        $ch = curl_init($streamUrl);
        curl_setopt_array($ch, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HEADER => true,
            CURLOPT_NOBODY => true,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_TIMEOUT => 10,
            CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
        ]);
        
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
        $contentLength = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
        
        curl_close($ch);
        
        echo "<p><strong>HTTP Code:</strong> $httpCode</p>";
        echo "<p><strong>Content Type:</strong> $contentType</p>";
        echo "<p><strong>Content Length:</strong> $contentLength bytes</p>";
        
        echo "<h2>5. Player de Teste</h2>";
        echo "<video controls width='800' autoplay muted>";
        echo "<source src='$streamUrl' type='video/mp4'>";
        echo "Seu navegador não suporta vídeo HTML5.";
        echo "</video>";
        
        echo "<h2>6. Link Direto</h2>";
        echo "<p><a href='$streamUrl' target='_blank'>🔗 Abrir URL do MEGA diretamente</a></p>";
        
    } catch (Exception $e) {
        echo "<h2 style='color: red;'>❌ ERRO</h2>";
        echo "<p><strong>Mensagem:</strong> " . $e->getMessage() . "</p>";
        echo "<p><strong>Arquivo:</strong> " . $e->getFile() . "</p>";
        echo "<p><strong>Linha:</strong> " . $e->getLine() . "</p>";
    }
    
    echo "</body></html>";
    exit;
}
// Página principal simplificada
?>
<!DOCTYPE html>
<html>
<head>
    <title>MEGA Stream - Debug</title>
    <style>
        body { margin: 20px; font-family: Arial; }
        .debug-info { background: #f0f0f0; padding: 15px; margin: 10px 0; }
    </style>
</head>
<body>
    <h1>🎬 MEGA Stream Debug</h1>
    
    <div class="debug-info">
        <h3>🔍 Opções de Debug:</h3>
        <ul>
            <li><a href="?stream=1" target="_blank">Ver URL original do MEGA</a></li>
            <li><a href="mega_debug.php?stream=1" target="_blank">Página de debug completa</a></li>
        </ul>
    </div>
    <video controls width="800" preload="metadata">
        <source src="?stream=1" type="video/mp4">
        Seu navegador não suporta vídeo HTML5.
    </video>
    <div class="debug-info">
        <h3>📊 Informações Técnicas:</h3>
        <p><strong>Status do Streaming:</strong> 206 Partial Content ✅</p>
        <p><strong>Problema:</strong> Player carrega mas não reproduz</p>
        <p><strong>Solução:</strong> Precisamos ver a URL original do MEGA</p>
    </div>
    <script>
        const video = document.querySelector('video');
        
        video.addEventListener('error', (e) => {
            console.error('❌ Video Error:', video.error);
            alert('Erro no vídeo: ' + video.error.message);
        });
        
        video.addEventListener('loadeddata', () => {
            console.log('✅ Video loaded successfully');
        });
        
        video.addEventListener('stalled', () => {
            console.log('⚠️ Video stalled - buffering issues');
        });
    </script>
</body>
</html>
	megaapi.php
⚙️ Lo que necesito:
El archivo se obtiene correctamente, la URL pública se genera bien, pero el reproductor HTML5 no logra reproducir el contenido de MEGA directamente.
Carga, sí, pero no empieza a reproducir (posiblemente por los headers o por cómo MEGA entrega el archivo).
👉 Mi duda principal:
¿Cómo puedo ajustar los encabezados o la forma de solicitud para que el enlace funcione como “transmisión” y no como descarga?
Sospecho que hay algo que deba configurarse en el Content-Type o en el manejo de rangos (206 Partial Content), pero no lo tengo del todo claro.
💬 Invitación:
A los programadores de todos los niveles —principiantes, intermedios y expertos— les agradecería muchísimo si pudieran darme una mano o compartir su experiencia.
Prometo mantener el hilo actualizado con cualquier avance o corrección que logre aplicar.
Gracias de corazón por su tiempo y atención.
¡Un abrazo a todos los que hacen que FotoBeta sea un espacio de aprendizaje increíble! ❤️
— InfinityFree