Video streaming 视频流中的导航,golang中的反向代理

Video streaming 视频流中的导航,golang中的反向代理,video-streaming,go,reverse-proxy,Video Streaming,Go,Reverse Proxy,我正在测试go中的反向代理。主要用于通过底层nginx播放视频,以及从其他后端服务器播放流式视频 问题是在浏览视频时。例如,当通过代理播放vlc时,视频正常启动,但在尝试导航时停止。但是如果我直接从nginx播放这个视频,效果很好 我原以为on navigation player会创建带有Range:N-标题的新连接,但只有在再次启动视频时才有新连接 问题: 播放视频流时,播放器如何导航?它向服务器发送什么请求? 也许我在处理连接时遗漏了什么 这是一个非常基本的测试版本,它从本地nginx流式传

我正在测试go中的反向代理。主要用于通过底层nginx播放视频,以及从其他后端服务器播放流式视频

问题是在浏览视频时。例如,当通过代理播放vlc时,视频正常启动,但在尝试导航时停止。但是如果我直接从nginx播放这个视频,效果很好

我原以为on navigation player会创建带有
Range:N-
标题的新连接,但只有在再次启动视频时才有新连接

问题:

播放视频流时,播放器如何导航?它向服务器发送什么请求? 也许我在处理连接时遗漏了什么

这是一个非常基本的测试版本,它从本地nginx流式传输视频,(本地视频url-
http://localhost/31285611
):

在go中创建连接时,来自nginx的响应:

map[Server:[nginx/1.3.4] Date:[Tue, 23 Apr 2013 13:29:00 GMT] Content-Type:[application/octet-stream] Content-Length:[8147855699] Last-Modified:[Tue, 21 Aug 2012 20:47:20 GMT] Etag:["5033f3d8-1e5a66953"] Content-Range:[bytes 0-8147855698/8147855699]]

我知道它并没有真正回答你的问题(我还没有足够的观点来评论,所以很抱歉提供这个答案!)但是你试过使用Go内置的http.ReverseProxy()吗

这里似乎有一个很好的简单示例,我在下面稍微修改了一下:

package main

import (
    "log"
    "net/http"
    "net/http/httputil"
    "net/url"
)

func main() {
    proxy := httputil.NewSingleHostReverseProxy(&url.URL{Scheme: "http", Host: "www.google.com", Path: "/"})

    err := http.ListenAndServe(":8080", proxy)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}
看看这是否有效


此外,在之前链接的谷歌小组讨论中,提到NginX在分块编码方面存在问题。可能值得检查这是否相关。

为什么不转储标题并观察玩家正在做什么?我这样做了,只是从代码中删除了和平(现在将发布标题转储),正如我所写的-在PlayerId中导航时没有新的连接你找到解决方案了吗?我正在尝试做类似的事情:请在发布之前检查您的工作。这是不可编译的。err.String()不存在,http也不存在。URL@utdrmac对不起,这个答案已经有6年了!我已经用一个有效的例子更新了这个例子。谢谢你的提醒!
map[Server:[nginx/1.3.4] Date:[Tue, 23 Apr 2013 13:29:00 GMT] Content-Type:[application/octet-stream] Content-Length:[8147855699] Last-Modified:[Tue, 21 Aug 2012 20:47:20 GMT] Etag:["5033f3d8-1e5a66953"] Content-Range:[bytes 0-8147855698/8147855699]]
package main

import (
    "log"
    "net/http"
    "net/http/httputil"
    "net/url"
)

func main() {
    proxy := httputil.NewSingleHostReverseProxy(&url.URL{Scheme: "http", Host: "www.google.com", Path: "/"})

    err := http.ListenAndServe(":8080", proxy)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}