C 为什么要将文件分割成块以进行HTTP流式传输?

C 为什么要将文件分割成块以进行HTTP流式传输?,c,operating-system,filesystems,video-streaming,fileserver,C,Operating System,Filesystems,Video Streaming,Fileserver,在HTTP实时流媒体中,文件被分割成固定大小的块进行流媒体传输。这背后的原因是什么?这比拥有一个文件并使用偏移量检索不同的块要好多少呢 我目前的粗略想法 将文件拆分为多个块可减少流媒体期间的文件查找时间 据我所知,该文件存储为硬盘上的持久链接列表。对于现代文件系统(如NTFS、ext3),这是真的吗?还是他们使用更复杂的数据结构(如平衡树或哈希映射)来索引文件块?在文件中查找(使用seekp、tellp等)的运行时复杂性是多少?不考虑硬盘。这样做是为了简化网络/CDN层以及客户端逻辑。HTTP是

在HTTP实时流媒体中,文件被分割成固定大小的块进行流媒体传输。这背后的原因是什么?这比拥有一个文件并使用偏移量检索不同的块要好多少呢

我目前的粗略想法

将文件拆分为多个块可减少流媒体期间的文件查找时间


据我所知,该文件存储为硬盘上的持久链接列表。对于现代文件系统(如NTFS、ext3),这是真的吗?还是他们使用更复杂的数据结构(如平衡树或哈希映射)来索引文件块?在文件中查找(使用seekp、tellp等)的运行时复杂性是多少?

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

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

前一篇文章可能会帮助您:前一篇文章可能会帮助您:前一篇文章可能会帮助您: