首页 / 资讯中心 / 文章详情

douyin-vue 视频播放地址从哪来?跟一条数据走到底

douyin-vue 视频播放地址从哪来?跟一条数据走到底 ★ FEATURED ARTICLE
douyin-vue 视频播放地址从哪来跟一条数据走到底【免费下载链接】douyinVue3 Pinia 仿抖音Vue 在移动端的最佳实践 . Imitate TikTok Vue Best practices on Mobile项目地址: https://gitcode.com/GitHub_Trending/do/douyin拿到 douyin-vue 的数据两个 ID 攥在手里视频还是播不出来。说白了视频播放地址不是拿 ID 现拼的它早就以完整 URL 的形式躺在数据里。下面把这条链路拆开看地址藏在哪个字段、数据怎么流到video标签、自己抓数时该看什么。一张表分清三个角色的分工角色长什么样管什么出现在哪aweme_id19 位纯数字如7234461833913044283这是谁的哪条作品查详情、评论、作品列表的入参video_idv开头字母数字串如v0200fg10000chivg9bc77u4ocj8980g文件放在 CDN 的哪个位置播放 URL 里的video_id参数sign32 位十六进制串此刻有没有资格取这个文件与video_id、file_id一起挂在 URL 上记住分工一句话aweme_id管档案video_id管文件sign管凭证三者谁也推不出谁。跟一条记录走完全程打开 public/data/videos.json 挑一条真实记录aweme_id是7234461833913044283标题是每一天的我们 都是绝版的自己。看它的video节点play_addr: { uri: v0200fg10000chivg9bc77u4ocj8980g, url_list: [https://www.douyin.com/aweme/v1/play/?video_idv0200...file_id...signb1f971dc...] }uri就是video_id本身url_list里则是已经带上file_id和sign的成品播放地址浏览器拿来直接用项目里没有任何一处代码在实时计算它。数据从哪产生。原始数据是作品列表接口吐出的aweme_list大 JSON先落在 node/input.json。node/post/process-post.js 干的是裁剪活顶层只留aweme_id、desc、music、video等白名单字段video里再只留play_addr、cover、duration然后把裁剪结果合并进node/post/data/下的用户文件。白名单式的裁剪还有个隐藏作用——抖音返回结构不定期调整适配逻辑被集中在这一层前端感知不到变化。落在仓库哪里。快照最终进 public/data/videos.json 这类数据文件。这条记录的cover.url_list写着1Bn9LeXtXxY7o17Zeabfs.png——图已经下载进 public/images/本地就能显示不用回 CDN 取评论是另一条支线node/comment/process.js 维护一份 19 位数字的 ID 列表把抓回来的评论大 JSON 按aweme_id逐条过滤拆成 public/data/comments/ 下的小文件。别被文件名绕晕——video_id_7260749400622894336.json里的 key 其实是aweme_id。前端哪层消费。src/api/videos.ts 里的recommendedVideo()等函数只负责发请求、收数据真正的后端在 src/mock/index.ts用 axios-mock-adapter 拦截/video/recommended/把内存数组按start、pageSize切片返回total固定写 844。初始数据来自src/assets/data/posts6.json启动 1 秒后 mock 还会拉/data/videos.md往数组里追加一批。最后变成可播放内容。src/components/slide/BaseVideo.vue 里source v-forurlItem in item.video.play_addr.url_list循环把url_list逐个塞进video标签长视频页 src/pages/home/slide/LongVideo.vue 则直接取url_list[0]。sign还有效画面就出来。video_id 从哪里来两条取数路径从浏览器 Network 面板拿。抖音 PC 网页版打开任意作品F12 进 Network过滤play关键字视频开始加载时会出现play/?video_id...的请求。URL 里video_id后面的值就是目标整条请求 URL 顺手存下来就是现成的播放地址。从接口响应里直接读。作品列表响应的video.play_addr.uri就是video_id同级的url_list是带sign的成品地址。node/post/process-post.js 的白名单裁剪就是这条路径的工程化版本——把原始响应瘦成项目要的骨架其余字段全丢。4 个边界条件过一阵子视频集体 403→url_list里的sign带时效本地快照只是某个时间点的定格。应对数据当一次性快照用要长期跑就定期重抓刷新。拿aweme_id去拼play/?video_id→ 这个参数只认video_id两个 ID 互推不出来。应对查数用aweme_id播放走url_list成品地址别试图建映射表。看到video_id_*.json以为是视频文件 ID→ node/comment/process.js 命名和字段混用了文件里的 key 是aweme_id。应对认数字不认文件名19 位纯数字就是aweme_id。抖音改字段后数据缺东西→ 接口返回结构会不定期调整。应对把适配逻辑留在数据处理层的白名单里前端和 mock 保持不动。收个尾链路压成一句aweme_id管档案、video_id管文件、sign管凭证。现在就能做打开 public/data/videos.json 随手挑一条对着play_addr把这三样找出来。【免费下载链接】douyinVue3 Pinia 仿抖音Vue 在移动端的最佳实践 . Imitate TikTok Vue Best practices on Mobile项目地址: https://gitcode.com/GitHub_Trending/do/douyin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站