在HTTP Live Streaming中,文件被拆分为固定大小的块以进行流式传输。这背后的理性是什么?这比使用单个文件和使用偏移来检索各种块更好。
目前我的粗略想法。
将文件拆分为多个块可减少流式传输期间的文件搜索时间。
据我所知,文件存储为HDD上的持久链表。这对于现代文件系统(例如NTFS,ext3)是否正确,或者它们是否使用更复杂的数据结构(例如平衡树或散列映射)来索引文件的块?什么是在文件中搜索(使用seekp,tellp等)的运行时复杂性?
答案 0 :(得分:0)
硬盘不是一个考虑因素。它的目的是简化网络/ CDN层以及客户端逻辑。 HTTP是请求/响应协议。它不适合长流。它也没有多路复用。要使用多个套接字,您必须单独发出请求。要求客户端了解苍蝇结构,并且能够将搜索条转换为字节偏移是复杂的。特别是对于可变比特率媒体。但是如果你知道一个视频有100个片段(文件),并且你寻求50%,那么你很容易知道你需要什么文件。最后,缓存层应该如何处理范围请求?从原点下载整个文件,或者只是根据需要请求数据并拼接'该文件在本地重新组合?无论哪种方式,缓存层都需要该逻辑。额外的逻辑以每秒更少的请求为代价。