无法使用Youtube API将我的Youtube广播过渡到现场
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用Youtube API将我的Youtube广播过渡到现场相关的知识,希望对你有一定的参考价值。
现在我正试图弄清楚当我的YT广播过渡到现场时我做错了什么。
所以我提出请求并得到以下回复:
{
"code" : 403,
"errors" : [ {
"domain" : "youtube.liveBroadcast",
"message" : "Invalid transition",
"reason" : "invalidTransition",
"extendedHelp" : "https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/transition#params"
} ],
"message" : "Invalid transition"
}
当然我已多次阅读文档所以我监视了LiveStream并且正在等待它的“活动”状态(我的广播有lifeCycleStatus =“ready”)。
错误消息没有解释为什么我不能进行转换的真正原因。 而且...当然我无法访问Youtube服务器的日志:)
你能提出什么建议? 如何找出我错在哪里?
因此,即使我错过了某些内容,文档和错误消息也无法帮助我理解任何内容。所以无论如何它对于YT LiveStreaming API来说都是一个“bug”......
所以有点不明确的规则是:
- 确保您已创建并准备好广播和直播。
并确保广播生命周期状态不是
COMPLETE
,否则重新创建广播......所以请确保您的广播生命周期状态为ready
- 将广播绑定到直播
- 开始将视频发布到直播
- 等待直播状态
active
- 过渡到
testing
(是的,你必须这样做,而不是转移到live
) - 等待广播
lifeCycleStatus
成为testing
- 过渡到
live
- 等待广播
lifeCycleStatus
成为live
你不能跳过testing
,不能从complete
过渡到testing
或ready
。
我遇到了同样的问题,最后我发现了问题。在post命令转换到测试后,lifeCycleStatus是:liveStarting,我们需要等待lifeCycleStatus才能进行测试。所以我们应该获得广播状态。这是我的代码:
liveStreamRequest = youtube.liveStreams()
.list("id,status")
.setId(liveBroadcast.getContentDetails()
.getBoundStreamId());
LiveStreamListResponse returnedList = liveStreamRequest.execute();
List<LiveStream> liveStreams = returnedList.getItems();
if (liveStreams != null && liveStreams.size() > 0) {
LiveStream liveStream = liveStreams.get(0);
if (liveStream != null)
while (!liveStream.getStatus().getStreamStatus()
.equals("active")) {
Thread.sleep(1000);
returnedList = liveStreamRequest.execute();
liveStreams = returnedList.getItems();
liveStream = liveStreams.get(0);
}
}
希望能帮助别人关心这个问题!
如果出现以下情况,您可以保留4-7步:在创建或更新该广播时,通过将contentDetails.monitorStream.enableMonitorStream属性设置为false来禁用广播的监视器流。
以上是关于无法使用Youtube API将我的Youtube广播过渡到现场的主要内容,如果未能解决你的问题,请参考以下文章
使用 Youtube Api v3 和 oauth2 将视频上传到我的 Youtube 频道,无需用户身份验证