无法使用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”......

答案

所以有点不明确的规则是:

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

你不能跳过testing,不能从complete过渡到testingready

另一答案

我遇到了同样的问题,最后我发现了问题。在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和品牌帐户

使用 Youtube Api v3 和 oauth2 将视频上传到我的 Youtube 频道,无需用户身份验证

无法使用 Youtube 数据 API 删除视频

YouTube API v3无法正常使用[重复]

无法使用 YouTube Android Player API 播放某些 Youtube 视频

在 Android TV 中使用 Youtube API