← All posts

FFHub vs Coconut — 云端视频编码对比

对比 FFHub 和 Coconut.co 的 FFmpeg 灵活性、计费方式、API 设计和开发体验,帮你判断哪种适合自己的工作流。

FFHub·2026-05-10
FFHub vs Coconut — 云端视频编码对比

FFHub 和 Coconut 都是云端视频编码服务,但走的是两条不同的路子。Coconut 把视频处理藏在预设(preset)API 后面,FFHub 直接给你云端的 FFmpeg 命令行。这篇文章帮你判断哪种更贴你的工作流。

各是什么

Coconut.co 是一个走预设路线的云视频编码平台。你用类似 mp4:1080p 这样的格式化记法描述输出,Coconut 处理编码细节。它有可视化面板,工作流靠 webhook 串。

FFHub 是云端 FFmpeg API。通过 REST API 发任意 FFmpeg 命令,FFHub 在托管基础设施上跑。FFmpeg 全部能力,没有抽象层。

对比一览

维度FFHubCoconut
API 风格发原始 FFmpeg 命令预设记法
FFmpeg 兼容性100%——任何合法命令有限——只覆盖预设里的常见场景
自定义滤镜链完整支持不支持
CLI 工具有(ffhub CLI)无官方 CLI
输入源URL、本地文件上传仅 URL
本地文件上传原生支持要先传到云存储
输出投递下载 URL、WebhookS3、GCS、FTP、HTTP、Webhook
控制台任务历史和日志可视化作业管理界面
计费方式按处理秒数按输出时长分钟
免费额度试用积分少量免费分钟数
Webhook支持支持(核心功能)
HLS/DASH直接用 FFmpeg HLS/DASH 命令内置预设
编解码器灵活度FFmpeg 的全部H.264、H.265、VP9、AV1

API 设计哲学

两者最核心的区别是:你怎么描述「想对视频做什么」。

FFHub:FFmpeg 命令

FFHub API 接受任何 FFmpeg 命令。本地终端能跑的,FFHub 都能跑:

curl -X POST https://api.ffhub.io/v1/tasks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "command": "ffmpeg -i https://example.com/input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4"
  }'

每个参数你都说了算:编解码器、码率、CRF、预设、滤镜、流映射——FFmpeg 提供的一切。

Coconut:预设记法

Coconut 是声明式的格式记法:

{
  "input": {
    "url": "https://example.com/input.mp4"
  },
  "outputs": {
    "mp4:1080p": {
      "url": "s3://bucket/output_1080p.mp4"
    },
    "mp4:720p": {
      "url": "s3://bucket/output_720p.mp4"
    },
    "jpg:300x": {
      "url": "s3://bucket/thumbnail.jpg"
    }
  }
}

标准转码场景,这种写法是真的优雅。不用懂 FFmpeg 语法,把格式和分辨率写清楚就行。

FFmpeg 灵活性

差距最大的就是这块。看几个例子。

标准转码(两边都能搞定)

把 1080p MP4 转成 720p H.264:

FFHub:

ffmpeg -i input.mp4 -vf scale=1280:720 -c:v libx264 -crf 23 -c:a aac output.mp4

Coconut:

mp4:720p

这种常见任务,Coconut 的写法确实更短,没什么好争的。

复杂滤镜链(只有 FFHub)

加一个带淡入淡出的水印 + 烧字幕 + 调色:

FFHub:

ffmpeg -i input.mp4 -i logo.png -filter_complex \
  "[1:v]fade=in:st=0:d=2,fade=out:st=8:d=2[logo]; \
   [0:v][logo]overlay=W-w-10:H-h-10[watermarked]; \
   [watermarked]subtitles=captions.srt:force_style='FontSize=24'[subtitled]; \
   [subtitled]eq=brightness=0.05:contrast=1.1" \
  -c:v libx264 -crf 22 output.mp4

Coconut: 做不到,不支持任意滤镜链。

视频拼接(只有 FFHub)

把多个片段合成一个:

FFHub:

ffmpeg -i clip1.mp4 -i clip2.mp4 -i clip3.mp4 \
  -filter_complex "[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[v][a]" \
  -map "[v]" -map "[a]" output.mp4

Coconut: 没有原生支持。

纯音频处理(只有 FFHub)

提音频、做响度归一化、转 Opus:

FFHub:

ffmpeg -i input.mp4 -vn -af "loudnorm=I=-16:TP=-1.5:LRA=11" -c:a libopus -b:a 128k output.opus

Coconut: 音频选项有限,loudnorm 这类滤镜不支持,也不输出 Opus。

按间隔抽帧(只有 FFHub)

每 10 秒抽一帧:

FFHub:

ffmpeg -i input.mp4 -vf "fps=1/10" -q:v 2 frame_%04d.jpg

Coconut: 能生成缩略图,但没有这种粒度的控制。

价格对比

FFHub

  • 按真实处理秒数算
  • $0.005/秒(标准档)
  • 不另收存储和传输
  • 24 小时免费临时存储

Coconut

  • 按输出视频时长分钟算
  • 套餐分档:
    • 按量付费:HD 约 $0.03/分钟
    • 大量套餐有折扣
  • 投递到你自己的 S3/GCS 不另收

几个真实场景

场景 1:500 个视频,每个 3 分钟,H.264 720p

FFHubCoconut
处理约 $50(按 20 秒/视频估 × 500)约 $45(3 分钟 × 500 × $0.03)

标准转码价格基本接近。

场景 2:5,000 个 10 秒短片

FFHubCoconut
处理约 $125(按 5 秒/片估 × 5,000)约 $150(最低 1 分钟 × 5,000 × $0.03)

短内容场景,FFHub 按秒计费占优;Coconut 按分钟向上取整会累积。

场景 3:复杂处理(滤镜、水印、拼接)

FFHubCoconut
可行性完整支持做不到,要换工具

如果工作流涉及复杂处理,Coconut 直接不在候选名单里。这一点对处理不可预测输入的 UGC 平台尤其要紧。

本地文件上传

一个实际差异:FFHub 直接收本地文件,Coconut 要求输入必须是公开可访问的 URL。

FFHub:上传 + 处理

# 上传本地文件并处理
ffhub upload input.mp4 --command "ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4"

或者走 API:

curl -X POST https://api.ffhub.io/v1/tasks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "[email protected]" \
  -F 'command=ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4'

Coconut:只收 URL

用 Coconut 的话,先把文件传到 S3、GCS 或其他公开 URL,再把 URL 给 API。多一步、多一份延迟。

CLI 工具

FFHub CLI

FFHub 提供 CLI,方便终端和脚本里用:

# 装
npm install -g ffhub

# 处理一个视频
ffhub run "ffmpeg -i https://example.com/input.mp4 -c:v libx264 -crf 23 output.mp4"

# 上传本地文件并处理
ffhub upload input.mp4 --command "ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4"

# 查任务状态
ffhub status TASK_ID

Coconut

Coconut 没有官方 CLI。交互方式是 REST API 或者官方客户端库(Ruby、Python、Node.js、PHP、Go)。

多输出编码

两边都能从一个输入生成多个输出,写法不同。

Coconut:声明式

{
  "input": { "url": "https://example.com/input.mp4" },
  "outputs": {
    "mp4:1080p": { "url": "s3://bucket/1080p.mp4" },
    "mp4:720p": { "url": "s3://bucket/720p.mp4" },
    "mp4:480p": { "url": "s3://bucket/480p.mp4" },
    "jpg:300x": { "url": "s3://bucket/thumb.jpg" }
  }
}

标准多码率编码,写法很干净。

FFHub:FFmpeg 多输出

ffmpeg -i input.mp4 \
  -vf scale=1920:1080 -c:v libx264 -crf 22 -c:a aac output_1080p.mp4 \
  -vf scale=1280:720 -c:v libx264 -crf 23 -c:a aac output_720p.mp4 \
  -vf scale=854:480 -c:v libx264 -crf 24 -c:a aac output_480p.mp4 \
  -ss 00:00:05 -frames:v 1 -q:v 2 thumbnail.jpg

啰嗦点,但每个输出的编码参数你都能精细控制。

Coconut 更合适的场景

1. 预设式简洁

只做标准转码(常见分辨率的 MP4、WebM、HLS),Coconut 的记法更短,学习成本接近零,不用懂 FFmpeg。

2. 可视化面板

有图形化界面来管作业、看进度、查输出。对非技术成员友好。

3. 多输出声明

声明式多输出语法比 FFmpeg 的多输出参数确实更清楚。

4. 内置投递

编码作业里直接把输出发到 S3、GCS、FTP 或 HTTP 端点。

FFHub 更合适的场景

1. 完整的 FFmpeg

任何 FFmpeg 命令都能跑。滤镜链、小众编解码器、自定义流映射、音频处理——没有限制。

2. 本地文件上传

不用先把文件搬到云存储,本地直接传。

3. CLI 工具

有专门的 CLI,脚本和终端工作流好接。

4. 没有抽象层

你写的就是 FFmpeg 命令,知识在 FFHub、本地、其他环境之间无缝迁移。

5. 按秒计费

短片段和变长内容更划算。

6. 复杂处理

水印、文字叠加、拼接、响度归一化、烧字幕——FFmpeg 能做的都能做。

怎么选

选 FFHub,如果:

  • 需要完整的 FFmpeg 命令灵活性
  • 工作流里有滤镜、叠加、复杂处理
  • 想直接传本地文件
  • 想要按秒计费
  • 需要 CLI 做脚本
  • 团队已经会 FFmpeg

选 Coconut,如果:

  • 只做标准转码(格式转换、分辨率改)
  • 团队更喜欢预设式而不是 FFmpeg 命令
  • 需要给非技术同事一个可视化面板
  • 想要内置投递到 S3/GCS/FTP
  • 视频长度和处理需求比较一致

其他对比可以看 FFHub vs AWS MediaConvertTransloadit

试一下 FFHub

如果看重 FFmpeg 灵活性和开发体验,可以试 FFHub.io。注册、拿 API Key,FFmpeg 全部能力直接用——没有预设、没有阉割。

npm install -g ffhub
ffhub run "ffmpeg -i https://example.com/input.mp4 -c:v libx264 -crf 23 output.mp4"

总结

Coconut 和 FFHub 解决的是同一件事——在云端处理视频——但目标用户不一样。Coconut 适合想要简单预设式转码、不想学 FFmpeg 的团队。FFHub 是给希望直接在云端用 FFmpeg、不喜欢被抽象挡着的开发者用的。

如果编码需求都很简单,两个都能用。一旦超出标准预设——复杂滤镜、响度归一化、烧字幕、自定义抽帧——FFHub 的 FFmpeg 原生方式什么都接得住。

延伸阅读

FFHub vs Coconut — 云端视频编码对比