为了账号安全,请及时绑定邮箱和手机立即绑定

用 go gin 提供视频

用 go gin 提供视频

Go
哔哔one 2022-06-21 15:56:33
我正在编写一个 api 服务器,用于通过 go-gin 框架上传和提供视频和图像。我已将我的视频上传到另一个主机,并且它有效router := gin.Default()    //config := cors.DefaultConfig()    //config.AllowAllOrigins = true    routerConfig := cors.Config{        AllowAllOrigins:  true,        AllowMethods:     []string{"GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"},        AllowHeaders:     []string{"X-Requested-With", "Authorization", "Origin", "Content-Length", "Content-Type"},        AllowCredentials: false,        MaxAge:           12 * time.Hour,    }    router.Use(cors.New(routerConfig))    router.StaticFS("/public", http.Dir("static"))    err := router.Run(":5000")    if err != nil {        panic(err)    }当我尝试http://localhost:5000/public/{image_url}.png通过铬访问时。它加载到浏览器。但是当我http://localhost:5000/public/{video_url}.mp4通过 chromium 访问时,它无法从浏览器加载任何内容(它无法接收)有人可以为我解释我做错了什么吗?
查看完整描述

1 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

您的问题有两种可能的解释。

  1. 这不是问题,因为您的浏览器没有运行视频的任何功能。

  2. (这是更可能的解释)您没有为流式视频设置正确的标头,因此浏览器无法识别或不知道如何处理该 URL。

例如我从这个视频中得到,当你检查响应头时,它应该显示

content-length: 1570024
content-range: bytes 0-1570023/1570024
content-type: video/mp4

我的建议是使用支持服务范围请求的http.ServeFile 。请参阅相关问题,GoLang http webserver 提供视频 (mp4)How to serve http partial content with Go?.

更新

检查Gin StaticFS Godoc后,我认为它不支持 Range 标头。

测试后

所以我尝试了你的代码,但我错了,Gin StaticFS 可以提供像 video 这样的内容范围

这是我的屏幕截图,已经使用 Chromium 对其进行了测试,并且效果很好:

//img1.sycdn.imooc.com//62b179e70001024e15950794.jpg

我的结论是:您的操作系统不支持您的 Chromium 或编解码器或视频编解码器存在问题(我不知道您的操作系统是什么),请检查此MP4 未在 Chrome 版本 27.0 上播放

由于 Chrome 删除了对 h264 的支持,在某些机器上,用它编码的 mp4 视频要么不起作用(在 Firebug/Network 选项卡下查看时抛出 Parser 错误 - 与此处提交的问题一致),要么使浏览器崩溃,具体取决于编码设置

它不一致 - 它完全取决于计算机上安装的编解码器 - 虽然我的机器上没有遇到这个问题,但我们确实在发生问题的办公室里有一个(因此我们使用这个进行测试)

它可能与 Quicktime / divX 设置有关(有问题的机器的 Quicktime 版本比我的本机版本旧 - 我们不想丢失我们的测试电脑,所以我们没有更新它)。


查看完整回答
反对 回复 2022-06-21
  • 1 回答
  • 0 关注
  • 214 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号