我对技术的基本工作原理感兴趣。
视频的某些部分(例如,来自 YouTube)是否会进入某个文件夹(如%USERPROFILE%\AppData\Local\Temp
),或者它们是否会从 RAM 中进行复杂的处理?
我只熟悉 Google Chrome DevTools 中“网络”标签中的主题。
如果有人能在这里发表一篇好文章我会更高兴!
答案1
首先,这是一个一般性的答案,因为您才刚刚开始。您所问的概念很简单,但是有很多情境细微差别会使问题变得复杂,我不会深入讨论这些。
首先,并非所有视频都是由服务器和网站以相同的方式提供的。尤其是在过去,小视频可以作为二进制下载嵌入到页面中,一旦下载完成并呈现页面,内容就会由 javascript 或本地运行时(如 flash)播放。这在广告中很常见。关于这种方法,有几点需要考虑:
- 整个文件都会被下载,并且通常是预先下载的。
- 视频播放发生完全在本地计算机上。
- 浏览器可能会尝试将视频缓存到磁盘,以便在下次刷新页面时无需再次下载。
- 视频格式会影响本地计算机对视频的解码、缓冲和播放方式,并且差异很大。常见的视频格式包括从极不完整的(mpeg-1)到极其复杂的(h.265)等。
流媒体视频更加先进。客户端和服务器上的软件协同工作,即时传送和渲染视频流,使用最少的资源(如 RAM 和 CPU)同时流畅播放视频。流媒体允许服务器提供非常大的长时间播放的视频,而无需预先下载。
- 客户端和服务器将协商如何提供流,包括需要多少缓冲等内容。连接的两端都会保持一定程度的“状态”。
- 视频本身将采用支持流媒体所需的所有功能的格式。
- 即时处理允许系统将下载的数据缓冲到 RAM,并控制该缓冲区,因此它不会变得过大,或者过快地清空。这很好,因为整个下午在 Netflix 上狂欢可能会填满一个小硬盘。
- 流视频通常不会缓存到磁盘,因为它将来不太可能被重复使用。如果没有视频的完整副本,这将是毫无意义的。
- 如果本地计算机压力过大,一些流内容可能会最终出现在磁盘上,也许是在视频播放器客户端维护的缓存文件中,或者在虚拟内存页面文件/交换中。一般来说,这些只是视频的片段,而不是真正长期连贯的数据。
希望有所帮助。