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

无法使用Youtube API将我的Youtube广播转换为live,youtube,youtube-livestreaming-api,Youtube,Youtube Livestreaming Api,现在,我正试图找出我在将YT广播转换为直播时的错误 因此,我提出请求并得到以下响应: { "code" : 403, "errors" : [ { "domain" : "youtube.liveBroadcast", "message" : "Invalid transition", "reason" : "invalidTransition", "extendedHelp" : "https://developers.google.com/youtub

现在,我正试图找出我在将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的一种“缺陷”…

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

  • 确保已创建并准备好广播和直播流。
    并确保广播生命周期状态不是
    完成
    , 否则重新创建广播
    ... 因此,请确保您的广播生命周期状态为“就绪”
  • 将广播绑定到livestream
  • 开始将视频发布到livestream
  • 等待livestream状态
    活动
  • 过渡到
    测试
    (是的,您必须这样做,而不是移动到
    现场
  • 等待广播
    lifeCycleStatus
    变为
    testing
  • 切换到
    live
  • 等待广播
    lifeCycleStatus
    变为
    live

  • 您不能跳过
    测试
    ,也不能从
    完成
    过渡到
    测试
    准备

    我遇到了同样的问题,最后我发现了问题。在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);
                        }
                }
    
    liveStreamRequest=youtube.liveStreams()
    .列表(“id、状态”)
    .setId(liveBroadcast.getContentDetails()
    .getBoundStreamId());
    LiveStreamListResponse returnedList=liveStreamRequest.execute();
    List liveStreams=returnedList.getItems();
    if(liveStreams!=null&&liveStreams.size()>0){
    LiveStream=liveStreams.get(0);
    if(liveStream!=null)
    而(!liveStream.getStatus().getStreamStatus())
    .equals(“主动”)){
    睡眠(1000);
    returnedList=liveStreamRequest.execute();
    liveStreams=returnedList.getItems();
    liveStream=liveStreams.get(0);
    }
    }
    

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

    如果满足以下条件,您可以保留4-7个步骤:
    创建或更新广播时,通过将contentDetails.monitorStream.enableMonitorStream属性设置为false禁用了广播的监控流。

    在尝试转换直播时,您是否可以发布请求?也许你的一个参数是错误的。不幸的是,我使用了大量来自google的.jar,所以所有http请求都是由.jar完成的,所以对我来说是隐藏的。可能有一个选项可以打开详细模式或类似的东西。。。无论如何,看起来我已经找到了解决方案,所以我会把它贴在这里。我不确定情况是否如此。文件似乎指出了另一点: