将web托管的视频分成块以流式传输



嘿,我真的希望有人能帮我这个,因为这将节省我很多托管的钱

我有一个文件托管提供商,它可以让我免费存储几百个文件,只要它们是10MB或更小。这些文件通过任何人都可以访问的可公开访问的URL公开托管。我想把一些大小在100-150MB左右的视频放到我的网站上。

我在一个非常便宜的网络托管计划,它有非常少的磁盘空间分配给它,如果我把它们都上传到那里,很快就会超过,所以我想在其他地方托管这些视频。

我得到了将视频分成10MB块的想法,这将是大约10-15个文件,并使用像video.js https://videojs.com/这样的播放器来播放它作为一个完整的视频。我知道这可以通过。m3u8文件和一些较大的网站,如Twitch剪辑实际上播放视频完全像这样加载它在分段块,而不是一个完整的单个。mp4文件,但我不知道如何实现这一点。

基本上,我将播放器嵌入到一个网页上,让播放器加载一个。m3u8文件或类似的文件,其中包含视频的所有块,以正确的顺序无缝播放,因为它是一个完整的视频,这是我的主要目标,我只是不知道如何使它成为现实

虽然我没有使用磁盘空间限制,但我确实希望能够在数据库中提供大型视频。因为我只想使用MEDIUMTEXT,所以我不能有超过16MB的文本数据。虽然它不是理想的媒介或格式,但它能满足我的需要。但是这个过程同样适用于将它存储在文件中。

我不知道你们有什么类型的服务器,也不知道你们有什么可用的技术。但是,如果你能够提供一个网页,像PHP或Node.js那样有智能,读写本地文件,并在响应期间指定头信息,这就是你需要做的。 服务器:

  1. 写一个接受媒体ID、部件ID、MIME类型字符串、部件总数int和base64编码数据的页面。当部件ID为0时,编写一个名为info.dat的文件,其中包含MIME类型和部件计数。然后,它和其他每个部分需要获取base64编码的数据,并将其写入名为.dat

    的文件中。
  2. 写一个接受要检索的媒体ID的页面。它应该读取_info.dat文件,然后写入响应头"Content-Type:"然后读取每个部件文件,解码base64,并按顺序输出原始内容。

  3. 客户机:

  1. 写一个函数,可能在JS中读取你想要的文件,并将其分割成你的大小限制,但在3/4,因为base64需要4个字节来存储3。对于每个部分,调用服务器页面来存储读取的数据。

当客户端请求第二个服务器页面时,可以在html视频标签中作为src属性,它所看到的只是您输出的原始数据,它无法告诉您正在读取来自多个文件的原始数据。

最新更新