문제
Youtube API (https://developers.google.com/youtube/iframe_api_reference)
를 보던중 문서에 표기되어 있는대로 프로그램을 작성했는데 아래의 함수가 작동이 되지 않는 문제가 있었다.
[정확히는 재생목록ID(playlist ID) 를 사용하면 잘 되지만 동영상ID(video IDs)를 사용하면 작동하지 않았다.]
player.cuePlaylist({listType:String,
list:String,
index:Number,
startSeconds:Number,
suggestedQuality:String}):Void
player.loadPlaylist({list:String,
listType:String,
index:Number,
startSeconds:Number,
suggestedQuality:String}):Void
인터넷을 찾아보니 다른사람들도 나와 비슷한 문제가 있는 듯 싶다.
1. http://stackoverflow.com/questions/9148227/youtube-player-api-list-with-videos
2. https://groups.google.com/forum/#!topic/youtube-api-gdata/8d0XsJwQ9dw
3. https://code.google.com/p/gdata-issues/issues/detail?id=6303
해결방법
아래와 같이 작성 시 정상적으로 동작한다.
(SyntaxHighlighter 문제로 <br/> 태그가 보이지 않는다.)
<!-- User: 1004lucifer Date: 2015. 4. 15. --> <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <div id="gangnamStyleIframe"></div> <br/><br/> <button type="button" onclick="playYoutube();">Play</button> <br/> <button type="button" onclick="pauseYoutube();">Pause</button> <br/> <button type="button" onclick="stopYoutube();">Stop</button> <br/> <button type="button" onclick="loadPlaylist();">player.loadPlaylist</button> <br/> <button type="button" onclick="loadPlaylist_playlist_id();">player.loadPlaylist - playlist ID</button> <br/> <button type="button" onclick="loadPlaylist_video_ids();">player.loadPlaylist - video IDs</button> <script type="text/javascript"> var tag = document.createElement('script'); tag.src = "http://www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var player; function onYouTubeIframeAPIReady() { player = new YT.Player('gangnamStyleIframe', { height: '315', width: '560', videoId: '9bZkp7q19f0', playerVars: { controls: '2' }, events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange } }); } function onPlayerReady(event) { console.log('onPlayerReady 실행'); } var playerState; function onPlayerStateChange(event) { playerState = event.data == YT.PlayerState.ENDED ? '종료됨' : event.data == YT.PlayerState.PLAYING ? '재생 중' : event.data == YT.PlayerState.PAUSED ? '일시중지 됨' : event.data == YT.PlayerState.BUFFERING ? '버퍼링 중' : event.data == YT.PlayerState.CUED ? '재생준비 완료됨' : event.data == -1 ? '시작되지 않음' : '예외'; console.log('onPlayerStateChange 실행: ' + playerState); } function playYoutube() { player.playVideo(); } function pauseYoutube() { player.pauseVideo(); } function stopYoutube() { player.seekTo(0, true); player.stopVideo(); } function loadPlaylist() { player.loadPlaylist(['wcLNteez3c4', 'LOsNP2D2kSA', 'rX372ZwXOEM'], 0, 0, 'large'); } function loadPlaylist_playlist_id() { player.loadPlaylist({ 'list': 'UUPW9TMt0le6orPKdDwLR93w', 'listType': 'playlist', 'index': 0, 'startSeconds': 0, 'suggestedQuality': 'small' }); } function loadPlaylist_video_ids() { player.loadPlaylist({ 'playlist': ['9HPiBJBCOq8', 'Mp4D0oHEnjc', '8y1D8KGtHfQ', 'jEEF_50sBrI'], 'listType': 'playlist', 'index': 0, 'startSeconds': 0, 'suggestedQuality': 'small' }); } </script> </body> </html>
PS.
현재상황에서의 API문서(링크) 대로 작성 시 동영상ID(video IDs) 를 실행할 수 없다.
[API문서가 잘못된건지.. API가 잘못된건지 잘 모르겠다.]
참고: http://www.cgis.biz/others/youtube/player8/
관련링크: Player API 를 활용한 유튜브 동영상 컨트롤
댓글
댓글 쓰기