无法使用 Youtube API 将我的 Youtube 广播转换为直播
Posted
技术标签:
【中文标题】无法使用 Youtube API 将我的 Youtube 广播转换为直播【英文标题】:Cannot make transition of my Youtube broadcast to live using Youtube API 【发布时间】:2016-05-02 10:08:36 【问题描述】:现在我正试图弄清楚在将我的 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 来说是一种“错误”......
【问题讨论】:
您可以发布您在尝试转换直播时提出的请求吗?也许你的参数之一是错误的。 不幸的是,我使用了大量来自 google 的 .jar,所以所有的 http 请求都是由那个 .jar 完成的,所以对我隐藏。可能有一个选项可以打开详细模式或类似的东西......无论如何看起来我已经找到了解决方案,所以会在这里发布。 【参考方案1】:所以有点不清楚的规则是:
-
确保您已创建并准备好广播和直播。并确保广播生命周期状态不是
COMPLETE
,
否则重新创建广播
...因此请确保您的广播生命周期状态为ready
直播绑定直播
开始将视频发布到直播
等待直播状态active
转换到testing
(是的,你必须这样做而不是转移到live
)
等待广播lifeCycleStatus
变成testing
转换为live
等待广播lifeCycleStatus
变成live
您不能跳过testing
,也不能从complete
转换到testing
或ready
。
【讨论】:
我不确定是不是这样。文档似乎另有说明:developers.google.com/youtube/v3/live/docs/…【参考方案2】:如果出现以下情况,您可以离开 4-7 步: 在创建或更新广播时,通过将 contentDetails.monitorStream.enableMonitorStream 属性设置为 false 禁用了广播的监控流。
【讨论】:
【参考方案3】:遇到同样的问题,终于找到问题了。将命令转换到测试后,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);
希望能帮助关心这个问题的人!
【讨论】:
以上是关于无法使用 Youtube API 将我的 Youtube 广播转换为直播的主要内容,如果未能解决你的问题,请参考以下文章
Youtube API CommentThreads 的范围无效 - java
Youtube Data API V3 - 使用google.youtube.videos.list()获取视频时出错
每天查询的 YouTube 数据 API v3 配额设置为 0