iframeçã®APIã§ã¯ã¯ã©ã€ã¢ã³ãã®ç°å¢ã«å¿ããŠãHTML5ãŸãã¯Flashã§åçããŸãã
ãã®APIã¯ãHTML5ã®postMessageã«å¯Ÿå¿ããç°å¢ã§ããæ©èœããŸããããã£ãŠInternet Explorer 8ããåã«ã¯å¯Ÿå¿ããŸãããèŠä»¶ - iframe çµã¿èŸŒã¿ã® YouTube Player API ãªãã¡ã¬ã³ã¹ - YouTube | Google Developers
äºæããåäœäžè¯ãšãªã£ããªãã°ã倿Žå±¥æŽã§ä»æ§ã倿ŽãããŠããªãã確èªããŸãã
åçãªã¹ãã䜿çšããŠãè€æ°ã®åç»ãé£ç¶ããŠåçããŸãã
var script = document.createElement( 'script' ); script.src = "//www.youtube.com/iframe_api"; var firstScript = document.getElementsByTagName( 'script' )[ 0 ]; firstScript.parentNode.insertBefore( script , firstScript );
ãªãhttp://www.youtube.com/player_apiãçŸåšã§ã¯/iframe_apiãšãªã£ãŠããŸãããå€ãURLããµããŒããããããéãã¯ãããŸãããæ¹èšå±¥æŽ | iframe çµã¿èŸŒã¿ã® YouTube Player API ãªãã¡ã¬ã³ã¹ | YouTube IFrame API | Google Developers
APIã®JavaScriptã³ãŒããèªã¿èŸŒãŸãããšãAPIã¯onYouTubeIframeAPIReady()ãåŒã³åºããŸãããã£ãŠãã®ååã®é¢æ°ãã°ããŒãã«ã¹ã³ãŒã (Windowãªããžã§ã¯ãã®ããããã£) ãšããŠå®çŸ©ããããã§ãã¬ãŒã€ãŒã®äœæåŠçãè¡ããŸãã
var player = null;
function onYouTubeIframeAPIReady()
{
player = new YT.Player( playerContainerID, options );
}
/player_apiãšåæ§ã«ãonYouTubePlayerAPIReady()ãonYouTubeIframeAPIReady()ã«ååã倿ŽãããŠããŸãããããåŸæ¥ã®PlayerAPIâŠã䜿çšå¯èœã§ãããIframeAPIâŠã®åŸã«PlayerAPI...ãåŒã³åºãããŸãã
ãªãSWFObjectçã®é¢æ°ã®ååã¯onYouTubePlayerReady()ã§ããããã®é¢æ°ã¯onYouTubeIframeAPIReady()ã§ãã
ã³ã³ã¹ãã©ã¯ã¿ã¯æ¬¡ã®ããã«åŒæ°ããšãã
YT.Player( playerContainerID, options )
playerContainerIDã¯ãã¬ãŒã€ãŒãé 眮ããèŠçŽ ã®id屿§ã§ãoptionsã§ãã¬ãŒã€ãŒã®èšå®ãäžããŸãã
var options =
{
width: 640,
height: 390,
videoId: 'xxxxx',
playerVars: {
autoplay: 1,
controls: 0
},
events: {
onReady: onPlayerReady,
onStateChange: onPlayerStateChange
}
};
playerVarsã«ã¯ãåã蟌ã¿ãã¬ãŒã€ãŒã®ãã©ã¡ãŒã¿ãæå®ããŸãããã©ã¡ãŒã¿ - YouTube åã蟌ã¿ãã¬ãŒã€ãŒãšãã¬ãŒã€ãŒã®ãã©ã¡ãŒã¿ - YouTube | Google Developers
autoplayã®æå®ã«ããèªååçã¯ãäžéšã®ã¢ãã€ã« ãã©ãŠã¶ã§ã¯ç¡èŠãããŸããã¢ãã€ã«ã®æ³šæäºé - iframe çµã¿èŸŒã¿ã® YouTube Player API ãªãã¡ã¬ã³ã¹ - YouTube | Google Developers
YT.Playerã³ã³ã¹ãã©ã¯ã¿ã®eventsãªããžã§ã¯ãã®onReadyã§ã³ãŒã«ããã¯é¢æ°ãèšå®ããŠãããšããã¬ãŒã€ãŒäœæåŸã«ãããåŒã³åºãããŸãããã¬ãŒã€ãŒã®åæèšå®ã¯ããã§è¡ããŸãã
ãã¬ãŒã€ãŒã®å¶åŸ¡ã¯ãonReadyã€ãã³ãã«ãããã¬ãŒã€ãŒã®æºåãæŽã£ãããšã確èªããŠããè¡ããŸãã
| åé¡ | ã¡ãœãã | 説æ |
|---|---|---|
| ãã¥ãŒé¢æ° | cueVideoById | åç»ãIDã§èšå®ããåçæºåãããã |
| loadVideoById â»2 | åç»ãIDã§æå®ããåçããã | |
| cueVideoByUrl | ||
| loadVideoByUrl | ||
| åç/忢ãªã©ã®æäœ | playVideo â»2 | |
| pauseVideo | ||
| stopVideo | åçã忢ããããã®ãšãåçãªã¹ããç»é²ãããŠãããªãã°ããããã¯ãªã¢ããã | |
| seekTo | ||
| clearVideo | ||
| é³é | mute | |
| unMute | ||
| isMuted | ||
| setVolume | é³éãèšå®ãããèªããããã®ã¯0ïœ100ã®æŽæ°ãæªèšå®ã®å Žåã¯100ãèšå®ããå€ã¯ããã¬ãŒã€ãŒã®åèµ·ååŸãç¶æããã | |
| getVolume | çŸåšã®é³éãååŸããããã¥ãŒãã§ãå€ãè¿ãããã | |
| ãã¬ãŒã€ãŒã®ãµã€ãº | setSize | |
| åçé床 | getPlaybackRate | |
| setPlaybackRate | ||
| getAvailablePlaybackRates | ||
| åçç¶æ | getVideoLoadedFraction | |
| getPlayerState | ||
| getCurrentTime | ||
| åçç»è³ª | getPlaybackQuality | |
| setPlaybackQuality | ||
| getAvailableQualityLevels | ||
| åç»ã®æ å ± | åç»ã®æ
å ±ãè¿ãããã[éãµããŒã]
|
|
| getDuration | åç»ã®é·ããç§æ°ã§è¿ãããã | |
| getVideoUrl | åç»ã®YouTube.comã«ãããURLãè¿ãããã | |
| getVideoEmbedCode | åç»ã®åã蟌ã¿ã³ãŒããè¿ãããã | |
| ã€ãã³ããªã¹ã | addEventListener | |
| iframeèŠçŽ | getIframe | |
| destroy |
äžéšã®ã¢ãã€ã« ãã©ãŠã¶ã§ã¯ããã°ã©ã ã«ããåçãèš±å¯ããŠããªãããããããã®é¢æ°ã¯åäœããªãæãããããŸããã¢ãã€ã«ã®æ³šæäºé - iframe çµã¿èŸŒã¿ã® YouTube Player API ãªãã¡ã¬ã³ã¹ - YouTube | Google Developers
åŒæ°ã®äžãæ¹ã§2ã€ã®æ§æããããŸãã
player.loadVideoById(
videoId,
startSeconds,
suggestedQuality
)
ããã¯SWFObjectçã§ã®åç»ã®åçãšåãã§ãã
player.loadVideoById(
{
videoId: String,
startSeconds: Number,
endSeconds: Number,
suggestedQuality: String
} )
player.getPlayerState()getPlayerState - iframe çµã¿èŸŒã¿ã® YouTube Player API ãªãã¡ã¬ã³ã¹ | YouTube IFrame API | Google Developers
onStateChangeã§ã€ãã³ããææã§ããªãç¶æ ã§ã¯ãgetPlayerState()ã¯ã€ãã«åãå€ãè¿ããŸãã
ãã¬ãŒã€ãŒã®ç¶æ ã衚ãå€ã¯ãäžè¡šã®å®æ°ã«ããå®çŸ©ãããŠããŸãã
| å€ | 宿° | æå³ |
|---|---|---|
| -1 | YT.PlayerState.UNSTARTED | æªéå§ (unstarted) |
| 0 | YT.PlayerState.ENDED | çµäº (ended) |
| 1 | YT.PlayerState.PLAYING | åçäž (playing) |
| 2 | YT.PlayerState.PAUSED | äžæåæ¢äž (paused) |
| 3 | YT.PlayerState.BUFFERING | ãããã¡ãªã³ã°äž (buffering) |
| 5 | YT.PlayerState.CUED | é åºãæžã¿ (videocued) |
player.setPlaybackRate( suggestedRate: Number )setPlaybackRate - iframe çµã¿èŸŒã¿ã® YouTube Player API ãªãã¡ã¬ã³ã¹ | YouTube IFrame API | Google Developers
åçé床ã¯åçäžã®åç»ã«ã®ã¿é©çšãããåç»ã倿Žããããšé床ã¯1ã«ãªã»ãããããŸãã

| åé¡ | ã¡ãœãã | 説æ |
|---|---|---|
| ãã¥ãŒé¢æ° | cuePlaylist | åçãªã¹ããèšå®ããåçæºåãããã |
| loadPlaylist | åçãªã¹ããèšå®ããåçããã | |
| åçãªã©ã®æäœ | nextVideo | åçãªã¹ãã®ã次ã®åç»ãåçããã |
| previousVideo | åçãªã¹ãã®ãåã®åç»ãåçããã | |
| playVideoAt | åçãªã¹ããããæå®ã€ã³ããã¯ã¹ã®åç»ãåçãããåçããããšãããåç»ã¯ãååã®çµäºäœçœ®ããåéããããæå®ããã€ã³ããã¯ã¹ã¯ããŒãããå§ãŸãã | |
| åçæ¹æ³ | setLoop | åçãªã¹ããããè¿ãåçãããã€ãŸãã«ãŒãããã |
| setShuffle | åçãªã¹ãã®åç»ãã·ã£ããã«ããã | |
| åçãªã¹ãã®æ å ± | getPlaylist | åçãªã¹ãã®åç»IDããé åã§ååŸããã |
| getPlaylistIndex | çŸåšåçããŠããåç»ã®ãåçãªã¹ãã§ã®ã€ã³ããã¯ã¹ãååŸããã |
åçãªã¹ããç·šéããæ©èœã¯æäŸãããŠããªãããããã®å¿ èŠããããšãã«ã¯cuePlaylistãŸãã¯loadPlaylistã§æ°ãã«äœæããŸãã
Flashé察å¿ã®Android 2.2ã§åçãªã¹ãã䜿çšãããšãåçã®åæ¢ãå°é£ã«ãªããŸããããã¯åçæã«ãã«ã¹ã¯ãªãŒã³ã«ãªããæ»ããã¿ã³ã§åçã忢ãããŠããªã¹ãã®æ¬¡ã®é ç®ã®åçãèªåã§å§ãŸã£ãŠããŸãããã§ãããã®ããåçã忢ãããã«ã¯æ¬¡ã®é ç®ã®åçãå§ãŸãåã«ãçŽ æ©ãããäžåºŠæ»ããã¿ã³ãæŒããã°ãªããŸããã
åçãªã¹ãã¯ã¡ãœããã§èšå®ãã以å€ã«ããæ¬¡ã®ããã«YT.Playerãªããžã§ã¯ãã®äœææã«åŒæ°ã®playerVars.playlistã§æå®ããæ¹æ³ããããŸãã
new YT.Player( playerContainerID, {
playerVars: {
playlist: 'videoID1,videoID2,videoID3',
...
},
...
} );
åçãªã¹ãã«ç¡å¹ãªåç»IDãå«ãŸããŠããå Žåããã®åç»ã¯å®éã«ã¯åçãªã¹ãã«ç»é²ãããŸããã
player.cuePlaylist(
playlist, // åçãªã¹ãã«èšå®ããåç»IDã®é
å
index, // åçãªã¹ãã®ãã¡ãæåã«åçããåç»ã®ã€ã³ããã¯ã¹ // çç¥å¯èœ
startSeconds, // åçãããšãã®éå§æé [ç§] // çç¥å¯èœ
suggestedQuality // åç»ã®æšå¥šåçç»è³ª // ãããµããŒããããªã
)
ãªã¹ãã®ãã¥ãŒé¢æ° - iframe çµã¿èŸŒã¿ã® YouTube Player API ãªãã¡ã¬ã³ã¹ - YouTube | Google Developers
| ã€ãã³ããã³ãã© | ã€ãã³ãçºçã®ã¿ã€ãã³ã° |
|---|---|
| onReady | ãã¬ãŒã€ãŒã®æºåãæŽã£ããšã |
| onStateChangeâ»1 | ãã¬ãŒã€ãŒã®ç¶æ ãå€åãããšã |
| onPlaybackQualityChangeâ»1 | åçç»è³ªãå€åãããšã ãã®ã€ãã³ãã®çºççç±ã«ã€ããŠã¯ãSWFObjectçãšåæ§ã«æ³šæãå¿ èŠã§ãã |
| onPlaybackRateChange | åçé床ãå€åãããšã |
| onErrorâ»1 | ãã¬ãŒã€ãŒã§ãšã©ãŒãçºçãããšã |
| onApiChange | ã¢ãžã¥ãŒã«ãããŒããŸãã¯ã¢ã³ããŒãããããšã |
â»1 iframeã§ã¯ãªãSWFObjectçã®APIã®ã€ãã³ããšåºæ¬çã«åãã§ãããã ãã€ãã³ããã³ãã©ã«æž¡ãããåŒæ°ãç°ãªããiframeçã§ã¯ãªããžã§ã¯ããæž¡ãããŸãããã®ãªããžã§ã¯ãã¯
ã®2ã€ã®ããããã£ãæã¡ãŸãã
ã€ãã³ããææããã«ã¯ãã³ã³ã¹ãã©ã¯ã¿ã®åŒæ°ã§
var options =
{
events: {
onReady: onPlayerReady,
onStateChange: onPlayerStateChange
}
};
player = new YT.Player( 'playerId', options );
ãšããããaddEventListener()ã§
player.addEventListener( 'onReady', onPlayerReady ); player.addEventListener( 'onStateChange', onPlayerStateChange );
ã®ããã«ããŸãã
ãã¬ãŒã€ãŒã®æºåãæŽã£ããšãã«åŒã°ããŸãã
function onPlayerReady( event )
{
var player = event.target; // YT.Playerãªããžã§ã¯ã
}
Internet Explorerã§ãã®ã€ãã³ããçºçããªãå Žåã«ã¯ãAPIãèªã¿èŸŒãURLãhttps://www.youtube.com/iframe_apiãšããŸãã
ãã¬ãŒã€ãŒã®ç¶æ ãå€åãããšãã«åŒã°ããŸãã
function onPlayerStateChange( event )
{
var playerState = event.data;
}
ãã®ã€ãã³ãã¯APIã®äžå ·åã«ããçºçããªãããšããããŸãããã確å®ã«ã€ãã³ããææããã«ã¯æ§æ¥ã®SWFObjectçã䜿çšããããæ¬¡é ã®ããã«å¯ŸåŠããŸãã
ã³ã³ã¹ãã©ã¯ã¿ã®åŒæ°ã§ã¯ãªããonReadyã®ãã³ãã©å ã§addEventListener()ã«ããèšå®ããŸããããã«ããããã確å®ã«ãã³ãã©ãç»é²ã§ããŸããjavascript - YouTube iframe player API - OnStateChange not firing - Stack Overflow
var options =
{
events: {
onReady: function( event )
{
player.addEventListener( 'onStateChange', onPlayerStateChange )
}
}
};
player = new YT.Player( 'playerId', options );
éåžžã¯ç°å¢ã«å¿ããŠHTML5ãŸãã¯Flashã§åçãããŸããããããHTML5ã§åçããããã«åŒ·å¶ããŸããããããããšã§ãonStateChangeã€ãã³ããçºçããããã«ãªããŸããYouTube iFrame API 'onStateChange' not firing in Firefox - Stack Overflow
player = new YT.Player( 'playerId',
{
width: '320',
height: '240',
videoId: 'xxxxx',
playerVars: { html5: 1 },
events:
{
onReady: onPlayerReady,
onStateChange: onPlayerStateChange
}
} );
åçé床ãå€åãããšãã«åŒã°ããŸãã
function onPlayerPlaybackRateChange( event )
{
var rate = event.data;
}
ãã®ã€ãã³ãã¯ã次ã®3ã€ã®ç¶æ³ã§çºçããŸãã
function onPlayerError( event )
{
var errorCode = event.data;
}
ãšã©ãŒã³ãŒãã«ã€ããŠã¯ãSWFObjectçã«ãŸãšããŠãããŸãã
ã»ãŒãã¢ãŒããæå¹ã«ããŠããç¶æ ã§äžé©åãšèªå®ãããŠããã³ã³ãã³ããåçããããšãããšãã³ãŒã150ã®ãšã©ãŒãçºçããŸãããã®ãšããã¬ãŒã€ãŒã«ã¯ããã®åç»ã¯ã»ãŒãã¢ãŒãã§ã¯åçã§ããŸããã詳ããã¯ãã¡ããã芧ãã ããã(This video is unavailable in safety mode. Learn more.)ããšè¡šç€ºãããã»ãŒãã¢ãŒã - YouTube ãã«ãã確èªããããã«æ¡å ãããŸããYouTubeã«ãã»ãŒãã¢ãŒãã äžé©åãªåç»ããã£ã«ã¿ãªã³ã° - ITmedia ãã¥ãŒã¹ (2010/02/12)

èŠèŽå°åãå¶éãããŠããåç»ããã®å°å以å€ããåçããããšãããšãã³ãŒã150ã®ãšã©ãŒãçºçããŸãããã®ãšããã¬ãŒã€ãŒã«ã¯ããã®åç»ã¯ãå©çšããã ããŸããã(This video is not available. )ããšè¡šç€ºãããŸããå± äœããŠããå°åã§åç»ãåçã§ããªã - YouTube ãã«ã

åå¹ã®èšå®ã倿Žããã«ã¯ãgetOptions()ã§ååŸã§ããèšå®å¯èœãªã¢ãžã¥ãŒã«ã«"captions"ãå«ãŸããŠããªããã°ãªããŸããã
// çŸåšã®ãã¬ãŒã€ãŒã§ãèšå®å¯èœãªã¢ãžã¥ãŒã«ãååŸ player.getOptions(); // Array [ "playlist", "iv-module", "captions" ]
ãŸãèšå®å¯èœãªé ç®ããåæ§ã«getOptions()ã§ç¢ºèªã§ããŸãã
// æå®ã®ã¢ãžã¥ãŒã«ã§ãèšå®å¯èœãªãªãã·ã§ã³ãååŸ player.getOptions( 'captions' ); // Array [ "reload", "fontSize", "track", "tracklist", "translationLanguages", "displaySettings", "sampleSubtitle" ]
çŸåšã®èšå®å€ã¯getOption()ã§ç¢ºèªã§ããŸããååã䌌ãŠããŸãããgetOptions()ã§ã¯ãããŸããã
// æå®ã¢ãžã¥ãŒã«ã®ãªãã·ã§ã³ã®ãçŸåšã®èšå®å€ãååŸ player.getOption( 'captions', 'displaySettings' ); // Object // { // background : "#080808", // backgroundOpacity : 1, // charEdgeStyle : "uniform", // color : "#fff", // fontFamily : 4, // fontSizeIncrement : 0, // textOpacity : 1, // windowColor : "#080808", // windowOpacity : 0, // fontFamilyOption : "propSans" // }onApiChange - iframe çµã¿èŸŒã¿ã® YouTube Player API ãªãã¡ã¬ã³ã¹ - YouTube | Google Developers
åå¹ã®è²ããã©ã³ãã¯displaySettingsã§ããã©ã³ããµã€ãºã¯fontSizeãã倿Žã§ããŸãã
ããšãã°ãæåãèµ€ãããã«ã¯æ¬¡ã®ããã«ããŸãã ãã®æ¹æ³ã¯ãçŸåšã§ã¯æ©èœããŸããã
player.setOption( 'captions', 'displaySettings', { color: '#f00' } );
æåã®å€§ããã¯fontSizeã«ã-1ã0ã1ã2ã3ã®ãããããæå®ããŸãããã®å€ã®æ¢å®å€ã¯0ã§ã3ãæå€§ã§ãã
player.setOption( 'captions', 'fontSize', 3 );
åçãéå§ãããšãã¢ãžã¥ãŒã«ã®å¯Ÿå¿ç¶æ³ã確èªã§ããŸãã
| é ç® | å€ |
|---|---|
| èšå®å¯èœãªã¢ãžã¥ãŒã« | æªç¢ºèª |
| captionsã§èšå®å¯èœãªãªãã·ã§ã³ | æªç¢ºèª |
åå¹ã衚瀺ãããŠãããšãã«ä»¥äžã®å€ã倿Žãããšããã®åœ±é¿ã確èªã§ããŸãã
iframeçã®YouTubeã§ã¯ãæ¢å®ã§ã¯CSSã®z-indexã®æå®ãç¡èŠãããŸãããããæå¹ãšããã«ã¯ãiframeã®src屿§ã®ã¯ãšãªã«wmode=transparentãä»å ããŸãããããAPIããæå®ããã«ã¯ãã³ã³ã¹ãã©ã¯ã¿ã®playerVarsããããã£ã§playerVars: { wmode: 'transparent' }ã®ããã«ããŸãã
â»ãã©ãŠã¶ã«ãã£ãŠã¯ããã®ãããªé æ ®ã¯äžèŠã§ããFirefoxãChromeããã³Operaã§ã¯åé¡ãšãªããŸããã§ããã
| æ¢å® | wmode=transparent |
|---|---|
|
ãã¬ãŒã ã®åé¢ã«è¡šç€º
|
ãã¬ãŒã ã®åé¢ã«è¡šç€º
|
åçæã«ãããã«åçãéå§ããªãå Žåã¯ã端æ«ãåèµ·åããŠãã ããã(If playback doesn't begin shortly, try restarting your device.)ããšè¡šç€ºãããåçã§ããªãããšããããŸãããã®åå ã¯ããŸããŸã§ãããã¢ãã€ã«ç«¯æ«ã§èªååçããããšãããšãã«çºçããããšããããŸãããã£ãŠã¢ãã€ã«ç«¯æ«ã§ã¯èªååçããªãããã«ããã®ããè§£æ±ºæ¹æ³ã®1ã€ã§ãã
ãFailed to execute 'postMessage' on 'DOMWindow': The target origin provided ('https://www.youtube.com') does not match the recipient window's origin ('http://localhost').ã
postMessage()ã®åŒã³åºãæã«ãã¡ãã»ãŒãžã®éä¿¡å ãšçæå ãäžèŽããŠããªãã®ãåå ã§ããjavascript - Failed to execute 'postMessage' on 'DOMWindow': https://www.youtube.com !== http://localhost:9000 - Stack Overflow