2

我正在使用 youtube API 开发代码以进行实时流式传输。我做了什么

  1. 我在google注册了一个项目,得到了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 并创建了我的直播活动,但返回的数据不包括 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 请求)?

- - 编辑 - -

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

1 回答 1

4

经过一番研究,我通过发送此请求解决了它

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

youtube 会返回给我 RTMP 服务器 URL

谢谢大家

于 2013-07-07T04:11:09.080 回答