MiniCut Core
Núcleo compartido para proyectos, pistas, historial, guardado automático, eventos y módulos futuros.
📁 Proyecto
🎞️ Crear pista
🎚️ Pistas del proyecto
🔌 Módulos registrados
🕘 Historial y eventos
Los próximos bloques deberán conectarse mediante window.MiniCutCore. Este núcleo guarda el estado en el navegador y evita que cada módulo trabaje por separado.
MiniCut Player
Reproductor y área de previsualización conectados al núcleo MiniCut Core.
📁 Fuente de vídeo
Este bloque necesita que el Bloque 1 esté colocado encima. Cuando añades el vídeo al núcleo, se crea automáticamente una pista de vídeo y un elemento con su duración.
MiniCut Timeline
Línea de tiempo multipista conectada al núcleo y al reproductor.
🧩 Elemento seleccionado
⏱️ Tiempo y duración
Puedes seleccionar elementos, moverlos, copiarlos, dividirlos y cambiar su duración. El cabezal rojo sigue la posición del reproductor del Bloque 2.
MiniCut Clip Tools
Herramientas avanzadas para recortar, desplazar, duplicar, ajustar bordes y modificar la velocidad de los clips.
🎯 Selección
📐 Ajuste de bordes
⚡ Velocidad y tiempo
🧬 Copias y división
📋 Elementos de la pista seleccionada
Este bloque modifica directamente los elementos almacenados en MiniCut Core. Los cambios aparecen automáticamente en la línea de tiempo del Bloque 3.
" + "Pista: " + escapeHtml( selection.track.name ) + "
" + "Inicio: " + selection.item.start.toFixed(2) + " s · Fin: " + ( selection.item.start + selection.item.duration ).toFixed(2) + " s · Duración: " + selection.item.duration.toFixed(2) + " s
" + "Velocidad: " + ( Number( data.speed ) || 1 ) + "× · Desplazamiento de origen: " + ( Number( data.sourceOffset ) || 0 ).toFixed(2) + " s"; document.getElementById( "mcctStart" ).value = selection.item.start; document.getElementById( "mcctDuration" ).value = selection.item.duration; document.getElementById( "mcctSpeed" ).value = String( Number( data.speed ) || 1 ); } function getSelection( showError ){ if(showError === undefined){ showError = true; } var state = core.getState(); var track = state.tracks.find( function(item){ return item.id === selectedTrackId; } ); if(!track){ if(showError){ status.textContent = "Selecciona una pista."; } return null; } var item = track.items.find( function(entry){ return entry.id === selectedItemId; } ); if(!item){ if(showError){ status.textContent = "Selecciona un elemento."; } return null; } return{ track:track, item:item }; } function getPlayerTime(){ if(player){ return Number( player.currentTime ) || 0; } return 0; } function setPlayerTime( time ){ if(player){ player.currentTime = Math.max( 0, Number(time) || 0 ); } core.emit( "cliptools:seek", { time: Number(time) || 0 } ); } function trackIcon( type ){ var icons = { video:"🎥", audio:"🎵", image:"🖼️", text:"✍️", subtitle:"💬", effects:"✨" }; return icons[type] || "🎞️"; } function createId( prefix ){ return ( prefix + "_" + Date.now() .toString(36) + "_" + Math.random() .toString(36) .slice(2,8) ); } function round2( value ){ return Math.round( Number(value) * 100 ) / 100; } function escapeHtml( value ){ return String( value || "" ).replace( /[&<>"']/g, function(character){ return{ "&":"&", "<":"<", ">":">", '"':""", "'":"'" }[character]; } ); } renderAll(); status.textContent = "MiniCut Clip Tools conectado correctamente."; }());
MiniCut Layers
Gestor de capas de imagen y vídeo con posición, escala, opacidad, rotación, orden y tiempo de aparición.
➕ Añadir capa
🎛️ Transformación
👁️ Vista previa de capas
📚 Capas del proyecto
Las capas se guardan como elementos de pistas de imagen o vídeo dentro de MiniCut Core. Los archivos locales se usan para la vista previa durante la sesión actual.
MiniCut Audio Engine
Motor base Web Audio para los siguientes módulos.