面向 serverless 的 ffmpeg,
以 API 形式交付
一次 API 调用,搞定加水印、截取片段、提取音频和生成缩略图。没有 250MB 打包上限,不用 child_process,也不会撞上函数超时——繁重的编码工作根本不在你的函数里跑。
curl -X POST https://api.fotovid.co/v1/video/watermark \
-H "Authorization: Bearer p6_YOUR_KEY_ID:YOUR_SECRET" \
-H "Content-Type: application/json" \
-d '{
"source_url": "https://cdn.yoursite.com/clip.mp4",
"params": {
"type": "image",
"watermark_image_url": "https://cdn.yoursite.com/logo.png",
"position": "bottom-right",
"opacity": 0.7,
"scale": 0.2
}
}'接入任意 serverless 运行时
serverless 从来就不是为处理媒体文件设计的
把 ffmpeg 和它的编解码器打进包里,业务逻辑还没写一行,就已经撑爆了 serverless 函数的体积上限。
serverless 运行时不给你 shell,没法 spawn 出 ffmpeg;而 WASM 版本又慢又吃内存。
就算真跑起来了,编码一个视频也会远远超过函数的超时时间。Fotovid 把重活放到平台之外去做,完成后直接给你一个结果 URL。
过去要靠 ffmpeg 做的事,这里都有
在任意视频上叠加文字或 logo 图片,位置、不透明度、缩放和边距都能调。
POST /v1/video/watermark图片水印同一套水印引擎,也适用于图片。文字、图片,或者两者组合叠加。
POST /v1/image/watermark提取音频从任意视频中抽出音轨,直接拿到一个 MP3。
POST /v1/video/extract-audio视频截取在两个时间点之间精确到帧地截取片段。
POST /v1/video/trim音频截取按起止时间切出一段音频,输出为 MP3。
POST /v1/audio/trim缩略图/封面在任意时间点抓取一帧,用作视频缩略图。
POST /v1/video/extract-cover在 MP4、WebM、MOV、GIF 之间转码。
用兼顾画质的预设方案压小文件体积。
把多个片段首尾拼接成一个文件。
大家都用 Fotovid 做什么
给用户上传的每个视频和图片打上你的品牌标识或用户专属标记——就在处理上传的那个请求里顺手完成。
把长录像剪成适合分享的片段,再抓一张缩略图做预览卡片,全部在你的 API 路由里搞定。
从上传的视频里剥离音轨,把 MP3 交给你的转写或 AI 流水线。
按需生成封面帧,让图库和信息流加载飞快,还不用把 ffmpeg 打进包里。
从第一个请求起就为 serverless 而生
小任务在同一个请求里同步返回处理好的文件;耗时任务异步执行,完成后回调你的 Webhook——不用轮询。
包里不用带 ffmpeg 二进制,也不用额外挂一个拖慢冷启动的层。同一个 HTTPS 调用,在 Vercel、Cloudflare Workers、Lambda 或 Deno 上都一样能跑。
每个任务都会返回一个指向成品文件的预签名 URL——你可以直接流式读取、转存,也可以把文件内容整个拉下来。不用往函数的只读磁盘里写任何东西。
