Skip to content
GitHubStars: 010 views

ffmpeg-api

A Dockerized API that uses FFmpeg to extract and split audio from video files.

FFmpeg API - Extracción y División de Audio

Python Docker FastAPI FFmpeg

Una API de microservicio robusta y simple, construida con FastAPI y Docker, que utiliza el poder de FFmpeg para procesar archivos de video. Su función principal es extraer la pista de audio de un video, dividirla en fragmentos de 15 minutos y devolverlos convenientemente empaquetados en un archivo .zip.

✨ Características Principales

  • Extracción de Audio: Acepta un archivo de video y extrae su pista de audio en formato MP3.
  • División Automática: Segmenta el audio extraído en trozos de 15 minutos, ideal para procesar archivos largos en partes manejables.
  • Empaquetado Eficiente: Comprime todos los fragmentos de audio en un único archivo .zip para una descarga fácil y rápida.
  • 100% Contenerizado: Gracias a Docker y Docker Compose, la instalación y el despliegue son increíblemente sencillos.
  • Interfaz de API Clara: Un único endpoint (/procesar/) que hace el trabajo pesado de forma asíncrona.
  • Gestión de Tareas: Utiliza identificadores únicos para cada solicitud, permitiendo el procesamiento concurrente de múltiples archivos sin conflictos.

🛠️ Stack Tecnológico

  • Backend: Python, FastAPI
  • Procesamiento de Medios: FFmpeg
  • Contenerización: Docker, Docker Compose

🚀 Cómo Empezar

Sigue estos pasos para poner en marcha la API en tu máquina local.

Prerrequisitos

Instalación y Ejecución

  1. Clona el repositorio:

    git clone [https://github.com/tu-usuario/ffmpeg-api.git](https://github.com/tu-usuario/ffmpeg-api.git)
    cd ffmpeg-api
    
  2. Construye e inicia el contenedor: Este comando construirá la imagen de Docker, que incluye la instalación de FFmpeg, y luego iniciará la API.

    docker-compose up --build
    

    Para ejecutarlo en segundo plano, añade el flag -d:

    docker-compose up --build -d
    

¡Eso es todo! La API estará disponible en http://localhost:8001.

🎤 Cómo Usar la API

Envía una petición POST al endpoint /procesar/ con tu archivo de video. La respuesta será el archivo .zip con los audios.

Endpoint: POST /procesar/

  • Descripción: Recibe un archivo de video, extrae y divide el audio, y devuelve un .zip con los resultados.
  • Cuerpo de la Petición: multipart/form-data con un campo video_file.

Ejemplo con curl

Abre tu terminal y ejecuta el siguiente comando. Reemplaza /ruta/a/tu/video.mp4 con la ruta real de tu archivo de video. El comando guardará la respuesta directamente en un archivo llamado resultado.zip.

curl -X 'POST' \
  'http://localhost:8001/procesar/' \
  -F 'video_file=@/ruta/a/tu/video.mp4' \
  --output resultado.zip

Después de ejecutarlo, tendrás un archivo resultado.zip en tu directorio actual con todos los trozos de audio dentro.

📂 Estructura de Archivos

.
├── docker-compose.yml  # Orquesta el despliegue del contenedor.
├── Dockerfile          # Define la imagen de Docker para la aplicación.
├── main.py             # Lógica de la API con FastAPI y FFmpeg.
└── requirements.txt    # Dependencias de Python.

📄 Licencia

Este proyecto está distribuido bajo la Licencia MIT. Consulta el archivo LICENSE para ver los términos completos.