監控於iframe內嵌youtube影片之狀態,並能進行操作
參考文件
<script src="https://www.youtube.com/iframe_api"></script>
方式一
讓程式自行產出整塊iframe
範例:
<div id="your_iframe_id"></div>
方式二
預先設定好iframe的各種設定
範例:
<iframe width="100%" height="100%"
id="your_iframe_id"
src="https://www.youtube.com/embed/your_youtube_id?enablejsapi=1"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen
onload="onYouTubeIframeAPIReady()"></iframe>
補充說明:
1. youtube_id後一定要加入"?enablejsapi=1"允許API控制影片,否則無效
2. 鑑於安全性問題官方建議加入origin參數,並將網域設定為其參數值,排除外部入侵
3. 需加上onload="function_name()"
對應方式一:
<script>
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '360', //設定視口高度
width: '640', //設定視口寬度
更多參數請參考置頂文件
videoId: 'your_youtube_id',
events: {
'onReady': onPlayerReady, //dom ready時執行function
'onStateChange': onPlayerStateChange //影片狀態變化時執行function
}
});
}
function onPlayerReady(event) {
do something... ...
}
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING) {
do something... ...
}
}
對應方式二:
<script>
function onYouTubeIframeAPIReady() {
var video_id='your_iframe_id'
var player = new YT.Player(video_id, {
events: {
'onStateChange': function(event) {
if (event.data == YT.PlayerState.PLAYING) {
do something... ...
}
}
}
});
}
</script>
目前測試可行的方案為:
有一組youtube_id就建立一組
var video_id='your_iframe_id'
var player = new YT.Player(video_id, {
events: {
'onStateChange': function(event) {
if (event.data == YT.PlayerState.PLAYING) {
do something... ...
}
}
}
});
參考範例:
<script>
function onYouTubeIframeAPIReady() {
<?php foreach ($content->store_youtube as $key => $youtube_id) :
if ($key < 3) : ?>
var video_id<?=$key+1;?>='<?=$youtube_id;?>'
var player<?=$key+1;?> = new YT.Player(video_id<?=$key+1;?>, {
events: {
'onStateChange': function(event) {
if (event.data == YT.PlayerState.PLAYING) {
do something... ...
}
}
}
});
<?php endif; ?>
<?php endforeach; ?>
}
</script>
隊列函數
播放影片
播放列表影片
變更音量
播放器大小
播放器速度
設定播放列表行為
播放狀態
播放尺寸
檢索影片資訊
檢索影片列表資訊
增加或移除事件監聽
訪問或修改DOM節點
參數 | |
---|---|
autoplay | 指定播放器是否自動播放,預設為0,需與mute同時使用才有效 |
mute | 靜音 |
cc_load_policy | 設置是否顯示字幕 |
cc_lang_pref | 此參數用於指定播放器顯示字幕的預設語言。 參數設定參考 |
hl | 設定播放器界面語言,參數同 cc_lang_pref |
color | 指定已看過之進度條顏色,參數 white/red |
controls | 是否顯示播放器控制項,預設為1 |
disablekb | 是否支援鍵盤控制播放器,預設為0(支援) |
enablejsapi | 是否允許通過iFrame或JavaScript Player API控制播放器,預設為0 |
origin | iframe API提供之額外安全設置,且僅支援iFrame嵌入式播放器,參數值為嵌入影片的網域 |
start | 指定影片開始播放的位置,須為正整數,單位/秒。但有可能會有1~2秒的誤差範圍 |
end | 用於指定時間,從影片開頭至應該結束為止(並非以start設定的開頭開始計算) |
fs | 是否顯示全螢幕按鈕,預設為1 |
iv_load_policy | 是否顯示註釋,預設為1,不顯示為3 |
list | 與listType參數搭配確定播放器加載內容,使用此二參數則不需指定影片ID |
listType | 有效參數包含: playlist =>list將指定播放列表ID(需使用PL作為ID前綴) search =>list將指定搜索查詢 user_uploads =>list將會確認將要加載的影片所在的頻道(list指定user name) |
modestbranding | 是否顯示youtube LOGO |
loop | 設定影片是否循環播放,預設為0,配合playlist設定 |
playlist | 指定要播放的影片ID列表(以逗號為分隔) |
playsinline | 此參數控制影片於IOS上的播放器是以內嵌或是全螢幕方式播放,0為全螢幕(預設),1為 allowsInlineMediaPlayback 属性值設為 TRUE 的情况下建立的 UIWebViews 會以内嵌方式播放 |
rel | 可用參數為 0 =>推薦影片將從同一頻道選出 1 =>會顯示相關推薦影片 |
widget_referrer | 此參數用於標記嵌入播放器的網址,YouTube 數據分析會使用此參數以標記與流量來源相關的網域 |