ffmpeg-api / README.md
opex792's picture
Upload 5 files
3aa3b77 verified
---
title: Hybrid Command Runner
emoji: 🚀
colorFrom: indigo
colorTo: blue
sdk: docker
pinned: false
---
# API для выполнения команд
Это API позволяет удаленно выполнять консольные команды. Поддерживается два режима, но основной — это **умный стриминг**.
---
## Режим 1: "Умный" стриминг (рекомендуемый)
Этот эндпоинт — ваш основной инструмент. Он автоматически определяет лучший способ выполнения команды.
**Эндпоинт:** `POST /api/run/stream`
### Использование с FFmpeg (Надежный режим)
Если вы вызываете `ffmpeg`, API автоматически сохранит ваш файл на сервере, выполнит команду и вернет вам готовый результат. **Запрос будет длиться ровно столько, сколько идет конвертация.**
**Пример `curl` для конвертации видео:**
```bash
# Эта команда теперь будет работать через /api/run/stream
curl -X POST 'https://<your-space-url>/api/run/stream' \
-F 'command=ffmpeg' \
-F 'args=["-i", "{INPUT_FILE}", "-vcodec", "libx264", "-acodec", "aac", "{OUTPUT_FILE}"]' \
-F 'file=@"/path/to/your/video.mov"' \
--output "converted_video.mp4"
Использование с другими командами (Режим реального стриминга)
Для команд вроде magick (ImageMagick) API работает в режиме реального времени, обрабатывая данные "на лету".
Пример curl для обработки изображения:
curl -X POST 'https://<your-space-url>/api/run/stream' \
-F 'file=@/path/to/your/image.jpg' \
-F 'command=magick' \
-F 'args=["-", "-resize", "50%", "jpg:-"]' \
--output "resized_image.jpg"
Режим 2: Асинхронные задачи (для UI или очень долгих операций)
Этот режим полезен, если вы создаете UI и не хотите, чтобы запрос "висел", или если конвертация занимает очень много времени (например, часы).
Шаг 1: Создание задачи (POST /api/task/create)
Мгновенно получаете ID задачи.
Шаг 2: Проверка статуса (GET /api/task/status/:taskId)
Периодически проверяете, как дела.
Шаг 3: Скачивание (GET /api/download/:fileId)
Когда задача готова, скачиваете результат.