gpt4 book ai didi

video - 从 go 服务器有效地流式传输大文件(视频)

转载 作者:IT王子 更新时间:2023-10-29 02:03:32 24 4
gpt4 key购买 nike

我正在 Go 中实现视频流服务器。我目前使用的是标准 fileserver但我不确定它对大文件 (4GB+) 是否有效。

有没有一种方法可以在 Go 中有效地提供大文件?

最佳答案

我不确定你所说的“高效”是什么意思,所以我假设你的意思是大文件是流式传输而不是缓冲。

标准http.FileServer最终使用the serveContent function写入数据,这需要一个 io.ReadSeeker 作为内容(幸运的是文件就是这样)。

然后使用 io.Copy 复制内容,在一般情况下(虽然可能不是您的常见情况,请参见下文)表示 copyBuffer .将使用 32KB 缓冲区。

因此,假设 http.ResponseWriter 的实现不缓冲其输入(it doesn't,另请参见 chunked writer),内存利用率应该是恒定的。

然而,当编写器支持ReadFrom 方法时,io.Copy will use that instead .因为http.response(ResponseWriter接口(interface)的标准实现)implements the ReadFrom method , 它将被用来代替 copyBuffer。此实现反过来将尝试在可能的情况下使用 sendfile 系统调用(如 os.File 的情况),这是更有效的含义(数据不根本不需要通过进程内存空间,所以尽可能好。

换句话说,我认为可以说内置的 net/http 包已经支持大文件的高效流式传输。

关于video - 从 go 服务器有效地流式传输大文件(视频),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42318795/

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