ffmpeg-api / README.md
opex792's picture
Upload 5 files
3aa3b77 verified
metadata
title: Hybrid Command Runner
emoji: 🚀
colorFrom: indigo
colorTo: blue
sdk: docker
pinned: false

API для выполнения команд

Это API позволяет удаленно выполнять консольные команды. Поддерживается два режима, но основной — это умный стриминг.


Режим 1: "Умный" стриминг (рекомендуемый)

Этот эндпоинт — ваш основной инструмент. Он автоматически определяет лучший способ выполнения команды.

Эндпоинт: POST /api/run/stream

Использование с FFmpeg (Надежный режим)

Если вы вызываете ffmpeg, API автоматически сохранит ваш файл на сервере, выполнит команду и вернет вам готовый результат. Запрос будет длиться ровно столько, сколько идет конвертация.

Пример curl для конвертации видео:

# Эта команда теперь будет работать через /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)
Когда задача готова, скачиваете результат.