diff --git a/api/upload_media.php b/api/upload_media.php index 52ba6ea..856e44f 100644 --- a/api/upload_media.php +++ b/api/upload_media.php @@ -108,9 +108,12 @@ try { try { $convertedName = uniqid('media_', true) . '.ogg'; $convertedPath = $uploadDir . $convertedName; - // Convertir a Opus (bitrate moderado) - $cmd = escapeshellcmd($ffmpeg) . ' -y -i ' . escapeshellarg($uploadPath) . ' -c:a libopus -b:a 64000 ' . escapeshellarg($convertedPath) . ' 2>&1'; + // Convertir a Opus (bitrate moderado). Forzamos formato OGG, mono 48kHz y mapeamos la primera pista de audio. + // Esto ayuda a evitar contenedores/streams extra que pueden causar que el archivo suene como ruido. + $cmd = escapeshellcmd($ffmpeg) . ' -y -i ' . escapeshellarg($uploadPath) . ' -map 0:a:0 -c:a libopus -b:a 64k -vbr on -ar 48000 -ac 1 -f ogg ' . escapeshellarg($convertedPath) . ' 2>&1'; $out = @shell_exec($cmd); + // Añadir comprobación diagnóstica con "ffmpeg -i" sobre el archivo convertido para registrar detalles del stream + $probe = @shell_exec(escapeshellcmd($ffmpeg) . ' -i ' . escapeshellarg($convertedPath) . ' 2>&1'); if (file_exists($convertedPath) && filesize($convertedPath) > 0) { // Reemplazar archivo original por el convertido @unlink($uploadPath); @@ -120,9 +123,12 @@ try { $converted = true; error_log('upload_media.php - Audio convertido a OGG/Opus: ' . $convertedName); error_log('upload_media.php - ffmpeg output: ' . substr($out ?: '', 0, 2000)); + error_log('upload_media.php - ffmpeg probe: +' . substr($probe ?: '', 0, 2000)); } else { $conversion_error = 'Conversion failed or no output'; error_log('upload_media.php - Falló conversión con ffmpeg. Output: ' . substr($out ?: '', 0, 2000)); + error_log('upload_media.php - ffmpeg probe after failure:\n' . substr($probe ?: '', 0, 2000)); } } catch (Exception $ex) { $conversion_error = 'Conversion exception: ' . $ex->getMessage();