当前,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 文件是音频文件。
我们的目标是把这两个文件合并
对于正常的 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