10

现在,我正试图弄清楚在将我的 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 来说是一种“错误”......

4

3 回答 3

15

所以有点不清楚的规则是:

  1. 确保您已创建并准备好广播和直播。
    并确保广播生命周期状态不是COMPLETE,否则重新创建广播 ......所以确保您的广播生命周期状态是ready
  2. 将广播绑定到直播
  3. 开始将视频发布到直播
  4. 等待直播状态active
  5. 过渡到testing(是的,你必须这样做而不是移动到live
  6. 等待广播lifeCycleStatus变成testing
  7. 过渡到live
  8. 等待广播lifeCycleStatus变成live

您不能跳过也不testing能从complete或过渡。testingready

于 2016-01-29T11:50:59.567 回答
2

如果出现以下情况,您可以离开 4-7 步:在创建或更新广播时,通过将contentDetails.monitorStream.enableMonitorStream属性设置为false来禁用广播的监控流。

于 2017-12-22T10:20:32.810 回答
1

我遇到了同样的问题,最后我找到了问题。在命令转换到测试之后, 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);
                    }
            }

希望能帮助关心这个问题的人!

于 2016-12-30T08:32:31.640 回答