Discourse Video Stream 为您的 Discourse 站点添加了无缝的 Cloudflare Stream 集成,用于上传和嵌入高质量、长篇视频内容。
概述
该插件提供了一个完整的视频文件处理工作流程,支持自适应比特率流,允许用户直接从编辑器上传视频,并根据他们的网络条件自动调整质量进行播放。
主要功能
编辑器集成: 可选的工具栏按钮,用于直接从编辑器上传视频
自动拦截上传: 超出配置大小阈值的视频将自动上传到 Cloudflare Stream,而不是本地存储
可恢复上传: 基于 tus-js-client,可可靠上传远超 200 MB 的文件,并在连接问题时自动恢复
安全代理: 服务器端端点生成 Cloudflare Stream 上传的短时 URL,保护您的 API 凭据安全
自定义 BBCode: 简单的 [video-stream id=\"...\"]语法用于嵌入视频
自适应流: Shaka Player 集成 DASH manifest,可在不同网络速度下流畅播放
播放控件: 内置 UI,用于选择分辨率和控制播放速度
安装
将插件添加到您的 app.yml:
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/xfalcox/discourse-video-stream.git
然后重建您的容器:
./launcher rebuild app
配置
导航到 管理 → 设置 → 视频流 并配置:
| 设置 | 描述 | 默认值 |
|---|---|---|
| video_stream_enabled | 启用视频流插件 | false |
| video_stream_account_id | 您的 Cloudflare 账户标识符 | - |
| video_stream_api_token | 具有 Stream:Edit 权限的 API 令牌 | - |
| video_stream_customer_subdomain | 您的 Cloudflare Stream 域名 (例如,customer-xxxxx.cloudflarestream.com) | - |
| video_stream_allowed_extensions | 允许的视频格式的逗号分隔列表 | mp4,webm,mov |
| video_stream_max_file_size | 最大文件大小(MB,1-2000) | 500 |
| video_stream_intercept_native_uploads | 自动拦截大型视频上传 | true |
| video_stream_intercept_threshold_mb | 自动拦截的大小阈值(MB,1-2000) | 10 |
获取 Cloudflare Stream 凭据
- 登录您的 Cloudflare 仪表板
- 在您的账户下导航到 Stream
- 从 Stream 概览中复制您的账户 ID
- 创建一个具有 Stream:Edit 权限的 API 令牌
- 记下 Stream 设置中的客户子域名
用法
配置完成后,用户可以通过两种方式上传视频:
自动拦截
当用户拖放或选择一个视频文件,且该文件大小超过 video_stream_intercept_threshold_mb 设置时,该插件将通过 Cloudflare Stream 自动处理它,而不是本地存储。您需要在允许的扩展名设置中允许视频文件扩展名才能使其正常工作。
手动上传
用户可以点击编辑器工具栏的弹出菜单(
)并选择视频上传选项,以显式上传到 Cloudflare Stream。
这两种方法都会插入一个 [video-stream id=\"video_id\"] BBCode 标签,该标签将呈现为一个自适应流播放器,并带有分辨率和速度控件。
为什么选择 Cloudflare Stream?
我们已经支持使用 AWS 在代码中实现相同的功能,并且在 GitHub - discourse/discourse-video 中支持 Mux,因此提供一个更便宜的替代方案似乎是个好主意。
要求
- 启用了 Stream 的有效 Cloudflare 账户
来源与支持
截图
演示
访问我的测试站点并上传一些视频
Test Video Upload plugin - General - Discourse on a Pi 5
注意:这不是一个#官方插件。

