V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xlsepiphone
V2EX  ›  程序员

Golang 的 http.DetectContentType 有更好的替代实现吗?

  •  
  •   xlsepiphone · Sep 12, 2021 · 2897 views
    This topic created in 1689 days ago, the information mentioned may be changed or developed.

    我发现 http.DetectContentType 无法识别出一个 mp4 文件的文件类型。

    只会返回application/octet-stream

    http.DetectContentTypenet/http 包提供的一个方法,可以用于识别文件的类型。但是目前看来支持并不完善。

    在 GitHub 上看到有相关的讨论,但是貌似没有结论。

    直接在命令行用 file 命令是没问题的。

    # file 命令输出如下
    ISO Media, MP4 Base Media v1 [IS0 14496-12:2003]
    

    ps.用过文件扩展名判断不靠谱,所以想通过文件头判断。

    Supplement 1  ·  Sep 13, 2021

    最后还是用的github.com/gabriel-vasile/mimetype这个库,因为https://github.com/h2non/filetype会把我的mp4封装格式的电影识别成video/quicktime。而mimetype库会识别成video/mp4

    然后然我用ffprobe看,输出如下(H.264编码的)

    format_name=mov,mp4,m4a,3gp,3g2,mj2
    format_long_name=QuickTime / MOV
    

    我用了解到的浅薄的视频编码相关的知识无法解释上述现象,因为我理解mov和mp4应该都是视频封装格式。为什么一会儿是mov一会儿又是mp4。

    我用Mac下的Finder查看视频信息,显示的又是 MPEG-4影片,完全糊涂了。

    4 replies    2021-09-12 18:46:33 +08:00
    wangbenjun5
        1
    wangbenjun5  
       Sep 12, 2021
    自己 fix 。。。或者改需求,正常来说,通过扩展名都能识别出啊,没必要 detect
    xlsepiphone
        2
    xlsepiphone  
    OP
       Sep 12, 2021
    @wangbenjun5 #1 很多扩展名是重复的,从扩展名你无法知道这是一个什么文件,例如是图片还是视频。
    leo2n
        3
    leo2n  
       Sep 12, 2021   ❤️ 1
    xlsepiphone
        4
    xlsepiphone  
    OP
       Sep 12, 2021
    @leo2n #3 结贴!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5883 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 02:59 · PVG 10:59 · LAX 19:59 · JFK 22:59
    ♥ Do have faith in what you're doing.