用途:ttdl 是一个浏览器原生的 TikTok 视频下载工具,作为 browser-harness-js 的 heredoc 脚本运行,不依赖 yt-dlp、内置签名求解器或 HTTP 客户端伪装。它让浏览器页面正常播放视频,再录制播放流,从而得到干净、无水印的版本(TikTok 应用内下载按钮提供的是另行渲染的水印文件)。
主要能力:支持最佳画质(由播放器自动选择并爬升到最高质量)、仅音频(.m4a)、查看标题/作者/时长/分辨率信息;可处理完整视频链接、短链(vm.tiktok.com 等,由浏览器解析跳转)和纯数字视频 ID;可指定输出名称与目录。输出保持 TikTok 原始编码(通常 HEVC 视频 + AAC 音频),对 QuickTime/iOS 友好,无需重编码。
使用方式:命令行示例包括 ttdl "<视频URL>"(默认最佳画质输出到 ~/Downloads)、ttdl "<URL>" -q audio(仅音频)、ttdl "<URL>" --info(查看信息)、ttdl "<短链>"、ttdl <纯数字ID>、ttdl "<URL>" -o Name -d ~/Videos。脚本位于 scripts/ttdl,scripts/setup 可将 ttdl 与 browser-harness-js 链接到 PATH。
限制:必须安装 ffmpeg,用于合并音视频、按时长裁剪和 faststart 处理,CLI 在 PATH 中找不到 ffmpeg 时会拒绝运行。没有 -q 720p/1080p 这类指定分辨率选项,因为 TikTok 网页播放器不暴露清晰的质量 API,只能捕获播放器实际达到的最高质量。需要前台标签页,后台标签页自动播放不可靠。遇到验证码/人机验证需先在浏览器手动打开一次再重试。地区限制、年龄限制或仅粉丝可见内容可能需要已登录的 TikTok 会话。输出通常为 HEVC+AAC;若遇到 AV1/VP9+Opus 且需要 QuickTime/iOS 播放,需另行重编码。
其他事实:ttdl 通过注入 MSE 钩子记录 SourceBuffer.appendBuffer 的字节,按 codecs 参数区分音视频,选取每类最大缓冲,并以 256 KB 分片经 CDP 传回磁盘,最后用 ffmpeg -c copy 合并并裁剪到播放时长。具体实现细节以官方资料为准。