Android YouTube LiveStream API-连接设备摄像头;获取输出URL;示例代码中的编译错误

Android YouTube LiveStream API-连接设备摄像头;获取输出URL;示例代码中的编译错误,android,youtube-api,Android,Youtube Api,我正在构建一个Android应用程序,其中包括使用YouTube API启动实时视频流。我已经回顾了谷歌在这方面的视频,并利用了相关的示例Java代码。我终于获得了youtube构建的基本代码、直播、直播流、相关插入、相应的“返回的广播/流”以及代码中的bind语句,所有正确的库都准备好了,我还有4个问题没有解决 1) 在示例代码(或我搜索的其他站点)中,我没有找到如何从相机设备创建视频流并将其连接到上述结构的“输入套接字”。有一些网站展示了如何从Android设备摄像头直播视频流,但当我看到这

我正在构建一个Android应用程序,其中包括使用YouTube API启动实时视频流。我已经回顾了谷歌在这方面的视频,并利用了相关的示例Java代码。我终于获得了youtube构建的基本代码、直播、直播流、相关插入、相应的“返回的广播/流”以及代码中的bind语句,所有正确的库都准备好了,我还有4个问题没有解决

1) 在示例代码(或我搜索的其他站点)中,我没有找到如何从相机设备创建视频流并将其连接到上述结构的“输入套接字”。有一些网站展示了如何从Android设备摄像头直播视频流,但当我看到这些代码时,我无法确定如何将该方法(以及哪个变量)与YouTube示例代码对齐

2) 类似地,我无法确定哪个变量将包含上述结构的“输出套接字”——用户可以单击该URL观看广播,然后我可以在我的应用程序的后续步骤中使用该URL

3) 进入上述阶段所需的“auth”类没有可用的库。我最终引入了Github上提供的代码,如果这是唯一的方法的话,我可以从这里开始使用它,但是该类及其方法是否有正式发布的库版本

4) 最后但并非最不重要的一点,虽然我说我已经成功地将代码导入到应用程序中,并且没有显示丢失的库等,但它仍然无法构建。错误如下所示,在搜索Stackoverflow以查找这些类型的错误时,我无法清楚地了解接下来的步骤

理想情况下,我希望在不更改或添加到“技术堆栈”的情况下解决上述问题-例如,提到了提取URL的Python工具…我更希望了解如何使用Java代码来实现它


希望与本论坛的脑力结合解决!关于

我可以回答前两个问题(但很抱歉……因为我不是Android开发人员,所以最后两个问题我帮不了多少忙):

1) YouTube Livestream API本身并没有办法实际传输视频;相反,当您发出创建Livestream资源对象的调用时,返回的对象将具有以下参数:

cdn.ingestionInfo.ingestionAddress
contentDetails.monitorStream.embedHtml
您需要获取Android上存在的任何库和代码来创建RTMP流,并将其直接发送到返回的地址(在YouTube端,当您创建Livestream资源对象时,它会打开摄取套接字,当您的数据开始传输时,它拥有执行所有转码所需的所有信息,然后根据您设置的参数重新广播)

2) 您需要使用两个“输出套接字”来使用您的术语。首先,在创建广播资源时(在创建livestream资源之前),可以通过的设置之一是:

contentDetails.monitorStream.enableMonitorStream
如果将其设置为true,则返回的资源对象将有一个附加参数:

cdn.ingestionInfo.ingestionAddress
contentDetails.monitorStream.embedHtml
这将是一个监控播放器,因此无论是谁进行直播,都将能够看到流出现(一旦你的应用程序完成步骤1),但在它可能真正向世界直播之前

就“向世界直播”流而言,您可以构建此。。。广播资源对象的ID参数将只是一个普通的旧YouTube视频ID,因此当返回该ID(指示广播已设置)时,监视URL将为:

https://www.youtube.com/watch?v={ID}

API仅允许您创建和管理livestreams广告事件。在获取rtmp地址作为摄取地址后,您需要自己捕获相机,然后使用其中一个编码器/拖缆库来实际传输到该地址


在过去,我使用ffmpeg库来实现这一点。我使用Android NDK来构建C++代码,并内置到我的应用程序中。由于ffmpeg,我无法将该项目开源,但现在我将该部分剥离为接口,并希望在几天内将其开源。然后我会更新这个问题。

忘记分享最后一点中的构建错误-这里是:[2014-10-17 08:54:55-观察]Dx处理“javax/transaction/heuristiccommitception.class”时遇到的问题:在不构建核心库时,错误地使用了核心类(java.*或javax.*)。这通常是由于无意中包含了一个核心库文件,非常感谢!我将为问题1尝试摄入地址方法,为问题2尝试第二个“生活到世界”选项,因为这正是我所需要的。我想我现在可以接受不解决问题3,但问题4中的构建错误仍然会阻碍展示。无论如何,我真的很感谢上面的输入,一旦我尝试了,我会回来给答案贴标签/投票。谢谢,但是在你和Satyajit Salgar展示的视频中,你展示了一个端到端的演示——在那个例子中,你是否使用了你正在考虑的代码来实现上述开源?另外,请您确认:a)摄取地址是在cdn.ingestionAddress获得的,b)我从哪里获得可用于观看广播的输出URL?是在returnedBroadcast.Id?Ibrahim,开源的任何更新?本周末我们正在进行一个hackathon项目,我们计划使用FFmpeg流媒体传输到youtube livestream API。