订阅 Stream 后,您可以在 Dash 或通过 API 创建 Live Inputs。使用 RTMPS 或 SRT 向新的 Live Input 广播。SRT 支持更新的视频编解码器,并更便于使用字幕和多音轨等无障碍功能。
首次直播? 您需要软件将视频发送到 Cloudflare。了解如何使用 OBS Studio 在 Stream 上开播。
步骤 1: 在 Cloudflare 仪表板中,前往 Live inputs(直播输入) 页面并创建直播输入。
Go to Live inputs ↗
步骤 2: 复制 RTMPS URL 和 key,并在直播应用中配合使用。我们建议使用 Open Broadcaster Software (OBS) ↗ 快速入门。
步骤 3: 开播并在 Stream 仪表板中预览直播
在 Stream 仪表板中,开播后几秒内,您将看到观众将看到的内容预览。要将直播视频播放添加到网站或应用,请参阅 播放视频。
要以编程方式开始直播,向 /live_inputs 端点发送 POST 请求:
curl -X POST \
--header "Authorization: Bearer <API_TOKEN>" \
--data '{"meta": {"name":"test stream"},"recording": { "mode": "automatic" }}' \
https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/live_inputs{
"uid": "f256e6ea9341d51eea64c9454659e576",
"rtmps": {
"url": "rtmps://live.cloudflare.com:443/live/",
"streamKey": "MTQ0MTcjM3MjI1NDE3ODIyNTI1MjYyMjE4NTI2ODI1NDcxMzUyMzcf256e6ea9351d51eea64c9454659e576"
},
"created": "2021-09-23T05:05:53.451415Z",
"modified": "2021-09-23T05:05:53.451415Z",
"meta": {
"name": "test stream"
},
"status": null,
"recording": {
"mode": "automatic",
"requireSignedURLs": false,
"allowedOrigins": null,
"hideLiveViewerCount": false
},
"enabled": true,
"deleteRecordingAfterDays": null,
"preferLowLatency": false
}-
enabledboolean 默认值:true- 控制直播输入是否接受传入广播。设为
false时,直播输入将拒绝任何传入的 RTMPS 或 SRT 连接。使用此属性以编程方式结束创作者广播或阻止在特定输入上开始新广播。
- 控制直播输入是否接受传入广播。设为
preferLowLatencyboolean 默认值:falseBeta- 设为 true 时,此直播输入将启用 Beta 版 Low-Latency HLS 管道。Stream 内置播放器将在可能时自动使用 LL-HLS。(
recording的mode属性也必须设为automatic。)
- 设为 true 时,此直播输入将启用 Beta 版 Low-Latency HLS 管道。Stream 内置播放器将在可能时自动使用 LL-HLS。(
-
deleteRecordingAfterDaysinteger 默认值:null(任意)-
指定录制(而非输入)将被删除的日期和时间。此属性从录制可供流式传输并 ready 时起生效。录制删除后,将无法观看,且不再计入计费存储。最小值为
30,最大值为1096。直播结束时,如果存在
deleteRecordingAfterDays值,将计算scheduledDeletion时间戳。注意,如果在直播进行时向直播输入添加此值,该属性仅适用于未来的直播。
-
-
timeoutSecondsinteger 默认值:0timeoutSeconds属性指定直播源断开连接多长时间后会导致创建新视频。
以下四个属性嵌套在 recording 对象下。
-
modestring 默认值:off- 当 mode 属性设为
automatic时,直播流将自动可通过 HLS/DASH 观看。此外,直播流将自动录制以供后续重播。默认情况下,录制模式设为off,输入不会被录制或可供播放。
- 当 mode 属性设为
-
requireSignedURLsboolean 默认值:falserequireSignedURLs属性指示观看视频是否需要 signed URLs。此设置默认应用于从输入录制的所有视频。此外,如果通过直播输入 ID 观看视频,此字段优先于任何视频级别设置。
-
allowedOriginsinteger 默认值:null(任意)allowedOrigins属性可选地提供允许的 origin 列表。此设置默认应用于从输入录制的所有视频。此外,如果通过直播输入 ID 观看视频,此字段优先于任何视频级别设置。
-
hideLiveViewerCountboolean 默认值:false- 限制访问直播观众数,并从播放器中移除该值。
您可以通过发送 PUT 请求更新直播输入:
curl --request PUT \
https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/live_inputs/{input_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--data '{"meta": {"name":"test stream 1"},"recording": { "mode": "automatic", "timeoutSeconds": 10 }}'通过发送 DELETE 请求删除直播输入:
curl --request DELETE \
https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/live_inputs/{input_id} \
--header "Authorization: Bearer <API_TOKEN>"如果您遇到缓冲、冻结、延迟或其他类似问题,请访问 直播故障排除。
- 您的创作者应为其直播流使用适当的码率,通常远低于 12Mbps (12000Kbps)。高运动、高帧率内容通常应使用更高码率,而幻灯片演示等低运动内容应使用较低码率。
- 您的创作者应使用 2 到 8 秒之间的 GOP 时长 ↗(关键帧间隔)。大多数编码软件和硬件(包括 Open Broadcaster Software (OBS))的默认值在此范围内。设置较短 GOP 时长将减少观众延迟,同时降低编码效率。设置较长 GOP 时长将提高编码效率,同时增加观众延迟。这是视频编码固有的权衡,而非 Cloudflare Stream 的限制。
- 在可能的情况下,选择 CBR(恒定码率)而非 VBR(可变码率),因为 CBR 有助于确保稳定的流式传输体验,同时防止缓冲和中断。
- 关闭 B Frames 或将其设为 0。B Frames 与 LL-HLS 不兼容,会导致抖动和间歇性缓冲延迟。
- 为最低延迟,使用 2 - 4 秒的 GOP 大小(或「关键帧间隔」)。
- 如有可能,广播到 RTMP 端点,否则使用 SRT。
- 如果使用 OBS,选择 ultra low(超低) 延迟配置文件。
- 需要 Closed GOP。这意味着如果视频中有任何 B 帧,它们应始终引用同一 GOP 内的帧。大多数编码软件和硬件(包括 OBS Studio ↗)默认启用此设置。
- Stream Live 仅支持 H.264 视频和 AAC 音频编解码器作为输入。此要求不适用于中继到 Stream Connect 输出的输入。Stream Live 支持 ADTS,但目前不支持 LATM。
- 客户端必须配置为在断开连接时重连。Stream Live 设计为通过继续直播流来优雅处理重连。
- 水印尚不能用于直播视频。
- 如果直播视频超过七天,录制将被截断为七天。仅前七天的直播视频内容将被录制。