VLC客户端如何向服务器请求应用层(HTTP)中的更多数据?

时间:2015-04-13 17:37:49

标签: http networking video-streaming vlc http-streaming

我正在开展与视频流相关的项目。我一直在access_output和access模块​​中广泛阅读http代码。我的问题是关于客户端如何要求服务器在应用程序层中发送更多数据,特别是使用http。我假设它位于src / network文件夹中的httpd文件中,但我一直在写日志文件,我似乎无法弄清楚客户端如何请求数据。看起来服务器似乎只是在没有确认的情况下将其发送给客户端,但我非常怀疑是这种情况。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

使用带有HTTP GET标头的Range来获取更多数据。

示例:

Range: bytes=123-

Range: bytes=123-456

VLC 中,您可以在modules/access/http.c中找到相关代码:

static int Request( access_t *p_access, uint64_t i_tell )
{

    [...]

    /* Offset */
    if( p_sys->i_version == 1 && ! p_sys->b_continuous )
    {
        p_sys->b_persist = true;
        net_Printf( p_access, p_sys->fd, pvs,
                    "Range: bytes=%"PRIu64"-\r\n", i_tell );
        net_Printf( p_access, p_sys->fd, pvs, "Connection: close\r\n" );
    }

另请参阅:RFC中的HTTP Range Requests