Free AI Translator

Al Translation Tool - Video Language Translator AI Translation Tool - Movie Language Translator with Lip Sync

AI Video Translator

Translate your videos with perfect lip-sync using AI.

Translate Your Video

Follow the steps below to translate your video:

Choose Video File

Supported formats: MP4, MOV, AVI (Max 10GB)

Preview of your uploaded video.

Original language of your video.

Language to translate your video into.

Select the desired voice for the translated audio.

Translation progress is displayed here.

:root { --primary: #663399; --secondary: #42a5f5; --accent: #f50057; --light: #f8f9fa; --dark: #212529; --neutral: #e0e0e0; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Poppins', sans-serif; background-color: var(--light); color: var(--dark); line-height: 1.6; } header { background: linear-gradient(to right, var(--primary), #4a148c); color: white; padding: 2rem; text-align: center; box-shadow: 0 4px 12px rgba(0,0,0,0.1); } .logo { max-width: 150px; height: auto; } main { max-width: 1200px; margin: 2rem auto; padding: 0 1rem; } .intro-box, .tool-container { background: white; border-radius: 12px; padding: 2rem; margin-bottom: 2rem; box-shadow: 0 2px 10px rgba(0,0,0,0.05); } .intro-text { width: 100%; min-height: 200px; padding: 1rem; border: 1px solid var(--neutral); border-radius: 8px; font-family: 'Poppins', sans-serif; } .form-grid { display: grid; gap: 1.5rem; } .form-group { margin-bottom: 1rem; } label { font-weight: 500; margin-bottom: 0.5rem; display: block; } .input-field { width: 100%; padding: 1rem; border: 1px solid var(--neutral); border-radius: 8px; margin-bottom: 1rem; } .file-upload { border: 2px dashed var(--secondary); padding: 2rem; text-align: center; cursor: pointer; transition: all 0.3s; } .file-upload:hover { border-color: var(--primary); background-color: #f0f4c3; } #videoInput { display: none; } select, button { width: 100%; padding: 1rem; border-radius: 8px; border: 1px solid var(--neutral); font-family: 'Poppins', sans-serif; } button { background-color: var(--accent); color: white; border: none; cursor: pointer; transition: all 0.3s; } button:hover { background-color: #d81b60; } #videoPreviewContainer { display: none; } #videoPreview { width: 100%; border-radius: 8px; } .progress-container { display: none; margin-top: 1.5rem; } .progress-bar { height: 10px; background-color: var(--neutral); border-radius: 5px; } .progress { height: 100%; background-color: var(--accent); width: 0; transition: width 0.3s; } #result { margin-top: 1.5rem; padding: 1rem; border-radius: 8px; display: none; } .success { background-color: #e8f5e9; border-left: 4px solid #4caf50; } .error { background-color: #ffebee; border-left: 4px solid #f44336; } @media (min-width: 768px) { .form-grid, .language-selectors { grid-template-columns: 1fr 1fr; } } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .animated { animation: fadeIn 0.6s ease-out; } document.addEventListener('DOMContentLoaded', () => { const videoInput = document.getElementById('videoInput'); const youtubeLink = document.getElementById('youtubeLink'); const videoPreview = document.getElementById('videoPreview'); const previewContainer = document.getElementById('videoPreviewContainer'); const form = document.getElementById('translationForm'); const translateBtn = document.getElementById('translateBtn'); const progressContainer = document.getElementById('progressContainer'); const progressBar = document.getElementById('progressBar'); const result = document.getElementById('result'); // Video preview videoInput.addEventListener('change', (e) => { const file = e.target.files[0]; if (file) { videoPreview.src = URL.createObjectURL(file); previewContainer.style.display = 'block'; } }); // Form submission form.addEventListener('submit', async (e) => { e.preventDefault(); const formData = new FormData(); if (videoInput.files[0]) { formData.append('video', videoInput.files[0]); } else if (youtubeLink.value) { formData.append('youtube_link', youtubeLink.value); } else { result.className = 'error'; result.textContent = 'Please provide a video file or YouTube link'; result.style.display = 'block'; return; } formData.append('source_language', document.getElementById('sourceLanguage').value); formData.append('target_language', document.getElementById('targetLanguage').value); formData.append('voice', document.getElementById('voice').value); translateBtn.disabled = true; progressContainer.style.display = 'block'; result.style.display = 'none'; try { const response = await fetch('/translate', { method: 'POST', body: formData }); const data = await response.json(); // Simulate progress let progress = 0; const interval = setInterval(() => { progress += 10; progressBar.style.width = ${progress}%; if (progress >= 100) { clearInterval(interval); result.className = 'success'; result.innerHTML = Translation complete! Download Video; result.style.display = 'block'; progressContainer.style.display = 'none'; translateBtn.disabled = false; form.reset(); previewContainer.style.display = 'none'; } }, 300); } catch (error) { result.className = 'error'; result.textContent = 'An error occurred during translation'; result.style.display = 'block'; translateBtn.disabled = false; progressContainer.style.display = 'none'; } }); });

Comments