2013-07-05 64 views
1

我正在开发使用youtube API进行直播的代码。我做了什么无法获得RTMP URL和流密钥

  1. 我已经注册了一个项目谷歌,并得到CLIENT_ID,client_secret和 的开发者ID
  2. 我做的OAuth 2.0,并得到该代码,并将其交换到AUTH_TOKEN
  3. 我可以创建通过张贴域gdata.youtube.com

与请求现场活动

/feeds/api/users/default/live/events 

与头

Authorization: Bearer AUTH_TOKEN 
GData-Version: 2 
Content-Type: application/atom+xml 
X-GData-Key: key=DEV_ID 

与内容

<?xml version='1.0' encoding='UTF-8'?> 
<entry xmlns='http://www.w3.org/2005/Atom' 
    xmlns:media='http://search.yahoo.com/mrss/' 
    xmlns:yt='http://gdata.youtube.com/schemas/2007'> 
    <title>Test</title> 
    <summary>Test gogogogo!</summary> 
    <content type='application/atom+xml'> 
    <entry> 
     <yt:private/> 
     <yt:cdn name='primary'> 
     <media:content yt:format='18'/> 
     <media:content yt:format='19'/> 
     </yt:cdn> 
    </entry> 
    </content> 
    <yt:when start='2013-07-05T22:00:00.000Z'/> 
</entry> 

这将返回HTTP代码:201,我的现场活动被创建,但返回的数据 不包括流密钥和RTMP URL。我需要这些数据自动启动我的活动 事件。

返回数据

<?xml version='1.0' encoding='UTF-8'?> 
<entry xmlns='http://www.w3.org/2005/Atom' 
    xmlns:app='http://www.w3.org/2007/app' 
    xmlns:media='http://search.yahoo.com/mrss/' 
    xmlns:gd='http://schemas.google.com/g/2005' 
    xmlns:yt='http://gdata.youtube.com/schemas/2007' 
    gd:etag='W/&quot;CkEHR347eCp7I2A9WhFQEE0.&quot;'> 
    <id>tag:youtube.com,2008:live:event:XXXXXXXXXXXXXXXXXXXX</id> 
    <published>2013-07-05T05:03:56.000Z</published> 
    <updated>2013-07-05T05:03:56.000Z</updated> 
    <app:edited>2013-07-05T05:03:56.000Z</app:edited> 
    <category scheme='http://schemas.google.com/g/2005#kind' 
    term='http://gdata.youtube.com/schemas/2007#liveEvent'/> 
    <title>Test</title> 
    <summary>Test gogogogo!</summary> 
    <content type='application/atom+xml' 
    src='http://gdata.youtube.com/feeds/api/users/XXXXXXX/live/videos/XXXXXXXXX'/> 
    <link rel='self' type='application/atom+xml' 
    href='http://gdata.youtube.com/feeds/api/users/XXXXXXXXXXXXXXX/live/events/XXXXXXXXXXXXXXXXXX'/> 
    <link rel='edit' type='application/atom+xml' 
    href='http://gdata.youtube.com/feeds/api/users/XXXXXX/live/events/XXXXXXXXXXXXXXXXXXXXXX'/> 
    <author> 
    <name>XXXXXX</name> 
    <uri>http://gdata.youtube.com/feeds/api/users/XXXXXXXXXX</uri> 
    <yt:userId>XXXXXXXXXXXXX</yt:userId> 
    </author> 
    <media:group> 
    <media:description type='plain'>Test gogogogo!</media:description> 
    <media:title type='plain'>Test</media:title> 
    </media:group> 
    <yt:status>pending</yt:status> 
    <yt:when start='2013-07-05T22:00:00.000Z'/> 
</entry> 

如果我手动登录YouTube,点击我的创建现场活动,我可以看到我 流密钥和RTMP URL那里。我可以用它们手动开始流式传输 所以我的问题是:如何自动获取STREAM KEY和RTMP URL(通过API 请求)?

---- ----编辑

基于https://developers.google.com/youtube/2.0/developers_guide_protocol_managing_live_events

它说,当我成功创建/添加事件,YouTube将返回URL这样

<yt:cdn name='primary'> 
    <media:content yt:format='19' yt:name='yt-live_SpQXZYILnN0_35' 
     url='rtmp://rtmp1.youtube.com/videolive?...'/> 
    </yt:cdn> 

但在我的情况下,我退回的数据不包括这一行

回答

4

做了一些研究后,我通过发送这个请求来解决它

/feeds/api/users/default/live/events?inline=true 

和YouTube返回我RTMP服务器URL

感谢所有