SDK 和代码示例

在你的应用中集成 FFHub API 的代码示例。

FFHub 提供简洁的 REST API。以下是常用编程语言的代码示例,帮助你快速上手。

Node.js / JavaScript

const response = await fetch('https://api.ffhub.io/v1/tasks', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    command: 'ffmpeg -i input.mp4 -c:v libx264 -crf 28 output.mp4'
  })
});
const { task_id } = await response.json();

// 轮询任务状态
const checkStatus = async (taskId) => {
  const res = await fetch(`https://api.ffhub.io/v1/tasks/${taskId}`, {
    headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
  });
  return res.json();
};

Python

import requests

response = requests.post(
    'https://api.ffhub.io/v1/tasks',
    headers={'Authorization': 'Bearer YOUR_API_KEY'},
    json={'command': 'ffmpeg -i input.mp4 -c:v libx264 -crf 28 output.mp4'}
)
task_id = response.json()['task_id']

# 轮询任务状态
def check_status(task_id):
    res = requests.get(
        f'https://api.ffhub.io/v1/tasks/{task_id}',
        headers={'Authorization': 'Bearer YOUR_API_KEY'}
    )
    return res.json()

cURL

curl -X POST https://api.ffhub.io/v1/tasks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"command": "ffmpeg -i input.mp4 -c:v libx264 output.mp4"}'

查看任务状态:

curl https://api.ffhub.io/v1/tasks/TASK_ID \
  -H "Authorization: Bearer YOUR_API_KEY"

Webhook 回调

与其轮询任务状态,你可以提供一个 webhook URL,任务完成时自动接收通知:

const response = await fetch('https://api.ffhub.io/v1/tasks', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    command: 'ffmpeg -i input.mp4 -c:v libx264 -crf 28 output.mp4',
    webhook: 'https://your-server.com/api/ffhub-callback'
  })
});

任务完成后,FFHub 会向你的 webhook URL 发送 POST 请求,包含任务结果:

{
  "task_id": "task_abc123",
  "status": "completed",
  "outputs": [
    {
      "filename": "output.mp4",
      "url": "https://storage.ffhub.io/outputs/task_abc123/output.mp4",
      "size": 10485760
    }
  ]
}

文件上传流程

如果源文件在本地(不是公开的 URL),需要先上传文件,然后在 FFmpeg 命令中使用返回的 URL:

第 1 步:上传文件

const formData = new FormData();
formData.append('file', fileBlob, 'input.mp4');

const uploadRes = await fetch('https://api.ffhub.io/v1/files', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer YOUR_API_KEY' },
  body: formData
});
const { url } = await uploadRes.json();

第 2 步:在 FFmpeg 命令中使用该 URL

const taskRes = await fetch('https://api.ffhub.io/v1/tasks', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    command: `ffmpeg -i ${url} -c:v libx264 -crf 28 output.mp4`
  })
});