当 Live Input 开始接收广播时,如果输入的 mode 属性设为 automatic,将自动创建新视频。
要观看,Stream 提供内置 Player,或使用 HLS 和 DASH 清单的自定义播放器。
无论您使用 Stream Player 还是带清单的自定义播放器,都可以引用 Live Input ID 或特定 Video ID。主要区别在于广播结束时的行为。
在播放器应始终显示活动广播(如有)或输入空闲时显示「Stream has not started」消息的情况下,使用 Live Input ID。此选项最适合专用于创作者、频道或定期节目的页面。Live Input ID 在您创建输入时为您配置;它不会更改。
在播放器应用于显示单次广播或其录制(广播结束后)的情况下,使用 Video ID。此选项最适合专用于一次性活动、特定集/场次或日期的页面。每次广播 开始时 都会生成 新的 Video ID。
使用 DVR 模式(如下所述)时,还有额外考虑因素。
Stream 的 URL 均为模板化格式,便于生成:
Stream 内置 Player URL 格式:
https://customer-<CODE>.cloudflarestream.com/<INPUT_ID|VIDEO_ID>/iframe完整嵌入代码可在 Dash 或通过 API 生成。
HLS Manifest URL 格式:
https://customer-<CODE>.cloudflarestream.com/<INPUT_ID|VIDEO_ID>/manifest/video.m3u8您也可以从 Dash 或 API 检索嵌入代码或 manifest URL。
要获取 Stream 内置播放器嵌入代码或自定义播放器的 HLS Manifest URL:
-
在 Cloudflare 仪表板中,前往 Live inputs(直播输入) 页面。
Go to Live inputs ↗ -
从列表中选择一个直播输入。
-
在视频下方找到 Embed(嵌入) 和 HLS Manifest URL(HLS 清单 URL)。
-
确定要使用的选项,然后在您的选择下选择 Click to copy(点击复制)。
在 Dash 中检索的嵌入代码或 manifest URL 将引用 Live Input ID。
要通过 API 检索播放器代码或 manifest URL,获取 Live Input 的视频列表:
curl -X GET \
-H "Authorization: Bearer <API_TOKEN>" \
https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/stream/live_inputs/<LIVE_INPUT_UID>/videos一个直播输入将关联多个视频,每次广播一个。如果有活动广播,响应中的第一个视频将具有 live-inprogress 状态。响应中的其他视频代表可按需播放的录制。
响应中的每个视频(包括活动广播(如有))包含 HLS 和 DASH URL 以及 Stream 播放器链接。值得注意的属性包括:
preview-- 观看 Stream 播放器的链接playback.hls-- HLS Manifestplayback.dash-- DASH Manifest
在下面的示例中,直播视频的状态为 live-inprogress,先前录制的视频状态为 ready。
{
"result": [
{
"uid": "6b9e68b07dfee8cc2d116e4c51d6a957",
"thumbnail": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/thumbnails/thumbnail.jpg",
"status": {
"state": "live-inprogress",
"errorReasonCode": "",
"errorReasonText": ""
},
"meta": {
"name": "Stream Live Test 23 Sep 21 05:44 UTC"
},
"created": "2021-09-23T05:44:30.453838Z",
"modified": "2021-09-23T05:44:30.453838Z",
"size": 0,
"preview": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/watch",
...
"playback": {
"hls": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/manifest/video.m3u8",
"dash": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/manifest/video.mpd"
},
...
},
{
"uid": "6b9e68b07dfee8cc2d116e4c51d6a957",
"thumbnail": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/thumbnails/thumbnail.jpg",
"thumbnailTimestampPct": 0,
"readyToStream": true,
"status": {
"state": "ready",
"pctComplete": "100.000000",
"errorReasonCode": "",
"errorReasonText": ""
},
"meta": {
"name": "CFTV Staging 22 Sep 21 22:12 UTC"
},
"created": "2021-09-22T22:12:53.587306Z",
"modified": "2021-09-23T00:14:05.591333Z",
"size": 0,
"preview": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/watch",
...
"playback": {
"hls": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/manifest/video.m3u8",
"dash": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/manifest/video.mpd"
},
}
],
}这些将引用 Video ID。
您可以通过向 lifecycle 端点发送请求来检查直播输入是否正在流式传输及其活动 video ID。Stream 播放器会自动执行此操作以在输入空闲时显示提示。自定义播放器可能需要额外支持。
curl -X GET \
-H "Authorization: Bearer <API_TOKEN>" \
https://customer-<CODE>.cloudflarestream.com/<INPUT_ID>/lifecycle在下面的示例中,响应表明 ID 属于具有活动 videoUID 的输入。live 状态值表明输入正在积极流式传输。
{
"isInput": true,
"videoUID": "55b9b5ce48c3968c6b514c458959d6a",
"live": true
}{
"isInput": true,
"videoUID": null,
"live": false
}通过直播输入 ID 观看直播时,将使用直播输入录制设置中的 requireSignedURLs 和 allowedOrigins 选项。这些设置独立于视频级别设置。
直播结束后,将自动生成录制内容并在 60 秒内可用。为确保成功的视频观看和播放,请注意以下事项:
- 如果直播在观众观看时结束,使用 Stream 播放器的观众应等待 60 秒,然后重新加载播放器以观看直播录制。
- 直播结束后,您可以通过 API 检查录制状态。当视频状态为
ready时,您可以使用 manifest URL 之一流式传输录制。
在直播录制生成期间,视频可能报告为 not-found 或 not-started。
如果您未使用 Stream 播放器播放直播录制,请参阅 录制和重播直播 了解更多关于如何重播直播录制的信息。