Discourse 视频流 🎥

Discourse Video Stream 为您的 Discourse 站点添加了无缝的 Cloudflare Stream 集成,用于上传和嵌入高质量、长篇视频内容。

概述

该插件提供了一个完整的视频文件处理工作流程,支持自适应比特率流,允许用户直接从编辑器上传视频,并根据他们的网络条件自动调整质量进行播放。

主要功能

  • :clapper_board: 编辑器集成: 可选的工具栏按钮,用于直接从编辑器上传视频
  • :outbox_tray: 自动拦截上传: 超出配置大小阈值的视频将自动上传到 Cloudflare Stream,而不是本地存储
  • :high_voltage: 可恢复上传: 基于 tus-js-client,可可靠上传远超 200 MB 的文件,并在连接问题时自动恢复
  • :locked: 安全代理: 服务器端端点生成 Cloudflare Stream 上传的短时 URL,保护您的 API 凭据安全
  • :movie_camera: 自定义 BBCode: 简单的 [video-stream id=\"...\"] 语法用于嵌入视频
  • :television: 自适应流: Shaka Player 集成 DASH manifest,可在不同网络速度下流畅播放
  • :gear: 播放控件: 内置 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 凭据

  1. 登录您的 Cloudflare 仪表板
  2. 在您的账户下导航到 Stream
  3. 从 Stream 概览中复制您的账户 ID
  4. 创建一个具有 Stream:Edit 权限的 API 令牌
  5. 记下 Stream 设置中的客户子域名

用法

配置完成后,用户可以通过两种方式上传视频:

自动拦截

当用户拖放或选择一个视频文件,且该文件大小超过 video_stream_intercept_threshold_mb 设置时,该插件将通过 Cloudflare Stream 自动处理它,而不是本地存储。您需要在允许的扩展名设置中允许视频文件扩展名才能使其正常工作

手动上传

用户可以点击编辑器工具栏的弹出菜单(:plus:)并选择视频上传选项,以显式上传到 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


注意:这不是一个#官方插件。

11 个赞