在 EdgeOne 上观看 IPFS 4K 视频!

IPFS、EdgeOne 和 4K 视频,很难想象这三个能够同时出现在一起。
但确实可以在 EdgeOne 上观看 IPFS 4K 视频了。
其原理是使用 Service Worker 来处理 IPFS 视频。
代码由 Deepseek 编写,仍有改进的空间。
文件存储在 FileCoin 上,示例并非 4K 视频,但在线观看 4K 视频没有问题。

示例

https://test00.pinit.eth.limo

对比无 Service Worker 版本

https://bafyb4ieqayqlufhgfha5w5mzph5lpk5yxu4ytd5szt4hnjma5i5cogvobq.ipfs.asset.v6.navy/

对比 inbrowser

https://bafyb4ieqayqlufhgfha5w5mzph5lpk5yxu4ytd5szt4hnjma5i5cogvobq.ipfs.inbrowser.dev/

如何下载 Filecoin 上的 IPFS 文件

本文提及的 FileCoin 均指 2025 年 12 月发布的 Filecoin 新版本,而非旧版本。

所需的 Kubo 版本为 0.43.1。低于 0.36.0 的版本无法下载。

PS:其实也可以下载,但需要中间人协助。

第一步:设置 IPFS 环境变量

使用 set 命令进行临时设置:

set IPFS_PATH=D:/tools/.ipfs

这样做是为了避免 IPFS 将数据存储到 C 盘的 %USERPROFILE%/.ipfs 目录下。

第二步:初始化 IPFS

ipfs init --profile server,unixfs-v1-2025,announce-off

第三步:移除 Bootstrap、配置 DelegatedRouters

移除 Bootstrap

IPFS 在进行网络对等交换时,普通家庭网络通常会有 1000 或 3000 的连接数限制。过高的连接数可能导致网络不稳定,可以移除 Bootstrap 或者配置 libp2p-resource-limit-overrides.json 文件。

该命令的作用是移除 Bootstrap 引导节点:

ipfs bootstrap rm all

配置 DelegatedRouters

ipfs config --json Routing.DelegatedRouters "["""https://cid.contact"""]"

上述命令使用 cid.contact 作为内容寻址服务,也可以自建服务,现在 Kubo 版本已内置该功能。

局限性:对于部分并非完全基于 FileCoin 部署的 IPFS,则无法访问,可以考虑自建服务。目前 http://IP:8080 就是已内置的 DelegatedRouters。

第四步:启动 IPFS

ipfs daemon

启动后,打开 http://127.0.0.1:5001/webui,会发现没有任何节点。

这并非出现了问题。因为确实没有任何节点,新用户将无法连接到任何节点,但这并不妨碍我们访问 FileCoin。

然后打开:
[http://127.0.0.1:8080/ipfs/bafyb4ig76jujcywxyofuhzxby2pih6zsz2xyo25uukpphpq5wadmqxvrfy/]
或
[http://127.0.0.1:8080/ipfs/bafyb4ig76jujcywxyofuhzxby2pih6zsz2xyo25uukpphpq5wadmqxvrfy/openlist/]

会发现,尽管没有任何节点,但仍然可以打开页面,因为数据是通过 HTTPS 通道传输的。

其他

也可以使用 Lassie。
下载时可以使用 ipfs pin 或 AnyInList + aria2 或者在链接后面加上 ?format=tar
。
可以不使用 ipfs repo gc 删除文件,而是直接删除 D:/tools/.ipfs 目录,然后按照步骤重新操作即可。
使用 ipfs config profile 可以查看可用的 profile。
一些细节:IPFS 初始化时,可使用 ipfs init --profile server,unixfs-v1-2025,announce-off。

配置了 unixfs-v1-2025 之后执行以下命令:

ipfs config Import.UnixFSFileMaxLinks 1024
ipfs config Import.HashFunction blake3
ipfs config Import.UnixFSHAMTDirectorySizeThreshold 1MiB
# MaxFanout 可不配置
ipfs config Import.UnixFSHAMTDirectoryMaxFanout 1024
参与讨论