首页 > 后端开发 > Golang > 正文

为什么我的 Go 网络服务器无法播放 MP4 视频?

Barbara Streisand
发布: 2024-10-31 23:28:28
原创
798 人浏览过

Why Can't My Go Webserver Play MP4 Videos?

从 Go Web 服务器提供 MP4 视频的问题

在定制的 Go Web 服务器中,尝试显示 MP4 视频导致空白直接打开 HTML 文件时,网站上的视频屏幕可以正常播放。

解决方案

问题与视频文件大小有关。 Chrome 使用缓冲区来播放视频,如果视频超出缓冲区大小,则期望服务器支持部分内容服务(范围请求)。然而,原始的 Go 代码缺乏此支持。

实现

为了解决这个问题,作者实现了两种方法:

  • A部分内容服务的自定义方法(已注释掉)
  • 使用“http.ServeFile()”方法,该方法支持范围请求

自定义方法

自定义方法在响应中添加了以下标头:

<code class="go">w.Header().Add("Accept-Ranges", "bytes")
w.Header().Add("Content-Length", strconv.Itoa(size))
w.Header().Add("Content-Range", "bytes " + requestedBytes[6:len(requestedBytes)] + strconv.Itoa(size - 1) + "/" + strconv.Itoa(size))
w.WriteHeader(206)</code>
登录后复制

这向 Chrome 表明服务器支持部分内容服务。

http.ServeFile()方法

“http.ServeFile()”方法通过提供对 Range 请求的内置支持来简化该过程。它处理设置适当的响应标头并负责部分内容服务。

结论

两种方法都可以播放视频,但是 'http.ServeFile()'更实用,因为它处理内容服务的各个方面,包括范围请求和 MIME 类型。最终,通过确保服务器支持部分内容服务,使 Chrome 能够有效缓冲和播放更大的视频,问题得到解决。

以上是为什么我的 Go 网络服务器无法播放 MP4 视频?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!