我有兴趣创建一个在屏幕上显示一些“屏幕截图”的网站。这些“屏幕截图”可以是任何图像文件类型(例如:jpeg、png 等)我希望能够显示 Youtube 视频的第一帧屏幕截图。当用户点击它时,用户将被重定向到 Youtube URL。
如何在给定 URL 的情况下检索 Youtube 视频的屏幕截图或第一帧图像?例如:http://www.youtube.com/watch?v=gbcmYbMB9mo 使用这个,我想要一张 GoPro 相机的图像。是否有 API 可以捕获 Youtube 视频的第一张图片?
谢谢
您可以使用YouTube IFrame API(参见https://developers.google.com/youtube/iframe_api_reference)。
这里是播放您问题中提供的视频的示例(
gbcmYbMB9mo
):
<body onload="LoadYouTubeIframeAPI()">
<script type="text/javascript">
var player = null;
var playerParams =
{
playerVars:
{
"enablejsapi":1,
"origin":document.domain,
"rel":0
},
events:
{
"onReady":onPlayerReady,
"onError":onPlayerError,
"onStateChange":onPlayerStateChange
}
};
function LoadYouTubeIframeAPI()
{
var scriptElement = document.createElement("script");
scriptElement.src = "http://www.youtube.com/iframe_api";
var firstScriptElement = document.getElementsByTagName("script")[0];
firstScriptElement.parentNode.insertBefore(scriptElement,firstScriptElement);
}
function onYouTubeIframeAPIReady()
{
player = new YT.Player("player",playerParams);
}
function onPlayerReady(event)
{
player.loadVideoById("gbcmYbMB9mo");
}
function onPlayerError(event)
{
...
}
function onPlayerStateChange(event)
{
if (event.data == YT.PlayerState.ENDED)
{
...
}
}
</script>
</body>
您可能需要使用此代码“玩一点”,以防止视频自动启动......
由于视频可能与运行代码的位置(您的网站)不同
origin
,因此无法完成。直接视频嵌入可以使用画布 API 截取屏幕截图。
对于 youtube 和其他 iframe 方法,您需要服务器端处理。为此存在库,例如:https://github.com/jsgilberto/youtube-frames