有没有一种方法可以提供多种视频质量(分辨率)而无需在HTML5视频播放器中上传多个视频?

时间:2019-05-19 02:15:03

标签: html html5-video

我正在尝试使用HTML5向我的网站添加一些视频。我的视频都是1080,但是我想让人们在需要时选择观看较低质量的视频。我可以不必上传多个视频(每种质量1个)而无需使用服务器端语言来做到这一点吗?

我一直在广泛地寻找这个。尚未找到任何人说无法做到这一点,但没有人说它也能做到。我使用Blogger作为主机,这就是为什么我不能使用服务器端语言的原因。

谢谢。

2 个答案:

答案 0 :(得分:0)

否。

我无法理解这怎么可能。你有想法吗?

客户端可以下载文件的全部或部分。但是要执行此操作,您将必须以某种方式仅下载每帧的选定像素。即使您知道每个帧的字节范围是哪个像素,请求每个字节范围所涉及的开销也将大于整个1080p视频的大小。

您对托管多种品质的厌恶是什么?是关于存储空间,还是转换的复杂性/时间?

答案 1 :(得分:0)

  

是否不使用服务器端语言?

是的,当然。客户端可以选择要下载视频的版本。

  

我可以这样做而不必上传多个视频(每种质量1个)

实际上,不是。您需要对该视频进行转码并上传这些不同的版本。

  

找不到人说无法完成

需要考虑的几件事...首先是视频文件可以包含许多流。我不知道您对多个文件的厌恶是什么,但是是的,有可能在单个容器中具有多个视频比特率。例如,单个MP4可以轻松包含768 kbps的视频,2 Mbps的视频和8 Mbps的视频,而音轨只有256 kbps。

要播放这样的文件,客户端(使用Media Source Extensions和Fetch API实现)将需要知道如何解析容器并针对文件中的特定块发出远程请求。据我所知,没有这样的客户端,因为当您可以简单地使用DASH和/或HLS时,没有什么意义。浏览器当然无法为您完成这项工作。

某些视频编解码器(例如H.264)支持缩放的概念。这里的想法是,与其进行多种编码,不如通过多种编码来增强发送的先前视频。这种机制有很大的开销,甚至您还需要做更多的工作。现在,您的代码不仅需要了解容器,而且还必须处理使用中的编解码器……并且需要有效地做到这一点。

总而言之,可以使用一个文件吗?从技术上讲,是的。有什么好处吗?没有。有什么现成的东西吗?不。

编辑:我现在看到您的评论,该问题是存储空间之一。您应该真正在问题中输入这些信息,以便获得有用的答案。

YouTube和其他人通常会提前对代码进行转码。这对于流量非常大的视频特别有用,因为片段可以存储在CDN上,并且节点离客户端更近。是的,也可以按需转码。为此,您需要快速的硬件。