douyin video_id 提取实操:为什么播放地址一拼就 404
【免费下载链接】douyinVue3 + Pinia 仿抖音,Vue 在移动端的最佳实践 . Imitate TikTok ,Vue Best practices on Mobile项目地址: https://gitcode.com/GitHub_Trending/do/douyin
这篇文章写给刚接手 douyin 项目(Vue3 + Pinia 仿抖音)的新手:教你从项目数据里提取 video_id、拼出能播放的地址,并解释为什么拿 aweme_id 去拼会直接 404。
一、404 现场:十有八九是 ID 用混了
先给结论:播放请求 404,基本是两种 ID 用混了。这个项目里同时存在三套标识,先分清再动手。
一句话分清:aweme_id 是"档案编号",video_id 是"取货凭证",两套体系,不能互换。
| 标识 | 长什么样 | 实际用途 |
|---|---|---|
| aweme_id | 7260749400622894336(19 位数字) | 查元数据、对评论、做统计 |
| video_id | v0d00fg10000cj1lq4jc77u0ng6s1gt0 | 播放 URL 的主参数 |
| file_id | bed51c00899b458c | 播放 URL 的次参数,与 sign 配套 |
⚠️ 拿 19 位数字的 aweme_id 去填 video_id 参数,播放请求当场 404,两者不在同一个标识空间里。
二、批量场景:从本地 JSON 直接取 video_id
适合一次处理一批视频;手里只有旧数据、没有最新接口响应时别用这条,地址会过期(见第四节)。
项目把接口原始响应存成了本地 JSON,public/data/videos.json 里每条记录就是一个视频,包含aweme_id和video.play_addr.url_list[0](完整播放 URL):
- 打开该文件,取任意一条记录的
video.play_addr.url_list[0],形如https://www.douyin.com/aweme/v1/play/?video_id=v0300...&file_id=...&sign=... - 解析 URL 取参,video_id 就是其中的主参数:
const url = item.video.play_addr.url_list[0] const u = new URL(url) console.log(u.searchParams.get('video_id'))数据里第一条视频的封面(video.cover引用的图)就是这张,同一条记录里就能取到它的 video_id:
三、单个视频:PC 网页版抓包 1 分钟拿一次
适合只想给某个正在看的视频拿一次 video_id、不需要批量的情况。
- 在抖音 PC 网页版播放目标视频,按 F12 打开开发者工具
- 切到 Network 面板,过滤框输入
play,再重新触发一次播放 - 找以
aweme/v1/play/开头的请求,打开 query string,video_id=后面那段就是 - 只复制 video_id 的值本身,不要把整串 query 当 ID 用——sign、file_id 是配套参数,单拎 video_id 拼不出新地址
四、拿到后怎么验证:格式对不对、地址过没过期
- 看格式:video_id 是
v0开头、带字母的字符串;拿到 19 位纯数字说明取成了 aweme_id,回第二节重取 - 看播放:把
play_addr.url_list[0]整串贴进浏览器地址栏,视频能拉流就算对 - ⚠️ 地址过期后,回接口重新取一次该视频的
play_addr,旧 JSON 里那串地址直接作废,别复用
五、按用途选标识,收尾三条建议
- 查元数据、统计、对评论 → 用aweme_id
- 播放或下载视频流 → 直接用
play_addr.url_list[0]整串,不必拆出 video_id、file_id、sign 自己重拼 - 跟评论文件对名字 → 认准数据里那个 19 位长数字,那才是评论脚本实际使用的键;评论拆分脚本 里变量叫
video_ids,装的却是 aweme_id,别被名字带偏 - ⚠️ 老组件里域名是
api.amemv.com,新数据是www.douyin.com,动手前先瞄一眼你那份 JSON 里 URL 的域名,别拿旧格式套新数据
【免费下载链接】douyinVue3 + Pinia 仿抖音,Vue 在移动端的最佳实践 . Imitate TikTok ,Vue Best practices on Mobile项目地址: https://gitcode.com/GitHub_Trending/do/douyin
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考