需要这个用于youtube api // onStateChange回调函数!
我想以编程方式创建将听取几个youtube播放器发出的"onStateChange"事件的函数.添加侦听器已经起作用:
function onYouTubePlayerReady(playerId) {
var ytpStateManager = playerId +"_StateManager";
document.getElementById(playerId).addEventListener("onStateChange", ytpStateManager );
...
Run Code Online (Sandbox Code Playgroud)
我需要根据playerId变量("ytp_1","ytp_2",...)创建的函数是
function ytpStateManager(newState) {
ytpStateHelper(playerId , newState);
}
Run Code Online (Sandbox Code Playgroud)
所以playerId"ytp_1"的结果如下所示:
function ytp_1_StateManager(newState) {
ytpStateHelper("ytp_1", newState);
}
Run Code Online (Sandbox Code Playgroud)
也工作但是现在我需要为每个玩家手动添加它们,这不是我需要的.我想在新玩家发送readyState事件时自动创建它们.
我的问题是,似乎这些函数需要是一个全局函数才能正常工作.我现在几天尝试了几种选择.我的问题是我不知道如何(如果有办法)定义一个全局函数,包括.功能名称,以编程方式,基于另一个变量.
令人失望的是,ytp不会发出包含状态和玩家/目标的事件.会让事情变得更容易.所有这些基本上都是解决方法,因为我需要所有的stateChanges做所有事情.
如果有更好/更简单的方法,请告诉我:)否则非常欢迎这个问题的解决方案.
也许有办法重新举办活动,让它更"易于接近"?
我在规范中读到.addEventListener也接受一个对象,所以我试图将事件绑定到一个专用对象.但同样,它没有被触发.感觉像我测试了一切......
更新 我现在切换到iframe播放器(来自swfobject),因为那个提供了一个包含playerId和state的事件:D Yeahhh !! 在错误的ytplayer度过了一周之后,这感觉就像是一次伟大的进步.似乎也希望我们使用iframe播放器,它可以在支持时动态使用html5.
这段代码非常适合在iOS 6 uiwebview中自动播放视频内联.但是,我升级到iOS 7,现在我的视频无法自动播放.有时视频会自动播放,有时则不会.它会在大约10%的时间内自动播放.大多数时候我都会得到一个纺车.如果我从src标签中删除&playsinline = 1,它将自动播放全屏(不是我想要的).我花了很多时间为这个应用程序创建一个自定义播放器,现在它将无法正常工作.任何帮助是极大的赞赏.
_youTubeWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 20, 320, 184)];
_youTubeWebView.delegate = self;
_youTubeWebView.scrollView.bounces = NO;
_youTubeWebView.allowsInlineMediaPlayback = YES;
_youTubeWebView.mediaPlaybackAllowsAirPlay = YES;
_youTubeWebView.mediaPlaybackRequiresUserAction = NO;
[self.view addSubview:_youTubeWebView];
NSString* embedHTML = [NSString stringWithFormat:@"<html><body style='margin:0px;padding:0px;'><script type='text/javascript' src='http://www.youtube.com/iframe_api'></script><script type='text/javascript'>function onYouTubeIframeAPIReady(){ytplayer=new YT.Player('playerId',{events:{onReady:onPlayerReady}})}function onPlayerReady(a){ a.target.playVideo(); }</script><iframe id='playerId' type='text/html' width='%@' height='%@'src='http://www.youtube.com/embed/%@?enablejsapi=1&rel=0&playsinline=1&controls=0&showinfo=0' frameborder='0'></body></html>", w, h, videoId];
[_youTubeWebView loadHTMLString:embedHTML baseURL:nil];
Run Code Online (Sandbox Code Playgroud)
这是一个快速测试文件的链接.videoPlayerTest.zip
objective-c youtube-api uiwebview ios youtube-javascript-api
当通过iFrame代码嵌入网页时,YouTube缩略图显得很糟糕.一旦视频开始播放,质量看起来绝对正常.
这是一个示例视频:http: //jsfiddle.net/x5829/
播放前 - 质量不佳的缩略图

在玩耍时 - 质量好

无论出于何种原因,它似乎使用的是hqdefault.jpg质量图像,而不是maxresdefault.jpg,它的质量要高得多.
我已经尝试将iFrame维度增加到1280x720甚至更高,似乎没有任何区别.
是否可以使用JavaScript API完成任何操作以强制使用缩略图质量?我们使用的所有视频都是720p,保证.
最后一点(我认为这不重要),我们使用YouTube API(V3)上传视频,然后通过API设置缩略图.但是,使用YouTube选择的自动生成的缩略图时会发生同样的事情.
编辑 -我想知道这是否会随着时间的推移而改善,想想也许YouTube会在24小时内对其进行优化,但几天之后它仍然是相同的.
编辑2 -据我所知,iFrame仍然是谷歌在网站上嵌入视频的"推荐"方法,因此它们也适用于移动设备.
youtube iframe thumbnails youtube-api youtube-javascript-api
我想弄清楚玩家什么时候不再缓冲回调.
我现在正在使用 onPlayerBuffering: function(){};当玩家开始缓冲时,但我似乎找不到任何相反的东西.
onPlayerPlaying: function(){};一旦玩家缓冲,这似乎不起作用.
有谁知道这是否可能?
另外,我正在使用 Nirvana Tikku的jquery-youtube插件,这里和这里的回调列表......这些都不能完成这项工作吗?
谢谢!!
这里我有另一个问题,这次关于youtube API.我正在使用此代码来获取youtube播放器:
<div id=\"youtubeVideoContainer\"></div><script type=\"text/javascript\">
//Load player api asynchronously.
var tag = document.createElement('script');
tag.src = \"//www.youtube.com/player_api\";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('youtubeVideoContainer', {
height : \"".$height."\",
width : \"".$width."\",
videoId : \"".$id."\",
playerVars : ".json_encode($this->playerParams)."
});
}
</script>
Run Code Online (Sandbox Code Playgroud)
请不要介意\",它是用PHP呈现的,所以它只是为了转义,视频也在播放,所以没有重大错误:)
令我烦恼的是,每当我请求视频时,我都会在我的控制台中看到此消息:不安全的JavaScript尝试使用URL访问框架
https://www.socialthisday.com/playwin/admin/content/edit/project_1/home.html 来自框架,网址为 https://www.youtube.com/embed/2UJH9dCtp7w?autohide=1&autoplay=1&controls=0&border&cc_load_policy=0&color&color1&color2&disablekb&enablejsapi = 1&egm&fs&hd&iv_load_policy&loop&modestbranding = 1&origin = https%3A%2F%2Fwww.socialthisday.com&playerapiid&playlist&rel = 0&showinfo = 0&showsearch&start&theme&version = 3.域,协议和端口必须匹配.
我想解决这个问题,所以我没有看到这个消息.我知道这不是一件很重要的事情,但我现在想要如何在没有看到上述警告的情况下在我的网站上获得youtube播放器.
希望你们能帮助我!
编辑:这是输出:
<div id="YTcontainer_502513c7ebc1b"> </div>
<script type="text/javascript">
//Load player api asynchronously.
var tag = document.createElement('script'); …Run Code Online (Sandbox Code Playgroud) 我正在使用播放器javascript API v3。 https://developers.google.com/youtube/js_api_reference
当我执行player.pauseVideo()时,我想在img元素中提取当前帧。
可能吗?
播放嵌入式YouTube视频时,我不希望在完成时显示效果不佳的缩略图.相反,我想拥有最后一帧的高分辨率图像.这可能吗?
要么我可以在最后一帧暂停,或者有可能创建最后一帧的高分辨率缩略图?
使用Youtube Javascript API; 有没有办法让单击"播放"按钮时全屏播放视频?
我知道一种使视频容器全屏的方法,但这仅适用于最新版本的Firefox和Chrome.
如果没有任何方法可以通过Youtube Javascript API执行此操作,您是否知道跨浏览器的方式我可以在点击播放时全屏显示YouTube视频?
这是在最新版本的Firefox和Chrome浏览器点击播放时全屏播放视频的方法:
function onPlayerStateChange(event) {
var player = document.getElementById("MSJbUEj7U7M");
if (event.data != YT.PlayerState.BUFFERING && event.data != YT.PlayerState.CUED && event.data != YT.PlayerState.PLAYING)
return -1;
if (player.requestFullScreen) {
console.log("1()");
player.requestFullScreen();
}
else if (player.mozRequestFullScreen) {
console.log("2()");
player.mozRequestFullScreen();
}
else if (player.webkitRequestFullScreen) {
console.log("3()");
player.webkitRequestFullScreen();
}
}
function loadYouTubeVideo(uid) {
setTimeout( function() {
var id = uid;
var instPlayer = new YT.Player(id, {
height: '480',
width: '853',
enablejsapi: 1,
suggestedQuality: 'highres',
videoId: uid,
events: …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
是否可以在Android的React Native应用程序中使用Youtube Data API?
我想使用YouTube网站数据API来检索自己上传的频道...
youtube-api youtube-javascript-api youtube-data-api react-native
youtube-api ×8
youtube ×5
javascript ×4
html ×2
jquery ×2
callback ×1
iframe ×1
ios ×1
objective-c ×1
react-native ×1
thumbnails ×1
uiwebview ×1