유튜브 정책에 의해,
자동 재생(autoplay) 은 묵음(무음, mute) 상태에서만 가능.
기본 세팅은, 썸네일을 클릭했을 때 재생되면서 음원도 들리는 방식.
유튜브 사이트가 아니라,
내 사이트에 유튜브 영상을 embed 하면서,
화면이 열릴 때 바로 재생(play) 가 되게 하려면..
<iframe src="https://www.youtube.com/embed/영상코드?autoplay=1&mute=1" frameborder="0" allowfullscreen></iframe>
상기와 같이 iframe 을 사용하면서 autoplay=1&mute=1 이라고 세팅하면 되는데..
PC 에서는 잘 되지만, 모바일 기기에서는 작동하지 않아요.
사실은, iOS 가 들어간 모바일 기기에선 작동하고,
Android 가 들어간 모바일 기기에선 작동하지 않는거.
자, 여기서 부터가 오늘 이야기 하려는 내용.
모바일 기기(iOS 와 Android 모두)에서도 작동하게 하려면 YouTubeIframeAPI 를 사용해야 합니다.
<div id="player"></div><!-- 실제로 영상이 나올 부분 -->
<!-- 아래 코드가 실행되면 player div 위에 iframe 이 덮입혀짐 -->
<script src="http://www.youtube.com/iframe_api"></script><!-- 아래 원문에서 복잡하게 기술되었던 부분 -->
<script>
var player;
function onYouTubeIframeAPIReady(){
player = new YT.Player('player',{
width:'100%',
videoId:'영상코드',
playerVars:{'autoplay':1,'playsinline':1},
events:{ 'onReady':onPlayerReady }
});
}
function onPlayerReady(e){
e.target.mute();
e.target.playVideo();
}
</script>
원문 : developers.google.com/youtube/iframe_api_reference?hl=ko
암튼, 상기와 같이 하면 되는데.. 하나의 화면에서 여러개의 영상이 autoplay 되게 하려면..
아래와 같은 식으로 하면 됨..
<div id="player1"></div>
<div id="player2"></div>
<script>
var player1, player2;
function onYouTubeIframeAPIReady(){
player1 = new YT.Player('player1', { ..., events:{ 'onReady':onPlayerReady } });
player2 = new YT.Player('player2', { ..., events:{ 'onReady':onPlayerReady } });
}
function onPlayerReady(e){ ... }
</script>
그리고, player1 이나 player2 의 div 에 css 를 적용할 것이 아니라,
그 위에 있는 (YouTubeIframeAPI 가 설정해 주는) iframe 에 css 가 적용되는 식으로 해야 함.
'Local Oriented > HTML CSS JS' 카테고리의 다른 글
동일 사이트 내에서의 SameSite 문제 유감 (0) | 2021.06.04 |
---|---|
iOS 에서 alert 와 confirm 작동 오류..? (0) | 2021.05.07 |
자바스크립트 데이타 최적화....? (1) | 2020.10.23 |
css 와 javascript 의 문자셋 (0) | 2020.10.12 |
chartjs-plugin-datalabels 그래프 모든 라벨 동시에 표시 (1) | 2020.09.14 |