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

FFHub 和 Coconut 都是云端视频编码服务,但走的是两条不同的路子。Coconut 把视频处理藏在预设(preset)API 后面,FFHub 直接给你云端的 FFmpeg 命令行。这篇文章帮你判断哪种更贴你的工作流。
各是什么
Coconut.co 是一个走预设路线的云视频编码平台。你用类似 mp4:1080p 这样的格式化记法描述输出,Coconut 处理编码细节。它有可视化面板,工作流靠 webhook 串。
FFHub 是云端 FFmpeg API。通过 REST API 发任意 FFmpeg 命令,FFHub 在托管基础设施上跑。FFmpeg 全部能力,没有抽象层。
对比一览
| 维度 | FFHub | Coconut |
|---|---|---|
| API 风格 | 发原始 FFmpeg 命令 | 预设记法 |
| FFmpeg 兼容性 | 100%——任何合法命令 | 有限——只覆盖预设里的常见场景 |
| 自定义滤镜链 | 完整支持 | 不支持 |
| CLI 工具 | 有(ffhub CLI) | 无官方 CLI |
| 输入源 | URL、本地文件上传 | 仅 URL |
| 本地文件上传 | 原生支持 | 要先传到云存储 |
| 输出投递 | 下载 URL、Webhook | S3、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
| FFHub | Coconut | |
|---|---|---|
| 处理 | 约 $50(按 20 秒/视频估 × 500) | 约 $45(3 分钟 × 500 × $0.03) |
标准转码价格基本接近。
场景 2:5,000 个 10 秒短片
| FFHub | Coconut | |
|---|---|---|
| 处理 | 约 $125(按 5 秒/片估 × 5,000) | 约 $150(最低 1 分钟 × 5,000 × $0.03) |
短内容场景,FFHub 按秒计费占优;Coconut 按分钟向上取整会累积。
场景 3:复杂处理(滤镜、水印、拼接)
| FFHub | Coconut | |
|---|---|---|
| 可行性 | 完整支持 | 做不到,要换工具 |
如果工作流涉及复杂处理,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 MediaConvert 和 Transloadit。
试一下 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 AWS MediaConvert - FFHub 跟 Amazon 企业级转码服务的对比
- FFHub vs Transloadit - FFHub 的 FFmpeg 优先 vs Transloadit 的管线模型
- What Is FFHub? - FFHub 是什么、怎么上手