【问题标题】:Why segment files into chunks for HTTP streaming?为什么将文件分割成块以进行 HTTP 流式传输?
【发布时间】:2015-08-27 19:32:14
【问题描述】:

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

我目前的粗略想法。

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

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

【问题讨论】:

标签: c operating-system filesystems video-streaming fileserver


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 2018-08-02
    • 2010-10-28
    • 1970-01-01
    相关资源
    最近更新 更多