restruct / silverstripe-cfstreamvideo
1.0.2
2022-01-07 20:07 UTC
Requires
- firebase/php-jwt: ^5.2
- guzzlehttp/guzzle: ^7.3
- lekoala/silverstripe-filepond: ^1.1
- silverstripe/framework: ^4
Suggests
- symbiote/silverstripe-queuedjobs: Queue support
README
Silverstripe CloudFlareStream 视频流模块
此 Silverstripe 模块提供了通过其 API 向 CloudFlareStream 上传视频并从 CloudFlareStream 流式传输视频的功能。
包含以下内容
- 一个用于存储视频数据和设置的 DB StreamVideo 对象,并跟踪状态
-
一个提供上传接口的 StreamVideoPage 对象(使用 FilePond) - 一个 StreamVideoAdminController 用于处理管理区域中的交互(如 API 交互、提供简码占位符等)
- 可配置的选项(在 StreamVideoAdminController 上)/环境选项
- (ENV) APP_CFSTREAM_API_HOST, APP_CFSTREAM_ACCOUNT_ID, APP_CFSTREAM_ACCOUNT_EMAIL, APP_CFSTREAM_API_TOKEN
- (ENV) APP_CFSTREAM_SIGNING_KEY_ID, APP_CFSTREAM_SIGNING_KEY_PEM, APP_CFSTREAM_SIGNING_KEY_JWK
- (StreamVideoObject::config()) $signed_buffer_hours
- 此模块的初始版本
- (1) 本地保存上传的视频,
- (2) 向 Stream 发送 API 请求以复制视频,
- (3) 在渲染时轮询状态,
- (4) (可配置) 在状态为 'ready' 时移除本地视频
- 上传通过 FilePond (作为 Silverstripe 在所有智慧中认为分块上传超出了范围) 使用分块进行大文件上传(基于尚未发布的 Restruct Admintweaks 模块的自定义 filepond 配置)
- 稍后的版本可能使用 FilePond 与 TUS 结合 直接将大视频上传到 Stream
- 提供简码 + 占位符,以便轻松将视频包含在编辑器中(也在 '常规' 页面上)
- 简码钩入尚未发布的 Restruct Shortcodable 模块
- 模态框有一个下拉菜单来通过标题/名称选择视频,并提供复选框选项:显示控件、自动播放、预加载、静音开始
- 包括 ModelAdmin 接口,用于查看和编辑现有视频或上传新的视频(无需创建 StreamVideoPage)
- 视频可以设置为 '受保护'(需要通过 Stream API 的签名 URL)
- 视频可以有 白名单(仅)域名和国家,如果启用了白名单,则默认/当前网站域名将被自动添加到白名单中
- 初始版本允许为视频设置/上传自定义海报图像(覆盖 Stream API 提供的图像)
- 此模块的稍后版本可能允许通过模型管理器管理签名密钥(使用 Stream API)
- 此模块的稍后版本可能提供更改/选择海报图像的方法/用户界面(通过 Stream API 调用)
- 防止视频下载与 此 WP 模块 相同(内部解释)
OEmbed (https://oembed.com/ & https://timnash.co.uk/becoming-oembed-provider/)
- 视频可以通过 OEmbed 提供访问(目前所有视频都可以,除非标记为需要签名 URL 的视频)
- OEmbedding 默认通过配置属性(与视频白名单域和国家无关)限制在当前域
- 可以在 Config 中添加额外的允许的域进行白名单设置
- OEmbedding 也可以配置为允许任何域(实际上禁用了白名单/限制功能)
参考
- Stream API 文档
- 本模块:所需API调用列表
- 本模块:Wordpress 流模块(特别是API类)
- Laravel CloudFlareStream
- 较早的 Restruct HTML5 电影/媒体模块 可能包含一些可重用的部分,例如状态轮询任务(但我们可能只需要检查状态,例如从 'canView()' 等...)