2

我想通过 url 嵌入一个 youtube 视频,example=https://gdata.youtube.com/feeds/api/users/estXcrew/uploads?max-results=1
这是我使用的代码块

  <div id="player"></div>

    <script>
      var tag = document.createElement('script');

      tag.src = "https://www.youtube.com/iframe_api";
      var firstScriptTag = document.getElementsByTagName('script')[0];
      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
      var player;
      function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
          height: '200',
          width: '200',
          videoId: '//video ID Usually goes here',
          events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
          }
        });
      }
      function onPlayerReady(event) {
        event.target.playVideo();
      }

      var done = false;
      function onPlayerStateChange(event) {
        if (event.data == YT.PlayerState.PLAYING && !done) {
          setTimeout(stopVideo, 6000);
          done = true;
        }
      }
      function stopVideo() {
        player.stopVideo();
      }
    </script>

我从 Youtube API 的站点复制了这段代码,因为我还没有太多经验。如何用上面的链接替换“videoId”行?

4

2 回答 2

1

加载 YouTube 视频替换

//video ID 通常放在这里

与您要加载的视频的 ID。

示例 YouTube 视频:http ://www.youtube.com/watch?v=xmP7kQdAPhM

现在在 videoId 我会使用

videoId:'xmP7kQdAPhM'

或者,如果您使用了一些 PHP,您可以尝试以下方法。

<?php
$feedURL = 'http://gdata.youtube.com/feeds/api/users/estXcrew/uploads?max-results=1';
$sxml = simplexml_load_file($feedURL);
$i=0;
foreach ($sxml->entry as $entry) {
$media = $entry->children('media', true);
$watch = (string)$media->group->player->attributes()->url;

$pat = '/\=([^\"]*?)\&/'; 
$value=$watch ;
preg_match($pat, $value, $matches); 

echo "<iframe title='YouTube video player' class='youtube-player' type='text/html' 
width='640' height='390' src='http://www.youtube.com/embed/$matches[1]'
frameborder='0' allowFullScreen></iframe>";   
?>

<div class="videoitem">
<div class="videotitle">
<h3><a href="<?php echo $watch; ?>" class="watchvideo"><?php echo $media->group->title; ?></a></h3>
<p><?php echo $media->group->description; ?></p>        
</div>
</div>      
<?php $i++; if($i==3) { echo '<div class="clear small_v_margin"></div>'; $i=0; } } ?>

例子

于 2013-09-01T16:31:52.787 回答
0

首先,关于网址。请注意,此 url 表示使用版本 2,并且此版本已被弃用。请参阅“受弃用政策约束的 YouTube API”:https ://developers.google.com/youtube/youtube-api-list 另请注意,默认情况下使用版本 1,您可能需要添加:v=2,对于版本 2。如果您更喜欢 JSON 而不是 XML 的响应,请添加:alt=json。为了更好地阅读添加:prettyprint=true。例如: https ://gdata.youtube.com/feeds/api/users/estXcrew/uploads?maxresults=1&v=2&alt=json&prettyprint=true 此外,由于在 api 版本 3 中使用 JSON,您可能更喜欢使用 JSON。要使用 api 版本 3,首先需要通过注册获取 api-key。要捕获响应,您需要使用 XMLHttpRequest() 或 ActiveXObject() 将 url 发送到服务器。寻找可以帮助您的(JS 或其他类型)代码库,例如解析和组合 XML 或 JSON 字符串;或发送 url 请求。参见 JSON 解析:Parse JSON in JavaScript?

关于您提供的代码:使用参数。比如得到一个videoId后:

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
// Adding a library to send requests to a server ?
</script>
-->

<script>
      var myVideoId = "ZY7aRxb-Z1c";  // Set the videoId here.

      // insert an iframe
      var tag = document.createElement('script');
      tag.src = "https://www.youtube.com/iframe_api";
      var firstScriptTag = document.getElementsByTagName('script')[0];
      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

      var player; // reference to the player object
      var param = {      // video-player parameters
          height: '200',
          width: '200',
          videoId: 'xxxxxxxxxxx',
          events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
          }
       };
       param.videoId = myVideoId   // Replace the videoId parameter

      function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', param);   // create the player object
      }

      function onPlayerReady(event) {
        event.target.playVideo();   // start to play
      }

      var done = false;   // flag
      function onPlayerStateChange(event) {
        if (event.data == YT.PlayerState.PLAYING && !done) {
          //setTimeout(stopVideo, 6000);  // This will stop playing after 6 seconds
          done = true;
        }
      }
      function stopVideo() {
        player.stopVideo();
      }
    </script>
</head>

<body>
<div id="player">please wait...</div>
</body>
</html>
于 2013-09-02T08:18:28.197 回答