HTTP 通过 SSH 隧道:如何组织视频文件的下载和播放?

HTTP 通过 SSH 隧道:如何组织视频文件的下载和播放?

我有两台服务器,我们称它们为website.comfile_storage.com。 (它们可能位于两台物理上不同的机器上,或者只是一台服务器上的不同 Docker 容器。)

file_storage.com服务器存储一些视频文件;website.com服务器有一个功能,允许使用其中一些文件创建播放列表并播放此播放列表。为了访问这些文件,我有两个选项(两者都应该有效):

  • 在服务器上配置 Nginx file_storage.com,允许通过类似 的链接接收文件"http://file_storage.com:8081/"
  • 服务器之间的 SSH 隧道,允许file_storage通过类似这样的链接从服务器接收文件"http://website.com:9001/"

现在,当我直接访问时file_storage.com,一切都正常:播放列表播放顺畅,下载和播放单个视频文件没有问题。

但是当我尝试使用隧道创建播放列表时,它无法正常工作。视频可能看起来已损坏,或者播放速度比实际速度快,或者播放列表在播放某些视频后可能卡住并且无法继续播放。

所以,我想知道:当我尝试通过隧道播放/下载视频时,我可以检查什么来找出出了什么问题?

补充说明:我们还有一个通过此类隧道播放视频流的功能,它不会出现此类问题。但对于流,这个问题已通过强制tcp使用协议(它们udp默认使用)得到解决。因此,它不应该适用于文件问题,因为它们已经在使用 tcp。

答案1

因此,经过一番调查,我们终于找到了解决方案;我相信我应该把它放在这里,以便以后用谷歌搜索这个问题的人可以找到。

我最初的假设是错误的;问题不在于 ssh 隧道本身。

在我们的代码中,Python 库paramiko已用于建立隧道。我们要么使用错误的方式,要么存在一些内部错误 - 但我们发现,当我们通过调用方法paramiko通过隧道发送数据时,我们尝试发送的视频文件的最后部分在输出中丢失。更改为解决了该问题。sendparamiko.channel.Channelsendsendall

相关内容