粘贴抖音链接 / 上传视频 → 提取音频 → ASR识别 → 输出文案

REST API 抖音解析 阿里云 ASR FFmpeg FastAPI
支持抖音分享文本、抖音链接和普通公开视频 URL
已识别
📹
拖拽视频文件到这里,或点击选择
支持 MP4 / MOV / AVI / MKV / WEBM / M4V,最大 500MB
🎬
页面会调用真实后端,并按任务状态动态更新进度。
识别结果
分享链接 / 视频URL / 文件
解析抖音链接
下载视频
FFmpeg + ASR
JSON 文案
统一入口:API 会自动识别输入类型。抖音分享文本优先走自建解析,失败时自动降级到 yt-dlp 兜底;普通视频 URL 和上传文件则直接进入转写链路。

核心接口

POST /api/transcribe

统一文案提取接口,支持三种输入方式。

参数类型说明
file三选一multipart直接上传视频文件
url三选一string视频直链或抖音链接
share_text三选一string抖音分享文本(整段文字即可)
language可选string语言,默认 zh

示例 1:传入抖音分享文本

curl -X POST https://xy.zhezhong.top/api/transcribe \
  -H "Content-Type: application/json" \
  -d '{
    "share_text": "4.66 复制打开抖音,看看... https://v.douyin.com/xxxxx/",
    "language": "zh"
  }'

示例 2:传入视频直链

curl -X POST https://xy.zhezhong.top/api/transcribe \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/video.mp4","language":"zh"}'

示例 3:上传文件

curl -X POST https://xy.zhezhong.top/api/transcribe \
  -F "file=@video.mp4" \
  -F "language=zh"

统一响应格式:

{
  "code": 0,
  "message": "success",
  "data": {
    "text": "完整的识别文案...",
    "duration": 65.3,
    "sentences": [
      {"text":"大家好","start_time":0.5,"end_time":1.2},
      {"text":"今天分享一个工具","start_time":1.3,"end_time":3.1}
    ],
    "source_type": "douyin_share"
  }
}

异步接口(长视频)

POST/api/transcribe/async

参数与同步接口一致,提交后返回 task_id,再轮询状态接口。

{
  "code": 0,
  "message": "accepted",
  "task_id": "t_abc123",
  "status": "processing",
  "stage": "queued"
}
GET/api/transcribe/status/{task_id}

轮询状态:processingcompleted / failed,完成后返回与同步接口一致的 data

Agent 工作流集成

在 LangChain / Dify / Coze 中注册为 Tool,直接传入分享文本:

import requests

def video_transcribe(share_text: str) -> str:
    resp = requests.post(
        "https://xy.zhezhong.top/api/transcribe",
        json={"share_text": share_text, "language": "zh"},
        timeout=300,
    )
    payload = resp.json()
    if payload["code"] == 0:
        return payload["data"]["text"]
    raise Exception(payload["message"])
当前线上实现:FastAPI + FFmpeg + OSS + 阿里云 DashScope ASR,抖音入口采用 “自建解析优先,yt-dlp 自动兜底” 的优雅降级链。服务部署在杭州 ECS,通过 systemd + nginx 提供 xy.zhezhong.top 域名访问。

项目目录

videoscribe/
├── main.py
├── douyin_parser.py
├── asr_client.py
├── audio_extractor.py
├── oss_client.py
├── task_store.py
├── config.py
├── requirements.txt
├── .env
└── static/index.html

降级链说明

1. 从分享文本里提取抖音链接
2. 优先走自建解析,直接拿视频直链
3. 自建解析失败时,自动降级到 yt-dlp
4. 若能拿到直链,则用 requests 流式下载
5. 若直链下载失败,则再降级到 yt-dlp 直接下载
6. 视频下载完成后,进入 FFmpeg -> OSS -> ASR 主链路

依赖

fastapi==0.111.0
uvicorn==0.30.1
python-multipart==0.0.9
python-dotenv==1.0.1
requests==2.32.3
oss2==2.18.6
pytest==8.3.2
yt-dlp>=2025.03.31

部署要点

# 1. 准备 Python 3.12、ffmpeg、ffprobe
# 2. pip install -r requirements.txt
# 3. 配置 DASHSCOPE_API_KEY / OSS 凭证
# 4. uvicorn main:app --host 127.0.0.1 --port 8011
# 5. nginx 反代到 127.0.0.1:8011
# 6. systemd 托管进程并接入 xy.zhezhong.top