没有对实时转换请求的响应

No response on live transition request

我在 java 中使用 YouTube 直播 API。 我有时会遇到一个问题。

我写了一个 class 来检索现有的直播流并创建直播,确保该流正在发送数据,然后将它们绑定在一起,然后我发出 2 个转换请求。

首先我转换到测试(实时预览)请求,然后我转换到实时请求, https://developers.google.com/youtube/v3/live/life-of-a-broadcast 上的手册第 4.1 节说 我应该轮询 API 直到广播生命周期状态变为直播

这是我写的: '''

 YouTube.LiveBroadcasts.Transition requestLive = CreateYouTube.getYoutube().liveBroadcasts()
                    .transition("live", returnedBroadcast.getId(), "snippet,status");
            returnedBroadcast = requestLive.execute();
            //poll while live starting (wait while starting live)
  while(returnedBroadcast.getStatus().getLifeCycleStatus().equals("liveStarting")) {
           returnedBroadcast = getBroadcastById(returnedBroadcast.getId());
           System.out.println("polling liveStarting "+args[0]);
           Thread.sleep(1000);
 }

''' 有时它运行得很顺利,但有时状态没有改变,这意味着广播没有过渡到直播,我陷入了无限循环。 当然我可以手动跳出循环,但我仍然不明白为什么请求没有被处理,我可以修复它吗?

为什么要查找状态 liveStarting 而不是 live?超时可能变得 不幸 并完全错过状态。 liveStarting 是过渡状态。

https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#status.lifeCycleStatus

我还建议查看 LiveBroadcast 资源上的 contentDetails.enableAutoStart 属性。

您可以在附加 LiveStream 之前将 LiveBroadcast 更新为 enableAutoStart: true。我发现这是一种更可靠的启动流的方法。

https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.enableAutoStart

我找到了导致直播有时无法开始的问题。 问题是编码软件的输出分辨率 与创建流时设置为实时流 "cdn" 设置的分辨率不匹配。

YouTube Live API 没有设法抛出异常或通知我的程序,只是在我上面发布的代码中进入了无限循环, 我在 Live Control Room 的新测试版中发现了这个问题,它通知我编码器输出分辨率与流分辨率不匹配。