无法使用 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 转换到testingready

【讨论】:

我不确定是不是这样。文档似乎另有说明: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和品牌帐户

每天查询的 YouTube 数据 API v3 配额设置为 0

如何使用 youtube api 获取按发布日期排序的播放列表的视频

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