@xyzwps

如何把 B 站缓存的视频从 m4s 转换成 mp4?

2026-01-12

B 站缓存格式

当前,B 站缓存的视频目录大概是下面的文件结构:

342304156 % tree
.
├── 342304156_nb2-1-30080.m4s
├── 342304156_nb2-1-30280.m4s
├── dm1
├── dm2
├── group.jpg
├── image.jpg
├── videoInfo.json
└── view

其中 30080.m4s 文件是体积较大,是视频文件,30280.m4s 文件是音频文件。

我们的目标是把这两个文件合并

转成 mp4 文件

对于正常的 m4s 文件来说,一条命令就足够了:

ffmpeg -i 342304156_nb2-1-30080.m4s -i 342304156_nb2-1-30280.m4s -c copy output.mp4

但是对 B 站的缓存使用上面的命令会直接报错,原因是 B 站在这些文件前面加了 9 个 0(😂),需要排除。

下面是正式的命令:

tail -c +10 342304156_nb2-1-30080.m4s > video.m4s
tail -c +10 342304156_nb2-1-30280.m4s > audio.m4s
ffmpeg -i video.m4s -i audio.m4s -codec copy 385383733.mp4

参考