Discourse Video Stream 插件增加了与 Cloudflare Stream 的无缝集成,用于在您的 Discourse 站点中上传和嵌入高质量、长篇视频内容 以及直播。
概述
此插件提供了一个完整的工件处理流程,用于处理具有自适应比特率流的大型视频文件,允许用户直接从编辑器上传视频,并根据其网络条件自动调整质量进行播放。它还支持通过 RTMPS 广播创建直播流。
主要功能
编辑器集成: 用于直接从编辑器上传视频的可选工具栏按钮
自动上传拦截: 超过可配置大小阈值的视频将自动上传到 Cloudflare Stream,而不是本地存储
可恢复上传: 基于 tus-js-client构建,可可靠地上传远超 200 MB 的文件,并在连接问题时自动恢复
安全代理: 服务器端端点生成短暂的 Cloudflare Stream 上传 URL,确保您的 API 凭证安全
直播: 直接从编辑器使用 RTMPS 广播创建直播流
自定义 BBCode: 简单的 [video-stream id=\"...\"]语法用于嵌入视频
自适应流: Shaka Player 与 DASH 清单集成,可在不同的网络速度下流畅播放
播放控件: 内置的用户界面,用于选择分辨率和控制播放速度
安装
将插件添加到您的 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 |
| video_stream_enable_live_streams | 启用直播功能 | false |
获取 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 标签,该标签将渲染为带有分辨率和速度控制的自适应流播放器。
直播
当启用 video_stream_enable_live_streams 时,用户可以创建直播流:
- 点击编辑器工具栏的弹出菜单(
)并选择“创建直播流” - 一个模态窗口通过 Cloudflare Stream API 生成 RTMPS 凭证
- 使用便捷的复制按钮复制 RTMPS URL 和流密钥
- 将凭证与 OBS、Streamlabs 或任何兼容 RTMPS 的广播软件一起使用
- 点击“插入嵌入”将
[video-stream id=\"...\"]BBCode 添加到您的帖子中 - 立即开始广播
直播功能:
- 默认启用自动录制(流将被保存以供以后播放)
- 相同的自适应播放器可用于直播和录制内容
- 用户在直播期间看到实时内容,之后可以观看录制内容
- 安全的凭证处理,带有警告消息
为什么选择 Cloudflare Stream?
我们已经支持使用 AWS 在代码中实现相同的功能,并且在 GitHub - discourse/discourse-video 中支持 Mux,因此一个更便宜的替代方案听起来是个好主意。
要求
- 启用了 Stream 的有效 Cloudflare 账户
源码与支持
截图
演示
访问我的测试站点并上传一些视频
https://discourse-on-a-pi5.falco.dev/t/test-video-upload-plugin/20?u=falco
注意:这不是一个 #官方 插件。


