前言
叔叔我啊,最讨厌不能赚钱的东西了。
今年不知道哪个版本号更新后,Windows应用商店里的B站客户端下载的视频即便设置导出为MP4文件,也无法直接用通用的视频播放器播放,这实在是有失体统。偌大一个公司开发的软件,怎么能“写错”这么基本的功能呢?
问题分析
MP4文件头为三个00
字节,这是公开的标准。我们将从B站上随意下载的一个视频放到十六进制编辑器中,可以看到
1 2 3 4 5 6 7
| Hex View 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 FF FF FF 00 00 00 20 66 74 79 70 69 73 6F 6D 00 ...... ftypisom. 00000010 00 02 00 69 73 6F 6D 69 73 6F 32 61 76 63 31 6D ...isomiso2avc1m 00000020 70 34 31 00 00 00 08 66 72 65 65 04 2B B2 37 6D p41....free.+.7m 00000030 64 61 74 00 00 00 5C 06 05 58 B3 E1 63 30 8C 3C dat...\..X..c0.< 00000040 9E 4F C2 39 81 09 7E AA A5 2E 20 42 49 4C 49 41 .O.9..~... BILIA
|
后面都是很正常的MP4文件内容,唯独在文件前端,多出了三个FF
字节,这就是导致下载的视频文件无法被通用视频播放器播放的原因。我想肯定是程序员不小心写出来的bug啦,才不是叔叔想要赚钱呢!
解决方法
那么接下来,我们就帮粗心的程序员修复一下下载的文件,让它们能被正常播放吧!
如果电脑上有Linux环境(WSL也可以),那就是再方便不过的事情啦。只需要执行如下命令:
1
| tail -c +4 YourLoveYourLife.mp4 > LemonRipe.mp4
|
其中,tail
读取文件内容并输出到标准输出中。-c +NUM
参数,代表从NUM
位字节开始读取文件内容,如上面的-c +4
表示从第4个字节开始读取文件(跳过前3个FF
字节),YourLoveYourLife.mp4
是你使用Windows哔哩哔哩客户端下载的视频文件路径,LemonRipe.mp4
是最终你生成的可以用第三方播放器播放的视频文件路径。使用>
进行输出重定向。