功能介紹
視頻點播(ApsaraVideo VoD,簡稱VoD)是集視頻採集、編輯、上傳、媒體資源管理、自動化轉碼處理(窄帶高清TM)、視頻審覈分析、分發加速於一體的一站式音視頻點播解決方案。
應用場景
- 音視頻網站:無論是初創視頻服務企業,還是已擁有海量視頻資源,可定製化的點播服務幫助客戶快速搭建擁有極致觀看體驗、安全可靠的視頻點播應用。
- 短視頻:集音視頻拍攝、特效編輯、本地轉碼、高速上傳、自動化雲端轉碼、媒體資源管理、分發加速、播放於一體的完整短視頻解決方案。目前已幫助1000+APP快速實現手機短視頻功能。
直播轉點播:將直播流同步錄製爲點播視頻,用於回看。並支持媒資管理、媒體處理(轉碼及內容審覈/智能首圖等AI處理)、內容製作(雲剪輯)、CDN分發加速等一系列操作。 - 在線教育:爲在線教育客戶提供簡單易用、安全可靠的視頻點播服務。可通過控制檯/API等多種方式上傳教學視頻,強大的轉碼能力保證視頻可以快速發佈,覆蓋全網的加速節點保證學生觀看的流暢度。防盜鏈、視頻加密等版權保護方案保護教學內容不被竊取。
- 視頻生產製作:提供在線可視化剪輯平臺及豐富的OpenAPI,幫助客戶高效處理、製作視頻內容。除基礎的剪切拼接、混音、遮標、特效、合成等一系列功能外,依託雲剪輯及點播一體化服務還可實現標準化、智能化剪輯生產,大大降低視頻製作的檻,縮短製作時間,提升內容生產效率。
- 內容審覈:應用於短視頻平臺、傳媒行業審覈等場景,幫助客戶從從語音、文字、視覺等多維度精準識別視頻、封面、標題或評論的違禁內容進行AI智能審覈與人工審覈。
開通視頻點播
1、前提條件
在使用阿里雲VOD服務之前,請確保您已經註冊了阿里雲賬號並完成實名認證。
2、開通服務
產品->企業應用->視頻雲->視頻點播
選擇按使用流量計費
- 進入控制檯*
1、媒資庫
- 上傳文件
- 選擇媒資庫 > 音視頻,單擊上傳音視頻
- 在上傳音視頻頁面,您可以根據需要連續添加多個音視頻或選擇移除某個音視頻,單擊開始上傳。
- 管理資源
- 上傳完成後,資源統一在媒資庫呈現,可查看音視頻的處理狀態、視頻id、視頻地址等信息
2、存儲管理
- 選擇配置管理 > 媒資管理配置 > 存儲管理
- VOD提供存儲服務,會默認幫您分配一個存儲bucket,默認區域爲華東2(上海),無需任何配置即可進行上傳和媒體資源管理,如您對存儲區域有要求可再進行添加,目前VOD服務支持華北2(北京)和華東2(上海)兩個服務中心。
3、視頻轉碼和加密
- 轉碼即將一個音視頻文件轉換成另一個或多個不同清晰度等條件音視頻文件,以適應不同網絡帶寬、不同終端設備和不同的用戶需求,可以根據實際業務場景需求,進行轉碼模版配置
- 選擇
配置管理
>媒體處理配置
>轉碼模板組
,單擊添加轉碼模板組
在視頻轉碼模板組頁面,根據的業務需求選擇封裝格式和清晰度
在高級參數下,打開HLS加密開關使用數據加密,保護您的視頻
- 上傳視頻時使用剛剛創建的加密轉碼模板組:
- 查看轉碼後的文件:
注意:如要播放加密視頻,必須首先進行域名加速配置
4、域名管理
- 視頻相對於一般的圖文內容,文件體積更大,在傳播過程對傳輸能力的體驗要求更高,點播CDN服務可將您的資源緩存至阿里雲遍佈全球的加速節點上。當終端用戶請求訪問和獲取這些資源時,系統將就近調用CDN節點上已經緩存的資源,提高播放的速度,並提供穩定的流暢體驗,添加完成加速域名即可開啓點播加速服務。
- (1)添加域名
進入VOD控制檯,添加用於視頻分發與加速的自有域名。
選擇配置管理 > 分發加速配置 > 域名管理,單擊添加域名。
注意:請確保該域名已經備案,並擁有使用權。
- (2)CNAME解析處理
添加域名後可獲得阿里雲加速域名CNAME地址。完成CNAME配置後,即可完成域名添加操作。
注意:請根據提示信息,到您的域名解析商處完成CNAME綁定。如果使用萬網、新網或DNSPod域名。
5、視頻審覈
- 選擇審覈管理 > 視頻審覈
選擇審覈管理 > 審覈設置(可以設置先發後審,也可以設置先審後發,還可* 以設置智能審覈)
資費說明
- 阿里雲資費說明
- 後付費
- 套餐包
- 欠費說明
- 計費案例
- 如下圖更多請看 視頻點播詳細價格信息
使用Java代碼操作
一、準備工作
1、設置不轉碼
- 上傳視頻選擇設置默認“不轉碼”,以節省開發成本
- 找到子賬戶的AccessKey ID
- 創建用戶
- 注意 : 及時保存 AccessKey
- 然後點擊返回添加權限
- 給子賬戶添加授權 : AliyunVODFullAccess
閱讀文檔
- API調用示例參考 : 鏈接地址
- 服務端SDK
- SDK將API進行了進一步的封裝,使用起來更簡單方便
二、創建和初始化項目
1、創建maven項目
2、添加Maven依賴
<dependencies>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.3.3</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-vod</artifactId>
<version>2.15.2</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
3、創建測試類並初始化
三、創建測試用例
1、獲取視頻播放地址
2、編寫測試用例
/*初始化方法*/
public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
String regionId = "cn-shanghai"; // 點播服務接入區域
DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
DefaultAcsClient client = new DefaultAcsClient(profile);
return client;
}
// /*獲取播放憑證函數*/
// public static GetVideoPlayAuthResponse getVideoPlayAuth(DefaultAcsClient client) throws Exception {
// // 創建請求對象
// GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();
// request.setVideoId("視頻ID");
// // 播放憑證過期時間。取值範圍:100~3000。
// //默認值:100秒
// request.setAuthInfoTimeout(3000L); // 可選參數
// return client.getAcsResponse(request);
// }
/*測試用例*/
@Test
public void getPlayAuth() throws ClientException {
// 初始化 client 對象
// accessKeyId accessKeySecret 就是創建用戶時保存的內容
DefaultAcsClient client = initVodClient("你的accessKeyId", "你的accessKeySecret ");
GetVideoPlayAuthResponse response = new GetVideoPlayAuthResponse();
// 創建請求對象
GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();
// 上傳的成的視頻ID
request.setVideoId("視頻ID");
// 播放憑證過期時間。取值範圍:100~3000。
//默認值:100秒
request.setAuthInfoTimeout(3000L); // 可選參數
// 發送請求得到響應
GetVideoPlayAuthResponse response1 = client.getAcsResponse(request);
// 解析響應對象 [ 打印播放憑證 ]
String playAuth = response1.getPlayAuth();
System.out.println("playAuth = " + playAuth);
}
- 會得到很長一段對應的播放憑證
3、獲取視頻播放地址
/*獲取播放地址*/
@Test
public void getPlayInfo() throws ClientException {
// 初始化 client 對象
// accessKeyId accessKeySecret 就是創建用戶時保存的內容
DefaultAcsClient client = initVodClient("LTAI4G8SSDARodNy4iJ7xGd2", "zmtgqhkXKER3bcPjeXJyRWjopPrc0M");
// 創建請求對象
GetPlayInfoRequest request = new GetPlayInfoRequest();
// 獲取 [ 非加密視頻的ID ]
request.setVideoId("視頻ID");
// 發送請求得到響應
GetPlayInfoResponse response = client.getAcsResponse(request);
System.out.println(response.getPlayInfoList().get(0).getPlayURL());
}
一、視頻播放器
1、視頻播放器介紹
- 阿里雲播放器SDK(ApsaraVideo Player SDK)是阿里視頻服務的重要一環,除了支持點播和直播的基礎播放功能外,深度融合視頻雲業務,如支持視頻的加密播放、安全下載、清晰度切換、直播答題等業務場景,爲用戶提供簡單、快速、安全、穩定的視頻播放服務。
2、集成視頻播放器
- 創建aliyun-vod文件夾
- 創建index.html文件
- 引入css文件
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.2/skins/default/aliplayer-min.css" />
- 引入腳本文件並初始化視頻播放器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.2/skins/default/aliplayer-min.css" />
</head>
<body>
<div class="prism-player" id="J_prismPlayer"></div>
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.8.2/aliplayer-min.js"></script>
<script>
var player = new Aliplayer({
id: 'J_prismPlayer',
width: '100%',
autoplay: true,
// 此處的播放地址就是後臺代碼中獲取到到的播放地址
source : '獲取到的url',
},function(player){
console.log('播放器創建好了。')
});
</script>
</body>
</html>
3、播放地址播放
在Aliplayer的配置參數中添加如下屬性
//播放方式一:支持播放地址播放,此播放優先級最高,此種方式不能播放加密視頻
source : '你的視頻播放地址',
4、播放憑證播放(推薦)
- 阿里雲播放器支持通過播放憑證自動換取播放地址進行播放,接入方式更爲簡單,且安全性更高。播放憑證默認時效爲100秒(最大爲3000秒)。
- 如果憑證過期則無法獲取播放地址,需要重新獲取憑證。
//播放方式二:加密視頻和多數據源視頻的播放
vid : '視頻id',
playauth : '視頻播放授權碼',
encryptType:1, //當播放私有加密流時需要設置。
注意:播放憑證有過期時間,默認值:100秒 。取值範圍:100~3000。
設置播放憑證的有效期:在獲取播放憑證的測試用例中添加如下代碼
request.setAuthInfoTimeout(3000L);
二、功能和組件
1、視頻封面
- 配置中添加cover屬性設置
cover: 'http://liveroom-img.oss-cn-qingdao.aliyuncs.com/logo.png',
2、跑馬燈
- 引入js腳本
<!-- 阿里雲視頻播放器組件 -->
<script charset="utf-8" src="https://player.alicdn.com/aliplayer/presentation/js/aliplayercomponents.min.js"></script>
3、彈幕
- 首先定義彈幕組件的彈幕列表
/* 彈幕組件集成了 CommentCoreLibrary 框架, 更多 Api 請查看文檔 https://github.com/jabbany/CommentCoreLibrary/ */
var danmukuList = [{
"mode": 1,
"text": "哈哈",
"stime": 1000,
"size": 25,
"color": 0xffffff
}, {
"mode": 1,
"text": "前方高能",
"stime": 2000,
"size": 25,
"color": 0xff0000
}, {
"mode": 1,
"text": "靈魂歌手",
"stime": 30000,
"size": 25,
"color": 0xff0000
}, {
"mode": 1,
"text": "順手一劃",
"stime": 10000,
"size": 25,
"color": 0x00c1de
}]
- 播放器中添加配置項
components: [{
name: 'AliplayerDanmuComponent', // 彈幕組件
type: AliPlayerComponent.AliplayerDanmuComponent,
args: [danmukuList] //列表:注意需要外層的可以從數據庫中獲取[ ]
}]
4、旋轉鏡像
components: [{
name: 'RotateMirrorComponent',
type: AliPlayerComponent.RotateMirrorComponent
}]
全部前端HTML代碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.2/skins/default/aliplayer-min.css" />
</head>
<body>
<div class="prism-player" id="J_prismPlayer"></div>
<!-- 阿里雲視頻播放器組件 -->
<script charset="utf-8" src="https://player.alicdn.com/aliplayer/presentation/js/aliplayercomponents.min.js"></script>
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.8.2/aliplayer-min.js"></script>
<script>
/* 彈幕組件集成了 CommentCoreLibrary 框架, 更多 Api 請查看文檔 https://github.com/jabbany/CommentCoreLibrary/ */
var danmukuList = [{
"mode": 1,
"text": "哈哈",
"stime": 1000,
"size": 25,
"color": 0xffffff
}, {
"mode": 1,
"text": "前方高能",
"stime": 2000,
"size": 25,
"color": 0xff0000
}, {
"mode": 1,
"text": "靈魂歌手",
"stime": 30000,
"size": 25,
"color": 0xff0000
}, {
"mode": 1,
"text": "順手一劃",
"stime": 10000,
"size": 25,
"color": 0x00c1de
}]
var player = new Aliplayer({
id: 'J_prismPlayer',
width: '100%',
autoplay: true,
components: [{
name: 'BulletScreenComponent',
type: AliPlayerComponent.BulletScreenComponent,
/** Descriptions of the scrolling text component parameters: text, style, bulletPosition
* text: The scrolling text
* style: The style of the scrolling text
* bulletPosition: The position of the scrolling text. Valid values: 'top', 'bottom', and 'random'. The default is 'random'.
*/
args: ['歡迎使用阿里播放器', {fontSize: '16px', color: '#00c1de'}, 'random']
}],
components: [{
name: 'AliplayerDanmuComponent', // 彈幕組件
type: AliPlayerComponent.AliplayerDanmuComponent,
args: [danmukuList] //列表:注意需要外層的[ ]
}],
// 此處的播放地址就是後臺代碼中獲取到到的播放地址
source : 'http://yongxin.guli.shop/sv/693157-17303c05278/693157-17303c05278.mp4',
},function(player){
console.log('播放器創建好了。')
});
</script>
</body>
</html>