脚本介绍:
这是用于红狐弹幕播放器的下载工具,能够一键获取原视频的音频和视频文件,下载之后需要用户手动合并(我推荐使用ffmpeg)
下载到的视频大小取决于你选择的当前的分辨率大小,所以默认是最高画质的,使用流量的用户可能需要注意一下文件大小
!注意该脚本有一定门槛!
1.只能用于B站,并且不能直接输出合并后的文件
2.需要自己完成合并工作,推荐ffmpeg,python等,当然也可以自己搜索方案~
3.推荐搭配我的另一个脚本:点我跳转
4.遇到一些奇怪标题需要自行修改为符合要求的字符
废话环节:
❓1. 为什么不推荐把“合并音视频”的功能直接写进 Tampermonkey 脚本(JS)?
📌 答案:
浏览器中的 JavaScript 环境无法进行高效的媒体合并操作,原因包括:
🔒 安全与沙盒限制:
浏览器运行的 JS 是“沙盒环境”,不能访问本地文件系统,也无法执行像 ffmpeg 这样的外部程序。
Tampermonkey 脚本再强也只能模拟点击/下载/改 DOM,不能进行音视频流拼接、重编码等重计算工作。
🧠 技术瓶颈:
虽然有像 ffmpeg.wasm 的 WebAssembly 尝试实现浏览器内合并,但它:
非常慢(因为没有原生 CPU 加速)
占内存大(几十到上百 MB)
兼容性差
加载时间久,体验极差
✅ 所以最佳方案是:
浏览器负责“识别与下载”,本地工具(如 ffmpeg)负责“合并与转码”。
❓2. 为什么下载的视频常常是音视频分离的?
📌 答案:
因为这是现代流媒体网站为了灵活性和性能采用的策略,称为“DASH”或“HLS”协议的特性。
▶ 背后技术:
DASH(Dynamic Adaptive Streaming over HTTP)
HLS(HTTP Live Streaming,苹果的标准)
📦 他们会将视频文件“分轨”:
视频轨(不同清晰度 bitrate)
音频轨(通常是单独 AAC/WAV/MP3)
✅ 原因:
自适应码率切换
网络好就切 1080p,差就 480p
只需要替换视频流,不换音频
节省带宽与缓存
同一个音频轨可以配多个分辨率的视频
不用为每种分辨率复制一份音频
提升体验(无缝切换分辨率)
❓3. 为什么很多网站使用多段 .ts 文件?
📌 答案:
这是 HLS协议的实现方式。这些 .ts 文件叫做“切片”或“分段片段”。
✅ 使用多段 .ts 的原因:
原因 说明
🚀 快速开始播放 用户打开页面时只下载前几个 .ts 片段就能播放,不需下载完整视频
📡 边播边下(流式传输) 每段几秒,节省带宽,提高播放流畅度
🔁 支持分辨率切换 播放器根据网速切换下载不同分辨率的 .ts 列表
🔐 更容易加密 每段 .ts 可以单独加密或打乱顺序,防止用户直接整段下载
📉 防止盗链和资源滥用 因为文件是“碎的”,很难被一次性下载整合
✅ 总结一句话:
分离音视频轨和使用多段 .ts 文件都是为了提高播放体验、节省带宽、并强化版权保护。而浏览器的 JS 脚本主要用于抓取链接,不适合做重的合并处理。