首页  >  文章  >  后端开发  >  为什么我的 Go 网络服务器无法播放 MP4 视频?

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

Barbara Streisand
Barbara Streisand原创
2024-10-31 23:28:28799浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn