添加和排除观看直播视频的特定受众。
对于公共主页上的直播视频,您将需要:
CREATE_CONTENT
任务的用户请求的公共主页访问口令对于群组中的直播视频,您将需要:
发送 POST /id
请求(其中 id
是 LiveVideo 编号),并设置 targeting
字段及其参数。
curl -i -X POST \
"https://graph.facebook.com/LIVE_VIDEO_ID
?targeting={age_min:17, geo_locations:{countries:["US","CA","MX"]}}
&access_token=ACCESS_TOKEN"
{ "targeting": { "age_max": 65, "age_min": 17, "geo_locations": { "countries": [ "US", "CA", "MX" ] } }, "id":"LIVE_VIDEO_ID" }
对于公共主页上的直播视频,您将需要:
CREATE_CONTENT
任务的用户请求的公共主页访问口令对于群组中的直播视频,您将需要:
发送带有 targeting
字段的 GET /id
请求,其中 id
为 LiveVideo 编号。
curl -i -X GET \
"https://graph.facebook.com/LIVE_VIDEO_ID
?fields=targeting&access_token=ACCESS_TOKEN"
{ "targeting": { "age_max": 65, "age_min": 17, "geo_locations": { "countries": [ "US" "CA", "MX" ] } }, "id":"LIVE_VIDEO_ID" }
在解码直播的初始直播数据并处理任何关联的 API 请求时,直播可能会稍有延迟。这可能会使主播难以准确知道直播何时已经开始。为避免此问题,可以将 LiveVideo 对象设置为接受直播数据,但在直播数据中检测到开始直播 RTMP 消息之前,不向受众直播。因此,任何能够预览直播的用户都可以观看直播,同时,直播编码器能够精确控制向受众直播的时间及受众看到的第一帧。
要启用精确到帧的直播,首先需要像往常一样创建 LiveVideo 对象,并将其状态设置为“PREVIEW”。创建完成后,查询 LiveVideo 对象并请求带有以下嵌套字段的 secure_stream_url 字段:
secure_stream_url.inband_go_live(require_inband_signal)
这将为 LiveVideo 对象启用精确到帧的直播,并且 API 将响应新的安全直播网址,以便您随后通过该网址进行直播。您可以忽略最初创建 LiveVideo 对象时系统发送给您的初始安全直播网址。
在 (1) 将直播状态设置为“LIVE”(通过图谱 API 调用或用户从 Live Producer 发布)同时 (2) 编码器发送开始直播 RTMP 消息后,直播将上线并对受众可见。
一个 AMF0 数据包(类型 0x12),其中包含:
onGoLive
字符串timestamp
字符串(类型 0x02)在 LiveVideo 上启用精确到帧的直播的请求示例。
curl -i -X GET \ "https://graph.facebook.com/v19.0
/LIVE_VIDEO_ID?fields=secure_stream_url.inband_go_live(require_inband_signal)&access_token=12345..."
启用了精确到帧的直播的 LiveVideo 对象的安全直播网址。
{ "secure_stream_url": "rtmps://rtmp-pc.facebook.com:443/rtmp/LIVE_VIDEO_ID?s_bl=1&s_gl=1&...", "id": "LIVE_VIDEO_ID" }
从 2021 年 5 月 25 日开始,“开始直播”对话框将停用。详情请访问我们的博文。
为尽可能简化 Live API 集成流程,我们创建了一个插件,让您能够在开始直播前通过 Facebook 验证身份、预览直播视频,以及通过弹出窗口介绍直播视频。此对话框最适合通过客户端直播的场景。后端集成仍应直接使用 API。
如要初始化弹出窗口(其中提供能够确定 POST
响应定向位置的控件),请插入以下代码。
<button id="liveButton">Create Live Stream To Facebook</button> <script> document.getElementById('liveButton').onclick = function() { FB.ui({ display: 'popup', method: 'live_broadcast', phase: 'create', }, function(response) { if (!response.id) { alert('dialog canceled'); return; } alert('{your-stream-url}:' + response.secure_stream_url); FB.ui({ display: 'popup', method: 'live_broadcast', phase: 'publish', broadcast_data: response, }, function(response) { alert("video status: \n" + response.status); }); }); }; </script>
参数 | 值 | 描述 |
---|---|---|
|
| 对话框在网页中打开的方式。 |
|
| 处于创建阶段的对话框允许您获取用于上传视频的直播网址;处于发布阶段的对话框提供“预览”和“开始直播”按钮。 |
| 从 API 或 | 对于 |
在创建阶段的弹出窗口中,选择直播视频目标位置,这可以是您管理的任何主页或小组。POST
响应将包含 stream_url
和 secure_stream_url
字段。任一字段都可拆分为服务器网址和直播密钥。
服务器网址是 stream_url 的前半部分:rtmp://rtmp-api.facebook.com:80/rtmp/
直播密钥是 stream_url 的后半部分:10153307708286557?ds=1&a=AdrRKk4mOaqPbQdxDuk
响应字段 | 阶段 | 描述 |
---|---|---|
|
| 直播视频的编号。 |
|
| 用于上传直播视频的 RTMP 网址,包含直播服务器和直播密钥。 |
|
| RTMPS 网址,具有安全协议的直播网址。 |
|
| 指示直播状态的字符串值。 |
在代码片段中,我们提供具有 stream_url
的 alert
调用。客户端应使用 stream_url
开始直播。直播开始后,您就会发现发布阶段弹出窗口中显示直播预览。用户可通过对话框选择隐私设置,而无需调整请求的隐私参数,还可以通过对话框设置直播视频说明、标题和话题标签。
请注意:如果发布弹出窗口为脱机状态,请确保防火墙没有屏蔽 RTMP,且浏览器上的所有广告屏蔽软件均已关闭。
点击开始直播后,对话框将关闭;几秒钟后,系统即会根据所选目标位置在“主页”或“群组”中播放直播视频。
元数据会在帧精确开始时间注入至直播视频的第一帧。编码器可执行倒计时,提醒发布者视频的确切开始时间。您还可通过 Facebook 界面开始和暂停视频。