从 Go Web 服务器提供 MP4 视频的问题
在定制的 Go Web 服务器中,尝试显示 MP4 视频导致空白直接打开 HTML 文件时,网站上的视频屏幕可以正常播放。
解决方案
问题与视频文件大小有关。 Chrome 使用缓冲区来播放视频,如果视频超出缓冲区大小,则期望服务器支持部分内容服务(范围请求)。然而,原始的 Go 代码缺乏此支持。
实现
为了解决这个问题,作者实现了两种方法:
自定义方法
自定义方法在响应中添加了以下标头:
<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中文网其他相关文章!