To automatically merge an MP4 video with a VTT subtitle file in Google Drive using remote URLs and Google Colab, here's a complete workflow you can follow
1. 📂 Mount Google Drive in Colab
This lets Colab read/write files directly to your Drive.
python
from google.colab import drive
drive.mount('/content/drive')
2. 🌐 Download MP4 and VTT from Remote URLs
python
import requests
def download_file(url, filename):
response = requests.get(url, stream=True)
with open(filename, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
# Replace with your actual URLs
download_file('https://example.com/video.mp4', 'video.mp4')
download_file('https://example.com/subtitles.vtt', 'subtitles.vtt')
3. 🛠️ Install FFmpeg in Colab
python
!apt-get update
!apt-get install ffmpeg
4. 🎬 Merge MP4 and VTT Using FFmpeg
python
!ffmpeg -i video.mp4 -vf "subtitles=subtitles.vtt" -c:a copy merged_video.mp4
This command overlays the subtitles directly onto the video.
5. 🚀 Save Merged Video to Google Drive
python
import shutil
shutil.move('merged_video.mp4', '/content/drive/MyDrive/merged_video.mp4')
✅ Optional Enhancements
🧩 Step-by-Step Workflow in Google Colab
1. 📥 Download MP4 and VTT from Remote URLs
python
import requests
def download_file(url, filename):
response = requests.get(url, stream=True)
with open(filename, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
# Replace with your actual URLs
download_file('https://example.com/video.mp4', 'video.mp4')
download_file('https://example.com/subtitles.vtt', 'subtitles.vtt')
2. 🛠️ Install FFmpeg in Colab
python
!apt-get update
!apt-get install ffmpeg
3. 🎬 Merge MP4 and VTT Using FFmpeg
python
!ffmpeg -i video.mp4 -vf "subtitles=subtitles.vtt" -c:a copy merged_video.mp4
This overlays the subtitles directly onto the video.
🚀 Upload to via API
Pixeldrain offers a simple upload API. Here's how to use it:
python
import requests
with open("merged_video.mp4", "rb") as f:
response = requests.post("https://pixeldrain.com/api/file", files={"file": f})
if response.status_code == 200:
file_id = response.json()["id"]
print("✅ Uploaded to Pixeldrain:")
print(f"https://pixeldrain.com/u/{file_id}")
else:
print("❌ Upload failed:", response.text)