检测 bilibili 页面可下载的视频资源,提供分辨率选择与下载按钮。仅用于无版权或可下载内容。
这是一个油猴 (Tampermonkey) 脚本,用于在 Bilibili 视频页面添加一个下载助手,以帮助用户下载(仅限无版权或已授权的)视频内容。
本脚本的最大特色是完美解决了 Windows 命令行 (cmd.exe) 在处理中文文件名时的 Illegal byte sequence 编码冲突问题。
DASH 视频流(不同分辨率)和音频流。GM_xmlhttpRequest 在后台下载,解决了跨域(bilivideo.com)导致的 download 属性失效问题。cmd 编码BUG:下载纯英文文件名(输入),但合并为中文文件名(输出)。本脚本采用“先下载,后合并”的工作流,是为了规避B站的防盗链和 Windows cmd 的编码 BUG。
B站防盗链 (403 Forbidden):
B 站服务器会验证 Referer 和 Cookie。ffmpeg 直接请求 URL 会被拒绝。
GM_xmlhttpRequest 模拟浏览器下载,它会自动携带所有必需的请求头,下载 100% 成功。Windows cmd 编码 (Illegal byte sequence):
cmd 默认使用 GBK 编码。当 ffmpeg -i "中文名.mp4" 启动时,ffmpeg 期望 UTF-8 但收到了 GBK,导致读取文件失败。
yhxxx 发现的特性——ffmpeg 读取中文会失败,但写入中文(-c copy "中文名.mp4")是成功的。BV..._video.mp4)作为输入文件名,但在 cmd 命令中指定中文标题(如 BV..._中文标题.mp4)作为输出文件名,从根源上解决了此问题。安装 FFmpeg: 确保你的电脑已安装 FFmpeg 并已将其添加到系统环境变量 (PATH) 中。
打开 B 站视频: 页面加载完成后,播放器右上角会出现“下载”按钮。
下载源文件: 点击“下载”按钮,在弹出的面板中选择好画质,然后点击“⬇️ 合并下载”。
等待下载:
浏览器将下载两个纯英文文件(例如:BVxxxx_video.mp4 和 BVxxxx_audio.m4a)。
复制命令: 等待下载完成后,点击面板上的“复制”按钮。
执行合并:
cmd 并回车,打开命令行。完成:
ffmpeg 会自动合并视频,输出带中文标题的 .mp4 文件,并自动删除两个纯英文的源文件。