我发现 http.DetectContentType 无法识别出一个 mp4 文件的文件类型。
只会返回application/octet-stream。
http.DetectContentType 是 net/http 包提供的一个方法,可以用于识别文件的类型。但是目前看来支持并不完善。
在 GitHub 上看到有相关的讨论,但是貌似没有结论。
直接在命令行用 file 命令是没问题的。
# file 命令输出如下
ISO Media, MP4 Base Media v1 [IS0 14496-12:2003]
ps.用过文件扩展名判断不靠谱,所以想通过文件头判断。
然后然我用ffprobe看,输出如下(H.264编码的)
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
我用了解到的浅薄的视频编码相关的知识无法解释上述现象,因为我理解mov和mp4应该都是视频封装格式。为什么一会儿是mov一会儿又是mp4。
我用Mac下的Finder查看视频信息,显示的又是 MPEG-4影片,完全糊涂了。
1
wangbenjun5 2021-09-12 18:34:42 +08:00
自己 fix 。。。或者改需求,正常来说,通过扩展名都能识别出啊,没必要 detect
|
2
xlsepiphone OP @wangbenjun5 #1 很多扩展名是重复的,从扩展名你无法知道这是一个什么文件,例如是图片还是视频。
|
3
leo2n 2021-09-12 18:43:34 +08:00 1
https://github.com/h2non/filetype
Rocking !!! |
4
xlsepiphone OP @leo2n #3 结贴!
|