无法使用Youtube API将我的Youtube广播转换为实时

时间:2016-01-25 22:37:23

标签: youtube youtube-livestreaming-api

现在我正在努力弄清楚当我的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 =“就绪”)。

错误消息并不能解释为什么我不能进行转换的真正原因 而且...当然我无法访问Youtube服务器的日志:)

你有什么建议?
如何找出我错在哪里?

所以即使我错过了什么,文档和错误信息也无法帮助我理解任何事情。所以无论如何它对于YT LiveStreaming API来说都是一个“bug”......

3 个答案:

答案 0 :(得分:13)

因此有点不明确的规则是:

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

答案 1 :(得分:1)

我遇到同样的问题,最后我发现了问题。在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);
                    }
            }

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

答案 2 :(得分:0)

如果符合以下条件,您可以留下4-7步: 在创建或更新该广播时,通过将 contentDetails.monitorStream.enableMonitorStream 属性设置为 false 来禁用广播的监视器流。