gpt4 book ai didi

c - 为什么要将文件分割成 block 以进行 HTTP 流式传输?

转载 作者:太空宇宙 更新时间:2023-11-04 04:35:40 25 4
gpt4 key购买 nike

在 HTTP Live Streaming 中,文件被分成固定大小的 block 以进行流式传输。这背后的理性是什么?这比拥有单个文件并使用偏移量来检索各种 block 更好。

目前我的大概想法。

将文件分成多个 block 可减少流式传输期间的文件查找时间。

据我了解,文件在 HDD 上存储为持久链表。对于现代文件系统(例如 NTFS、ext3)是否也是如此,或者它们是否使用更复杂的数据结构(例如平衡树或 HashMap )来索引文件 block ?在文件中查找(使用 seekp、tellp 等)的运行时复杂度是多少?

最佳答案

HDD 不是考虑因素。这样做是为了简化网络/CDN 层以及客户端逻辑。 HTTP 是一种请求/响应协议(protocol)。它不能很好地处理长流。它也不会复用。要使用多个套接字,您必须发出单独的请求。要求客户端了解 flies 结构,并能够将搜索栏转换为字节偏移量是很复杂的。特别是对于可变比特率媒体。但是如果你知道一个视频有 100 个片段(文件),并且你寻求 50%,那么很容易知道你需要什么文件。最后,缓存层应该如何处理范围请求?从源头下载整个文件,还是只根据需要请求数据并在本地“缝合”文件?无论哪种方式,缓存层都需要该逻辑。额外的逻辑是以每秒更少的请求为代价的。

关于c - 为什么要将文件分割成 block 以进行 HTTP 流式传输?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30792064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com