FFmpeg API - Extracción y División de Audio
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
.zippara 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
- Docker y Docker Compose instalados.
- Git para clonar el repositorio.
Instalación y Ejecución
-
Clona el repositorio:
git clone [https://github.com/tu-usuario/ffmpeg-api.git](https://github.com/tu-usuario/ffmpeg-api.git) cd ffmpeg-api -
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 --buildPara 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
.zipcon los resultados. - Cuerpo de la Petición:
multipart/form-datacon un campovideo_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.