Skip to content

About

将bilibili的m4s文件合并为mp4

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Bilibili_Video_Download

一个用于合并 B 站缓存视频的小工具:将浏览器或客户端缓存下来的视频 m4s 与音频 m4s 合并为一个完整的 MP4 文件。

功能

  • 自动去除 B 站 m4s 文件头部的 9 字节(该头部会导致合并后的视频无法播放)
  • 自动补全 .m4s 扩展名(忘记输入时自动添加)
  • 调用 ffmpeg 以流复制(-codec copy)方式合并,不重新编码,速度快、画质无损
  • 自动生成并执行合并用的批处理文件

环境要求

  • Python 3(仅使用标准库,无需安装第三方依赖)
  • FFmpeg 已安装并加入系统 PATH(ffmpeg -version 可正常执行)

使用方法

  1. 从浏览器(如 Edge / Chrome 访问 B 站视频后)或 B 站客户端缓存目录中,找到视频与音频两个 .m4s 文件(通常分别名为 video.m4s、audio.m4s,或类似 30280.m4s 的数字文件名)。

  2. 运行脚本:

    python main.py
  3. 依次输入视频 m4s 文件与音频 m4s 文件的完整路径(路径用引号包裹亦可,脚本会自动去除):

    Pls input video path:
    Pls input audio path:
    
  4. 脚本会自动完成:

    • 检查文件是否存在、大小是否合法
    • 从两个文件开头各删除 9 字节(会直接覆盖原文件)
    • 在当前目录生成 main.bat 并执行 ffmpeg 合并命令
  5. 合并完成后,在视频文件所在目录得到同名的 .mp4 文件,即可正常播放。

工作原理

B 站网页/客户端缓存的视频和音频是分开的 .m4s 文件,且每个文件开头带有一段 9 字节的文件头,直接合并会导致输出文件无法播放。本脚本的处理流程:

删除视频 m4s 的前 9 字节 ─┐
                          ├─► ffmpeg -i 视频.m4s -i 音频.m4s -codec copy 输出.mp4
删除音频 m4s 的前 9 字节 ─┘
  • 输出文件名 = 视频路径去掉文件名部分(最后 12 个字符)+ .mp4
  • 合并使用 -codec copy 流复制,无转码损耗

注意事项

  • 输出路径由视频路径推导(截取最后 12 个字符作为文件名),因此视频 m4s 文件名需符合该长度约定,否则输出文件位置/名称会不符合预期。
  • 需要 ffmpeg 已安装并配置在 PATH 中,否则生成的 main.bat 会执行失败。
  • 本工具只负责合并缓存好的 m4s 文件,不负责从 B 站下载视频。

目录结构

Bilibili_Video_Download/
├── main.py    # 主脚本:删除 9 字节文件头 + 调用 ffmpeg 合并
└── README.md

常见问题

问题 解决方式
提示"错误:文件不存在" 检查输入的路径是否正确(支持拖拽文件到终端自动填充路径)
提示"错误:文件太小" 文件不足 9 字节,说明不是有效的 m4s 缓存文件
提示 'ffmpeg' 不是内部或外部命令 安装 FFmpeg 并配置环境变量 PATH,然后重新打开终端
合并后视频无法播放 确认两个 m4s 均已成功删除 9 字节(脚本有成功/失败提示),且文件未被修改过

About

将bilibili的m4s文件合并为mp4

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages