我有一个特殊的问题。
服务器 1A 是与用户互动的服务器。服务器 2B , 2C 和 2D 存储视频内容。
在网站上,放置了html视频标签
<video src="server1adomain.com/videos?video=Gy12C899">
无论何时获取此内容,服务器1A上的后端脚本都会确定视频存储在哪个服务器(2B,2C或2D)上并进行获取。可以说它在2B上。我不想等待整个视频从2B提取并存储在1A服务器中,只有在所有这些时间之后才发送给用户。相反,我希望连续的流同时从2B流向1A,并同时流向用户。这样,用户可以以最小的延迟获取视频的第一帧。
此问题的标准解决方案是什么?从首先获取文件100%,然后向前发送文件来看,cURL似乎是同步的。
看看这个图,看看我的意思:
答案 0 :(得分:0)
这主要是评论,但评论部分的空间有限。
但是用户对内部知识的了解越少,越好。
为什么?如果您不能明确表达您的要求(当它们看起来很不寻常时),那么很难推荐解决方案。
所有youtube视频都...托管在同一域中,因此这必须可行
当然有可能,但是我非常有信心YouTube不会使用您描述的架构来实现这一目标。即使他们使用相同的虚拟主机提供了URL中的所有内容,也不会按照您所描述的那样实施。支持此类服务的(显而易见的)解决方案是在反向代理服务器前面充当HTTP路由器的非对称主机。
在首先获取文件100%方面,cURL似乎是同步的
仅当您使用默认设置时。抛开了使用Curl执行多个RANGE请求的可能性,如果指定了CURLOPT_READFUNCTION选项,则可以一次从后端读取一个块并将其发送给客户端。