前几天用达芬奇做视频,把序列帧导入进去作为视频使用,出现了离线媒体的问题,简单记录一下。(材料截稿的最后一天,好多材料要搞,简单弄个视频还出个这个问题真是急死人)

问题简述

简单说一下问题就是,在达芬奇里面将序列帧作为视频使用,需要序列帧放在文件夹里面,然后按顺序命名,导入素材就可以直接作为视频导入进来,挺方便的。因为我之前文件的命名方式还有其他字符,就写了个脚本来统一重命名了一下。但是重命名完之后在达芬奇里面看就变成离线媒体了,没法使用。一般来说离线媒体是丢失了链接,重新链接一下就好了,但是此时并不管用。重启试过了也不行。

问题解决

最后研究了半天发现是因为原来图片是.jpg格式的,重命名的时候不小心改成了.png格式,然后因为直接改后缀成png也是可以正常看图片的所以没有发现。最后把所有后缀改回jpg问题就解决了。

问题成因

为什么会出现直接修改后缀图片还能正常打开的情况?以及为什么能被正常打开却被达芬奇显示离线媒体?

问了下GPT,也去了解了一下,原来是跟魔数(Magic Number)有关。

一般来说我们都是通过文件的后缀来判断文件的类型的,JPG和PNG是两种不同的图片格式,如果只是简单的修改后缀的话并不会对图像进行重新的编码,所以按理来说把JPG后缀改为PNG后再打开图片,也就是使用PNG的方式读取JPG图片是不能正确读取的。但是这里我们用图片查看器却能正常打开,这是因为现在很多图片查看器并不单单通过后缀判断图片类型,还会通过Magic Number来判断图片的类型,也就是魔数。魔数是写在文件开头的几个字节,能用于标记文件的类型。不同类型的文件(如PNG和JPG的图片)的魔数是不一样的。

正是因为有的软件(比如这次用的图片查看器)还会通过魔数来判断文件的类型,然后用正确的方式打开,而有的软件(比如达芬奇)则没有采取这种方式可能是只用后缀判断,所以导致了文件的读取出现问题。

虽然魔数和后缀都能用来区分文件类型,但是也不是替代关系。后缀能够直接查看,用起来更方便,但是也更容易被不小心的修改。而魔数不方便读取查看,同样带来的也就是更加的准确。所以如果遇到需要准确判断文件的类型的情况,除了判断后缀外,稳妥点还是要检查一下文件的魔数。

参考

ChatGPT

令人匪夷所思的 Magic 之魔数,你真的不会-阿里云开发者社区

List of file signatures - Wikipedia