无法获取RTMP URL和流密钥

时间:2013-07-05 03:55:29

标签: youtube youtube-api rtmp live-streaming

我正在使用youtube API开发实时流媒体代码。我做了什么

  1. 我在谷歌注册了一个项目并获得了client_id,client_secret和 开发者ID
  2. 我已经完成了OAuth 2.0并获得了代码并将其交换到AUTH_TOKEN
  3. 我可以通过发布到域gdata.youtube.com
  4. 来创建直播活动

    请求

    /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并创建我的直播活动,但返回的数据 不包括STREAM KEY和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 请求)?

    ---- ---- EDIT

    基于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>
    

    但在我的情况下,我的返回数据不包含此行

1 个答案:

答案 0 :(得分:4)

经过一番研究后,我通过发送此请求解决了这个问题

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

并且youtube返回RTMP服务器网址

全部谢谢