[이윰] 유튜브 "이 동영상은 볼 수 없습니다" 해결하기
페이지 정보

짧은주소
-
https://yadolee.com/tip/1030 주소복사
평점
본문
📝 유튜브 "이 동영상은 볼 수 없습니다" 해결하기
💎증상발현 조건
- 이윰빌더 기본값 동영상 퍼가기처럼 iframe으로 보여줄 경우
- 반복 재생을 위해 위 매개변수에 loop와 playlist가 공존하는 경우
수 많은 검색에도 iframe으로 보여주기 방식으론 이 문제를 해결할 수 없었다.
누구에게나 공개된 youtube iframe_api를 이용하면 위 문제를 해결할 수 있었다.
반복재생을 이용해야 한다면 동영상 퍼가기 방식에서 youtube iframe_api 방식으로 변경해 보도록 하자.
누구에게나 공개된 youtube iframe_api를 이용하면 위 문제를 해결할 수 있었다.
반복재생을 이용해야 한다면 동영상 퍼가기 방식에서 youtube iframe_api 방식으로 변경해 보도록 하자.
그누보드5/eyoom/classes/eyoom.class.php를 열어 // 수집된 동영상 정보를 iframe source로 구현를 검색한다.
수정 전
수정 후
수정 된 소스로 유튜브 돟영상을 스크립트를 이용해 제어할 수 있게 된다.
$source = '<iframe width="'.$video['width'].'" height="'.$video['height'].'" src="http://www.youtube.com/embed/'.$video['key1'].'?wmode=opaque&autohide=1'.$vlist.'" frameborder="0" allowfullscreen></iframe>';
수정 후
$source = '<div id="hplayer"></div><script type="text/javascript">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 hplayer;function onYouTubeIframeAPIReady(){hplayer=new YT.Player("hplayer",{videoId:'"'.$video['key1'].'",width:"0",height:"0",playerVars:{playsinline:1,rel:0,showinfo:0,showsearch:0,controls:0},events:{onReady:onPlayerReady,onStateChange:onPlayerStateChange}})}function onPlayerReady(a){a.target.playVideo()}function onPlayerStateChange(b){if(b.data==YT.PlayerState.PLAYING){}else{}if(b.data==YT.PlayerState.ENDED){var a=b.target;a.seekTo(0);a.playVideo()}};</script>';
수정 된 소스로 유튜브 돟영상을 스크립트를 이용해 제어할 수 있게 된다.
위 수정된 소스를 보기 좋게 예제로 풀어 쓰면 아래와 같다.
💡유튜브 동영상을 스크립트로 제어하게 되면 좋은 점은 아래와 같다.
<div id="hplayer"></div>
<script type="text/javascript">
var tag = document.createElement('script');
tag.src = "//www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var hplayer;
function onYouTubeIframeAPIReady() {
hplayer = new YT.Player('hplayer', {
videoId: '동영상 고유 키',
width: '0',
height: '0',
playerVars : {
'playsinline' : 1,
'rel' : 0,
'showinfo' : 0,
'showsearch' : 0,
'controls' : 0,
},
events: {
'onReady': onPlayerReady, //동영상이 준비되면 발생하는 함수
'onStateChange': onPlayerStateChange //상태가 따른 함수, 재생, 정지 등
}
});
};
function onPlayerReady(event) {
// 준비된 동영상을 재생
event.target.playVideo();
}
function onPlayerStateChange(event) {
if(event.data == YT.PlayerState.PLAYING) {
//재생일 때
} else {
//정지일 때
}
//동영상이 끝나면
if (event.data == YT.PlayerState.ENDED) {
//대상 지정
var hplayer = event.target;
//처음으로 돌아가기
hplayer.seekTo(0);
//동영상을 재생
hplayer.playVideo();
}
};
</script>
🔎다중 유튜브 동영상을 제어하고자 할 경우 아래 소스를 활용하자.
<div class="youtube" data-url="'.$video['key1'].'"></div>
<script type = "text/javascript" >
var idList = [], urlList = [];
$(".youtube").each(function(i) {
$(this).attr("id", "hplayer" + i);
idList.push("hplayer" + i);
urlList.push($(this).data("url"));
});
var tag = document.createElement("script");
tag.src = "//www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName("script")[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
function onYouTubeIframeAPIReady() {
for (var i = 0; i < $(".youtube").length; i++) {
var hplayerId = idList[i];
var hplayer;
hplayer = new YT.Player(hplayerId, {
videoId: urlList[i],
width: "360",
height: "640",
playerVars: {
playsinline: 1,
rel: 0,
showinfo: 0,
showsearch: 0,
controls: 1
},
events: {
"onStateChange": onPlayerStateChange //상태가 따른 함수, 재생, 정지 등
}
});
function onPlayerStateChange(a) {
if (a.data == YT.PlayerState.ENDED ) {
var hplayer = a.target;
hplayer.seekTo(0);
hplayer.playVideo();
}
};
}
}
</script>
👉data-url가 $video['key1'] 값을 갖는 youtube 클래스명의 div를 먼저 생성하고 유튜브 iframe api를 통해 iframe으로 변경해 보여 준다.
💡유튜브 동영상을 스크립트로 제어하게 되면 좋은 점은 아래와 같다.
- 원인을 알 수 없는 유튜브 동영상의 "이 동영상은 볼 수 없습니다" 오류가 발생하지 않는다.
- 유튜브 동영상을 자동으로 플레이할 수 있다.
- 유튜브 동영상을 무한 반복해 플레이할 수 있다.
- 유튜브 동영상을 배경음으로 이용할 수 있다.
- 유튜브 동영상에 여러 개의 트랙(타임라인)이 공존하는 경우 원하는 트랙으로 이동하여 재생할 수 있다.
끌어올림|2023.02.20 15:20|횟수 1 회
추천인 3

레벨 147
경험치 3,232,342
Progress Bar 29.58%
- 가입일 : 2015-03-10 12:21:44
- 서명 : 인간에게 가장 큰 선물은
자기 자신에게 기회를 주는 것이다.
- 크리스 가드너, Chris Gardner -
- 자기소개 : There's never a shortcut to happiness.
-
[공유 자료실] Rufus 4.92025-06-19
-
[복음송] 주찬양 3집 [오 기쁘도다] 1987년2025-06-15
-
2 [Web Server Tip] 그누보드(영카트) 5.6.14+12025-06-14
-
2 [Web Server Tip] node.js를 윈도우 서버에 설치하고 peppeteer 라이브러리를 이용하여 og:image를 추출해 보자+12025-06-13
-
[공유 자료실] Rufus 4.82025-06-12
-
[좋은 생각] ’왜’ 살아야 하는지 아는 사람2025-06-09
-
[좋은 생각] 가장 중대한 실수2025-06-09
-
[좋은 생각] 결단은 되도록 안 하는 편이 좋습니다2025-06-08
-
[일일 메모장] 공감되는 말씀입니다2025-06-03
-
[일일 메모장] 그 어떤 후보도 내게 직접적인 득이 될 수 없다면 내 친지와 내 이웃에게 득이 될 것 같은 후보를 뽑으시고 여러모로 따져 보고 헤아려 보아도 그런 자질을 갖춘 이를 찾을 수 없다면 내 나라에 더 득이 되어 줄 후보를 뽑으셨으면 좋겠습니다 어쩌면 내 코가 석 자라는 말도 자유가 없다면 배 부른 소리 일 수 있습니다 어느 개념있는 배우에 대한 기사로 갈음하고 싶습니다 {글} 꼭 소중한 투표 행사하셨으면 합니다2025-06-03
-
[자유 게시판] 저 또한 소중한 하나 표를 행사하려 합니다 좋은 결과를 기대하고 싶습니다2025-06-03
-
[이슈와 관심] 29일 시청했으나 이제서야 댓글을 답니다 속이 타들어가는 느낌과 메스꺼움 그리고 온전치 않은 정신에 불편한 감정을 다스릴 수 없는 시기라 무슨 말을 피력하기가 참 어렵습니다 당분간은 이 상태일 듯 하네요 그럼에도 불구하고 뉴스타파의 노고에 박수를 보냅니다2025-06-01
-
[이슈와 관심] 미약하나마 동참했습니다2025-05-04
-
[생활 정보] 음 180원 다른 운을 기대해봐야겠네요2025-04-26
-
[생활 정보] 나라가 혼돈의 시기를 겪다 보니 봄을 만끽할 겨를 조차 느낄 수 없었네요 정보 감사합니다2025-04-07
-
[생활 정보] 새해 복 많이 받으십시오2025-01-31
댓글5
하늘구장님의 댓글
내사랑님의 댓글
랩퍼투혼님의 댓글
하늘구장님의 댓글
축하합니다. 지뢰폭탄 제거로 30경험치를 획득하였습니다.
내사랑님의 댓글
축하합니다. 첫 댓글로 4경험치를 획득하였습니다.