使用外部視訊的 AMP
概覽
加速行動網頁是一個 Google 專案,旨在讓「在裝置和分銷平台之間建立一致的快速、美觀和高效能的網站和廣告」。您可以在 AMP 中使用 Brightcove 播放器,因為該項目包含一個amp-brightcove
組件,允許發布商將布萊特灣播放器嵌入 AMP HTML 文檔中。本示例使用了一個自定義插件,該插件接受通過以下網址傳遞給它的外部(非視頻雲)視頻的URL:amp-brightcove
使用自定義組件data-param-video-url
屬性。
範例
以下是一個範例 AMP HTML 頁面,其中包括一個布萊特灣播放器。播放器正常運作,所以 HTML 是這個示例的有趣部分。本文件稍後會檢查 HTML 程式碼。
看筆AMP-Brightcove播放器-外部視頻通過Brightcove學習服務( @ rcrooks1969) 上密碼筆。
來自 AMP 的資源
AMP 項目開發了一個特殊的amp-brightcove
組件,顯示布萊特灣播放器。該組件詳細說明在安培亮口文件中。
AMP 提供了一個示例amp-brightcove
實現,詳細信息在以下文檔中:
- amp-brightcove
- 逐個範例
- <a href="https://playground.amp.dev/?url=https://amp.dev/documentation/examples/components/amp-brightcove/>AMP 遊樂場</a></li> </ul > </section> <section class="bcls-section">
播放程式組態
Brightcove提供了一個插件來增強Brightcove Player的AMP使用。該插件增加了對AMP視頻接口API的支持,該API啟用了一些高級功能:
- 與擴充分析整合:允許根據 AMP 頁面網域追蹤第三方分析的檢視次數。
- 與安培綁定集成:播放可由 AMP 頁面中的其他元素控制。
沒有插件的播放器仍可以在AMP中工作,但沒有該功能。
外掛程式安裝
與所有 Brightcove 播放器插件一樣,您需要插件的名稱和 URL 到插件的 JavaScript,這是這裡提供的(這個插件的使用不需要 CSS 文件):
外掛程式名稱
ampSupport
網址
//players.brightcove.net/videojs-amp-support/1/videojs-amp-support.js
HTML頁面代碼檢查
下面顯示了上述CodePen示例的HTML頁面代碼(下一節將詳細介紹插件代碼)。代碼的完整解釋由 AMP 在鏈接到上面的文檔中提供。在下面的列表中有一些需要注意的技巧/陷阱:
- 第十四行:您可以新增單一
style
標籤,但必須包含amp-custom
屬性。 - 第26行:不要美化代碼。樣板 CSS 是需要由 AMP 提供。
- 第 42 行:外部視頻的URL在此處傳遞。請記住,由於該名稱將從iframe的
src
URL,名稱為videoUrl
。 - 第 43 行:的
data-video-id
必須存在,但在使用外部視頻時未分配值。 - 第 44 行:
width
和height
屬性決定了嵌入在自適應版面中的播放器的外觀比例。
<!--
## Introduction
The `amp-brightcove` component allows embedding a Brightcove
[Video Cloud](https://www.brightcove.com/en/online-video-platform) or
[Perform](https://www.brightcove.com/en/perform) player.
-->
<!-- -->
<!doctype html>
<html ⚡>
<head>
<meta charset="utf-8">
<title>amp-brightcove</title>
<style amp-custom>
.player-container {
width: 640px;
height: 360px;
}
</style>
<script async src="https://cdn.ampproject.org/v0.js"></script>
<!-- ## Setup -->
<!-- Import the Brightcove component in the header. -->
<script async custom-element="amp-brightcove" src="https://cdn.ampproject.org/v0/amp-brightcove-0.1.js"></script>
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
<link rel="canonical" href="https://ampbyexample.com/components/amp-brightcove/">
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
</head>
<body>
<!-- ## Basic Usage -->
<!--
A responsive brightcove video. The required data is `data-account` and `data-video-id`. Other
supported parameters are `data-player-id`, `data-embed` and `data-playlist-id`.
-->
<div class="player-container">
<amp-brightcove
data-account="3676484087001"
data-player-id="ByrhJWAPf"
layout="responsive"
data-param-video-url="//solutions.brightcove.com/bcls/videos/calm-day-oregon-coast.mp4"
data-video-id
width="16" height="9">
</amp-brightcove>
</div>
</body>
</html>
插件代碼檢查
AMP運作的方式是amp-brightcove
組件創建Brightcove Player的iframe實現。iframe的網址中將是自定義屬性,如下所示:
<iframe frameborder="0" allowfullscreen="true" src="https://players.brightcove.net/3676484087001/ByrhJWAPf_default/index.html?videoUrl=%2F%2Fsolutions.brightcove.com%2Fbcls%2Fvideos%2Fcalm-day-oregon-coast.mp4"; class="i-amphtml-fill-content" kwframeid="1"></iframe>
如果您在iframe代碼中滾動,則會看到此處顯示的查詢字符串:
請注意,查詢字符串名稱為videoUrl
。另請注意,URL已被URL編碼。這兩個問題都將反映在插件代碼中,如下所示:
- 第21-38行:查找與查詢字符串關聯的值的輔助函數,該輔助函數作為參數傳遞給該函數。
- 第 7 行:檢索值
videoUrl
使用輔助函數查詢字符串。 - 第 8 行:使用JavaScript的
decodeURIComponent()
獲取視頻有效URL的方法。 - 第11-14行:使用解碼的URL並將視頻放置在播放器中。如果您要使用MP4以外的視頻格式,則您要么需要傳遞正確的
type
值,或編寫邏輯以讀取視頻的擴展名並分配正確的值。 - 第七至十九號線:當然不是必須的,但是如果您希望視頻在啟動時播放,則可以使用此代碼。
videojs.registerPlugin('ampPassVideo', function() {
var myPlayer = this,
encodedVideoQueryParam,
decodedVideoQueryParam;
// Get the query string and un-URL encode it
encodedVideoQueryParam = getQuerystring('videoUrl');
decodedVideoQueryParam = decodeURIComponent(encodedVideoQueryParam);
// Load the video into the player
myPlayer.src({
'type': 'video/mp4',
'src': decodedVideoQueryParam
});
// On loadedmetadata event, play the video
myPlayer.on('loadedmetadata', function(){
myPlayer.play();
});
/*
* usage: foo = getQuerystring("bctid", null);
* foo will be equal to value of query param bctid
* note that the default_ parameter is what you will get back
* if the key isn’t found
*/
function getQuerystring(key, default_) {
var regex, qs;
if (default_ == null) default_ = "";
key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
regex = new RegExp("[\\?&]" + key + "=([^&#]*)");
qs = regex.exec(window.location.href);
if (qs === null) {
return default_;
} else {
return qs[1];
}
}
});
您可以使用以下方式將此插件分配給播放器工作室或播放器管理API。
功能
雖然 AMP 文件中討論了一些特別重要的功能,這裡有一些特別重要的功能:
自訂參數
您可能想要將其他資訊傳遞給您的播放器,以便您的外掛程式存取。您可以通過在必須命名的amp-brightcove
元素上添加額外的屬性來完成此操作data-param-*
,其中*
是屬性的名稱。
參數被傳遞為駱駝套裝的屬性名稱附加到播放器 URL。鍵和值是 URL 編碼的。例如:
data-param-language="de"
變成&language=de
data-param-ad-vars="key:val;key2:val2"
變成&adVars=key%3Aval%3Bkey2%3Aval2
外部反向連結支援
布萊特灣播放器 v6.25.0+ 支持在 iframe 上設置任意引用。AMP 組件現在支持通過其自己的反向連結傳遞給玩家,通過添加一個referrer="EXTERNAL_REFERRER"
屬性它們的放大亮度嵌入。
外部參照者是 AMP 自己的宏-有關更多信息,請參閱 https://github.com/ampproject/amphtml/blob/19135a3aac7813a9ff263a9f863fe35aeb316582/spec/amp-var-substitutions.md#external-referrer 。
AMP 分析
AMP 文件中可使用 Amp-Analytics 元件,以追蹤任何任意分析的資料。如果發佈商希望包含視頻活動,他們現在可以這樣做。
AMP 關於 AMP 分析語法的文檔(這很麻煩)在這裡: https://www.ampproject.org/docs/reference/components/amp-analytics 。特別是視訊分析: https://github.com/ampproject/amphtml/blob/master/extensions/amp-analytics/amp-video-analytics.md 。
有一個範例可用,追蹤到 example.com ,因此您會在網路索引標籤中看到信標為錯誤: http://solutions.brightcove.com/bclifford/ampexamples/analytics.html 。
AMP 繫結
AMP 綁定是 AMP 的 API 組件之間的交互。在基本層面上,它允許您擁有播放器外部的東西來控制播放。例如,以下代碼將播放視頻,其中myPlayer
是個id
amp-brightcove 播放器。
<button on="tap:myPlayer.play">Play</button>
AMP 不信任視頻事件,所以你目前無法做一些更有用的事情,例如在視頻端。這裡有一個例子: http://solutions.brightcove.com/bclifford/ampexamples/bind.html 。