我正在使用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);
}
''' 有时它工作得很顺利,但是在其他时候状态不会改变,这意味着广播不会转换为直播,并且我陷入了无限循环。 当然,我可以手动跳出循环,但是我仍然不明白为什么未处理请求,我可以解决它。
答案 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版中发现了这个问题,该版本通知我编码器输出分辨率与流分辨率不匹配。