+5
-42
@@ -372,9 +372,6 @@ if (empty($user_id)) {
|
||||
<button class="btn btn-outline-light btn-sm me-2" onclick="refreshChat()">
|
||||
<i class="fas fa-sync-alt"></i>
|
||||
</button>
|
||||
<button id="loadConverterBtn" class="btn btn-outline-light btn-sm me-2" title="Cargar conversor de audio">
|
||||
<i class="fas fa-play-circle"></i> Cargar conversor
|
||||
</button>
|
||||
<button class="btn btn-outline-light btn-sm" onclick="window.close()">
|
||||
<i class="fas fa-times"></i>
|
||||
</button>
|
||||
@@ -569,40 +566,26 @@ if (empty($user_id)) {
|
||||
throw new Error('WebAssembly no está disponible en este navegador; no se puede convertir en cliente');
|
||||
}
|
||||
|
||||
// Si FFmpeg no está presente, intentar cargar desde varios CDNs (varias URLs de fallback)
|
||||
if (!window.FFmpeg || !window.FFmpeg.createFFmpeg) {
|
||||
// Si FFmpeg no está presente, intentar cargar desde varios CDNs
|
||||
if (!window.FFmpeg || !window.FFmpeg.createFFmpeg) {
|
||||
const cdns = [
|
||||
// CDN funcional conocido (prioritario)
|
||||
'https://cdn.jsdelivr.net/npm/@ffmpeg/ffmpeg/dist/ffmpeg.min.js',
|
||||
// Versioned sources and other fallbacks
|
||||
'https://cdn.jsdelivr.net/npm/@ffmpeg/ffmpeg@0.11.8/dist/ffmpeg.min.js',
|
||||
'https://unpkg.com/@ffmpeg/ffmpeg@0.11.8/dist/ffmpeg.min.js',
|
||||
'https://unpkg.com/@ffmpeg/ffmpeg/dist/ffmpeg.min.js',
|
||||
// Fallback local path - recomendamos descargar y colocar manualmente si CDN falla
|
||||
'/assets/vendor/ffmpeg.min.js'
|
||||
'https://unpkg.com/@ffmpeg/ffmpeg@0.11.8/dist/ffmpeg.min.js'
|
||||
];
|
||||
let loaded = false;
|
||||
const failedSources = [];
|
||||
for (const url of cdns) {
|
||||
try {
|
||||
await loadScript(url);
|
||||
if (window.FFmpeg && window.FFmpeg.createFFmpeg) {
|
||||
console.info('FFmpeg loaded from', url);
|
||||
loaded = true;
|
||||
break;
|
||||
} else {
|
||||
failedSources.push(url + ' (no FFmpeg object)');
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('No se pudo cargar ffmpeg desde', url, e);
|
||||
failedSources.push(url + ' (' + (e.message || e) + ')');
|
||||
}
|
||||
}
|
||||
if (!loaded) {
|
||||
// Mostrar guía al usuario sobre cómo instalar localmente
|
||||
const helpMsg = 'No se pudo cargar ffmpeg.wasm desde CDNs. Intenta descargar `ffmpeg.min.js` y colócalo en `assets/vendor/ffmpeg.min.js`. Fuentes intentadas: ' + failedSources.join('; ');
|
||||
console.error(helpMsg);
|
||||
throw new Error(helpMsg);
|
||||
throw new Error('No se pudo cargar ffmpeg.wasm desde los CDNs');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1729,27 +1712,7 @@ if (empty($user_id)) {
|
||||
startRecording();
|
||||
}
|
||||
});
|
||||
|
||||
// Botón para cargar conversor de audio manualmente (ffmpeg WASM)
|
||||
const loadBtn = document.getElementById('loadConverterBtn');
|
||||
if (loadBtn) {
|
||||
loadBtn.addEventListener('click', async function() {
|
||||
loadBtn.disabled = true;
|
||||
loadBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Cargando...';
|
||||
try {
|
||||
await ensureFFmpeg();
|
||||
showAlert('Conversor cargado correctamente', 'success');
|
||||
loadBtn.innerHTML = '<i class="fas fa-check"></i> Listo';
|
||||
} catch (e) {
|
||||
console.error('Error cargando conversor:', e);
|
||||
showAlert('Error cargando conversor: ' + (e.message || e), 'danger');
|
||||
loadBtn.innerHTML = '<i class="fas fa-exclamation-triangle"></i> Error';
|
||||
} finally {
|
||||
loadBtn.disabled = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// Auto-refresh cada 30 segundos para nuevos mensajes
|
||||
setInterval(refreshChat, 30000);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user