0

我有一个服务器(未连接互联网),它在内部网站上托管一个包含公司数据的网页。服务器还包含定义目录结构中的视频(数千个)。

当客户连接时,我可以在内部网站上向他们显示视频。问题是某些视频文件为 1Gb 或更大,与某些客户端的连接速度相当慢;浏览器似乎正在尝试下载它们以播放它们而不是流式传输它们。

是否有一个视频流服务器,我可以向其发送文件路径并将视频作为流提供回客户端?

我想这本质上是对我需要完成的视频进行转码。我不确定 PLEX 或类似的东西是否能够动态地做到这一点,因为有数百个视频和新视频一直在添加。

对不起,如果我不清楚我的需要。如果我对某一点不清楚,请发给我一个问题。

4

1 回答 1

0

...浏览器似乎正在尝试下载它们以播放它们而不是流式传输它们。

为了回应@Offbeatmammal 在评论中所说的内容,如果您使用的是 MP4 文件,则需要确保MOOV 原子位于文件的开头。没有它,浏览器不知道要请求什么字节偏移量。

理想情况下,将您的视频文件编码为碎片。在 FFmpeg 中:

ffmpeg -i ... -f mp4 -movflags frag_keyframe+empty_moov output.mp4

另请参阅: https ://stackoverflow.com/a/9734251/362536

这应该允许客户端从任何支持 HTTP/1.1 范围请求的 Web 服务器流式传输 MP4 文件。(大多数都这样做,除非另有配置。)

但是,还有一点需要说明:

问题是某些视频文件为 1Gb 或更大,并且与某些客户端的连接速度相当慢...

虽然修复流问题意味着客户端不必先下载整个文件,但他们仍然需要带宽来跟上流。如果有可能他们不会,您将需要实现某种转码器。

我建议使用现有的分段流媒体方法,例如 DASH 或 HLS。由于 Apple 的平台政策,HLS 目前是最兼容的。两者都将启用自适应比特率切换,这将允许慢速客户端自动切换到他们可以顺利跟上的较低比特率流。这样,速度较慢的客户端仍然可以看到视频,尽管质量较低,而速度较快的客户端可以获得完整质量的视频。

您可以使用 FFmpeg 进行转码和 HLS 播放列表创建

我不确定 PLEX 或类似的东西是否能够动态地做到这一点,因为有数百个视频和新视频一直在添加。

至于何时进行此转码,我想这取决于您正在查看的负载量。如果这只是一两个人查看文件,如果您的服务器可以跟上,您可以按需转码。理想情况下,对于不太受欢迎的文件,您至少有几个流变体,如果需要,以后可以添加更多变体。

如果您在现场进行此操作,我建议您预先进行所有转码。如果您需要存储空间,您可以随时修剪旧文件/变体。

于 2021-12-08T16:43:45.243 回答