即时转换要求无回应

时间:2019-11-07 09:27:02

标签: java youtube-api youtube-data-api youtube-livestreaming-api

我正在使用Java中的YouTube Live Streaming API。 我有一个问题,有时会发生。

我编写了一个类,该类检索现有的实时流并创建实时广播,确保该流正在发送数据,然后将它们绑定在一起,然后发出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);
 }

''' 有时它工作得很顺利,但是在其他时候状态不会改变,这意味着广播不会转换为直播,并且我陷入了无限循环。 当然,我可以手动跳出循环,但是我仍然不明白为什么未处理请求,我可以解决它。

2 个答案:

答案 0 :(得分:0)

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

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

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

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

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

答案 1 :(得分:0)

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

YouTube Live API未能引发异常或通知我的程序,只是在我上面发布的代码中进入了无限循环, 我在新版的Live Control Room Beta版中发现了这个问题,该版本通知我编码器输出分辨率与流分辨率不匹配。