Discourse 视频流 🎥

Discourse Video Stream 插件增加了与 Cloudflare Stream 的无缝集成,用于在您的 Discourse 站点中上传和嵌入高质量、长篇视频内容 以及直播

概述

此插件提供了一个完整的工件处理流程,用于处理具有自适应比特率流的大型视频文件,允许用户直接从编辑器上传视频,并根据其网络条件自动调整质量进行播放。它还支持通过 RTMPS 广播创建直播流。

主要功能

  • :clapper_board: 编辑器集成: 用于直接从编辑器上传视频的可选工具栏按钮
  • :outbox_tray: 自动上传拦截: 超过可配置大小阈值的视频将自动上传到 Cloudflare Stream,而不是本地存储
  • :high_voltage: 可恢复上传: 基于 tus-js-client 构建,可可靠地上传远超 200 MB 的文件,并在连接问题时自动恢复
  • :locked: 安全代理: 服务器端端点生成短暂的 Cloudflare Stream 上传 URL,确保您的 API 凭证安全
  • :satellite_antenna: 直播: 直接从编辑器使用 RTMPS 广播创建直播流
  • :movie_camera: 自定义 BBCode: 简单的 [video-stream id=\"...\"] 语法用于嵌入视频
  • :television: 自适应流: Shaka Player 与 DASH 清单集成,可在不同的网络速度下流畅播放
  • :gear: 播放控件: 内置的用户界面,用于选择分辨率和控制播放速度

安装

将插件添加到您的 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 凭证

  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 标签,该标签将渲染为带有分辨率和速度控制的自适应流播放器。

直播

当启用 video_stream_enable_live_streams 时,用户可以创建直播流:

  1. 点击编辑器工具栏的弹出菜单(:plus:)并选择“创建直播流”
  2. 一个模态窗口通过 Cloudflare Stream API 生成 RTMPS 凭证
  3. 使用便捷的复制按钮复制 RTMPS URL 和流密钥
  4. 将凭证与 OBS、Streamlabs 或任何兼容 RTMPS 的广播软件一起使用
  5. 点击“插入嵌入”将 [video-stream id=\"...\"] BBCode 添加到您的帖子中
  6. 立即开始广播

直播功能:

  • 默认启用自动录制(流将被保存以供以后播放)
  • 相同的自适应播放器可用于直播和录制内容
  • 用户在直播期间看到实时内容,之后可以观看录制内容
  • 安全的凭证处理,带有警告消息

为什么选择 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


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

15 个赞

更新:现已支持直播!:satellite_antenna:

该插件现已支持使用 RTMPS 广播进行直播

新增功能:

  • 直接从撰写工具栏菜单创建直播
  • 通过 Cloudflare Stream API 即时获取 RTMPS 凭证
  • 使用 OBS、Streamlabs 或任何兼容 RTMPS 的软件进行直播
  • 自动启用录制——直播结束后,直播内容将被保存以供回放
  • 实时内容和录制内容均使用相同的 [video-stream id="..."] BBCode 和自适应播放器

如何启用:
在管理员 → 设置 → 视频流中将 video_stream_enable_live_streams 设置为 true

有关直播工作流程的完整详细信息,请参阅更新后的 OP。

6 个赞