youtube-api - 如何使用 YouTube Data API v3 启动默认的“Go Live”流
问题描述
从 YouTube 中的相机图标中选择“开始直播”,将我带到我的默认流所在的工作室。
在开始通过 rtmp 将数据上传到该流之前,我似乎需要导航到那里(启用它)。同样,如果流中断一分钟左右,流会自动结束,我需要转到页面并单击“关闭”按钮重新开始。
我发现我可以以编程方式检查流是否正在运行:
curl -H "Authorization: Bearer XXXXXXX_AUTHTOKEN" "https://www.googleapis.com/youtube/v3/liveStreams?part=snippet,cdn,contentDetails,status&mine=true"
我在 JSON 中获得与dn.ingestionInfo.streamName
工作室页面上的流键相同的条目。该条目还显示contentDetails.isReusable=true
和status.streamStatus=active
(我认为它需要“准备好”才能接受/启动流。
{
"kind": "youtube#liveStream",
"title": "Default stream key",
"description": "Description for default stream key",
"isDefaultStream": false
},
"cdn": {
"ingestionType": "rtmp",
"ingestionInfo": {
"streamName": "XXXXXXXXXXXXXXX",
"ingestionAddress": "rtmp://a.rtmp.youtube.com/live2",
"backupIngestionAddress": "rtmp://b.rtmp.youtube.com/live2?backup=1",
"rtmpsIngestionAddress": "rtmps://a.rtmps.youtube.com/live2",
"rtmpsBackupIngestionAddress": "rtmps://b.rtmps.youtube.com/live2?backup=1"
},
"resolution": "variable",
"frameRate": "variable"
},
"status": {
"streamStatus": "active",
"healthStatus": {
"status": "good"
}
},
"isReusable": true
}
}
是否有一个 API 集可用于重用此默认流并以编程方式将其状态从活动更改为就绪?
我尝试在下面这样做,但它总是给出一个新streamName
的而不是更改status.streamStatus
默认的。
curl -H "Authorization: Bearer AUTHTOKEN" -H "Accept: application/json" -H "Content-Type: application/json" --data "{'id':'STREAMID_FROM_DEFAULT_IN_STATUS_CALL','snippet':{'title':'test','description':'test.'},'status':{'streamStatus':'ready'},'cdn':{'ingestionType':'rtmp','frameRate':'variable','resolution':'variable','ingestionInfo':{'streamName':'STREAM_NAME_FROM_DEFAULT_IN_STATUS_CALL'}}}" --request POST "https://youtube.googleapis.com/youtube/v3/liveStreams?part=snippet,status,cdn"
.
但是,这会返回一个不同的id
,并且与cdn.ingestionInfo.streamName
我在调用中指定的不同。
关于如何以编程方式重用默认的“Go live”工作室流的想法或想法?
解决方案
有LiveBroadcasts.transition
API 端点,允许更改已创建广播的状态。
发出以下curl
命令(在下面的bash
's 语法中举例说明),用于更改由$BROADCAST_ID
to标识的广播的状态live
:
$ curl \
--request POST \
--header "Authorization: Bearer $ACCESS_TOKEN" \
"https://www.googleapis.com/youtube/v3/liveBroadcasts/transition?part=id,snippet,contentDetails,status&broadcastStatus=live&id=$BROADCAST_ID"
根据官方规范:
broadcastStatus
(细绳)该
broadcastStatus
参数标识广播正在更改的状态。请注意,要将广播转换为testing
orlive
状态,status.streamStatus
必须是active
广播绑定到的流。
[...]
在调用此端点之前,您必须已经拥有您的流active
。
此外,根据您以编程方式与广播交互的方式,您可能需要通过相应的广播属性将广播设置为自动重启enableAutoStart
。
推荐阅读
- google-maps - 如何使用 Google Places API 获取最新评论
- java - Android KeyStore 问题,另一台设备相同的应用程序
- apache-camel - 在微服务架构中使用 Apache Camel
- join - 加入实时填充的配置单元表
- loops - 在 Vue 上观察两个相互关联的变量
- java - 如何使用 .jar 模块类
- powershell - 计算Powershell中相同单元格值的数量
- scala - 如何使 sbt 输出详细日志信息
- python - GUROBI - 如何与 50 个效率最低的提供商一起运行优化
- firebase - 在 Firebase 数据库中导入多个 JSON 文件