yt-api 有没有办法下载自己上传的视频?我想做一些类似 pixabay 的视频。
托马斯131
你好,所以我已经实现了 Youtube Player API,并且根据我正在做某些事情的事件,它在视频播放或暂停时完美工作,但是当视频结束时,永远不会调用结束事件,而是它回忆暂停的事件。我使用从网址栏获取视频的网址,这工作得很好。
<script>
function get(name){
if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search))
return decodeURIComponent(name[1]);
}
//Load player api asynchronously.
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: '390',
width: '640',
videoId: get('url'),
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(evt) {
// evt.target.playVideo();
}
function onPlayerStateChange(evt) {
if (evt.data == YT.PlayerState.PLAYING) {
$.ajax({ url:'insertToDBFromVid.php',
data: {action : 'playing' },
type: 'post',
done: function(result){
alert(result); …Run Code Online (Sandbox Code Playgroud) 我在使用 YouTube api 中的 onError 事件时遇到了一些问题。下面是一个带有假 videoId 的脚本,用于创建一个调用 onPlayerError 函数的错误。不幸的是我不明白为什么错误函数被调用两次。我认为这可能与函数内部的回调响应有关(也许?),但当 videoId 正确时, onReady 或 onStateChange 都不会被调用两次。任何人都可以看到任何明显的问题吗?提前致谢。
顺便说一句:是的,我确实需要回调和回调内的响应。这是我的完整脚本的缩短版本。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- jQuery -->
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<!-- jQuery / javascript for page -->
<script type='text/javascript'>
//<![CDATA[
//create deferred object
var YTdeferred = $.Deferred();
//attach a function to onYouTubeIframeAPIReady
window.onYouTubeIframeAPIReady = function() {
//resolve when youtube callback is called passing YT as a parameter
YTdeferred.resolve(window.YT);
console.log('Resolved'); …Run Code Online (Sandbox Code Playgroud) jquery callback youtube-api youtube-javascript-api youtube-iframe-api
我有一个 Discord 机器人,我想在某个用户上传视频时发送一条消息。我查看了 Youtube API ( https://developers.google.com/youtube/v3/docs/videos ),但没有找到如何做我想做的事情。
自从 Chrome 更新到版本 72 以来,我在 YouTube Iframe API 上运行的自定义播放器停止工作。它仍然可以在 Firefox 或 Chrome <= 71 上完美运行。
使用下面的代码,当函数 play() 被触发时,视频开始缓冲然后停止,不播放。
function onYouTubeIframeAPIReady() {
ytIframe = $("#player")[0];
ytPlayer = new YT.Player(ytIframe, {
events: {
'onReady': () => {},
'onStateChange': () => {}
}
});
}
function play() {
ytPlayer.playVideo();
}
Run Code Online (Sandbox Code Playgroud)
使其工作的唯一方法是使用mute=1iframe src 上的 url 参数嵌入视频。但即使我这样做,如果我尝试在播放ytPlayer.unMute()视频(使用)后取消静音播放器,视频会再次停止。
关于此 Chrome 72 更新发生了什么变化的任何想法?这是 YouTube/Chrome 错误还是预期行为?
谢谢!
javascript embed youtube google-chrome youtube-javascript-api
我收到此错误: Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('<URL>') does not match the recipient window's origin ('<URL>').
我的页面按我希望的方式运行(我没有注意到任何不受欢迎的行为),但我从不喜欢忽略控制台中的错误,尤其是在我什至不了解根本原因的情况下。
我的问题不是重复的,因为我已经研究了所有这些问题,但没有一个答案有效:
我已经在用了https。
我已经尝试设置playerVars为{origin: window.location.origin}.
我已经尝试过设置host。
我已经尝试过更改 iframe 的可见性。
等等。
var playerVars = {origin: window.location.origin};///sf/answers/3536277321/
window.onYouTubeIframeAPIReady = function () {
for (var i = 0; i < youtube.length; i++) …Run Code Online (Sandbox Code Playgroud) youtube youtube-api youtube-javascript-api youtube-iframe-api
我目前有以下代码在页面上播放YouTube视频.
<div id="player"></div>
<script>
//Load player api asynchronously.
var tag = document.createElement('script');
tag.src = "http://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'JW5meKfy3fY',
playerVars: { 'autoplay': 1, 'rel': 0, 'showinfo': 0, 'egm': 0, 'showsearch': 0, },
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
event.target.playVideo();
}
function onPlayerStateChange(event) {
//When the video has ended
if (event.data == YT.PlayerState.ENDED) {
//Get rid of …Run Code Online (Sandbox Code Playgroud) 我想加载YouTube视频,然后立即静音,播放,暂停和取消静音.在这样做时,我希望向用户呈现一个没有大播放按钮的视频,并且底部有控件.为此,我有以下代码:
<script type="text/javascript">
function onYouTubePlayerReady(playerid)
{
mutePlayPauseUnmute(playerid);
}
function onYouTubePlayerAPIReady(playerid)
{
mutePlayPauseUnmute(playerid);
}
function onYouTubeIframeAPIReady(playerid)
{
mutePlayPauseUnmute(playerid)
}
function onPlayerReady(playerid)
{
mutePlayPauseUnmute(playerid)
}
function mutePlayPauseUnmute(playerid)
{
var player = document.getElementById(playerid);
player.mute();
player.playVideo();
player.pauseVideo();
player.unMute();
}
</script>
<iframe id="quotedVideo1" type="text/html" width="246" height="160" src="https://www.youtube.com/embed/NWHfY_lvKIQ?modestbranding=1&rel=0&showinfo=0&autohide=1&iv_load_policy=3&theme=light&enablejsapi=1&playerapiid=quotedVideo1" frameborder="0"> <!-- Magic Comment --> </iframe>
Run Code Online (Sandbox Code Playgroud)
然而,经检查,没有onYouTubePlayerReady,onYouTubePlayerAPIReady,onYouTubeIframeAPIReady,onPlayerReady,也不mutePlayPauseUnmute是以往任何时候都调用.我做错了什么?根据https://developers.google.com/youtube/js_api_reference#onYouTubePlayerReady,它看起来应该有效,但事实并非如此.
我知道有很多项目,我可以使用它们.但我真的想让它在我的VB.Net项目中没有依赖性地运行.
所以我尝试做的是创建一个Youtube下载器.它适用于通常的视频.但是这些特殊视频如Vevo(https://www.youtube.com/watch?v=9bZkp7q19f0)和其他一些视频都不起作用.
他们有另一个我需要破译的签名.在这里,我需要我能够提取的HTMLPlayer JS文件(http://s.ytimg.com/yts/jsbin/html5player-de_DE-vflG4uS_k/html5player.js).在那个文件中,我需要搜索一个特殊的函数,看看这个函数在做什么,然后在我的代码中做同样的事情.到目前为止这么容易,但在某些例子中,我甚至找不到"sig ="或"signature =",当我找到它们时,它并没有真正帮助我.
所以我想知道的是如何从html5.player.js文件中提取所需的信息.所以你可以在这里看到https://superuser.com/questions/773719/how-do-all-of-these-save-video-from-youtube-services-work我有那个链接到那个文件.
我还发现了这个帮助我开始的https://mytoolkit.codeplex.com/discussions/479171.但是从Sign_Decipher的开头我没有在js文件中找到这样的被调用函数.
我找到的其他一些链接,但没有帮助我让它运行或太旧:
一些API在某种程度上也不起作用:
vb.net youtube encryption youtube-api youtube-javascript-api
我正在为客户开发一个网站,此时我很困难,因为我们都能够在Android上的Chrome中重新创建此问题.
无论出于何种原因,当我们在Chrome上的Android上加载此页面时:
视频加载器只是保持旋转和旋转,视频从不播放.
点击它也不会做任何事情(不开始播放,不在YouTube应用中打开它,什么都没有).
它在其他浏览器中运行得很好(适用于Android的Firefox加载并播放它很好),所以我很困惑为什么会发生这种情况.
我错过了什么?
它是API中的一些调用还是什么?
我迷路了.
youtube-api youtube-javascript-api mobile-chrome youtube-iframe-api
youtube ×7
youtube-api ×7
javascript ×3
ajax ×1
api ×1
callback ×1
download ×1
embed ×1
encryption ×1
jquery ×1
vb.net ×1