關(guān)于iOS播放器SDK
- 下載
-
iOS播放器SDK說明
快速開發(fā)
-
創(chuàng)建用戶
請看iOS播放器SDK說明,再次不在復(fù)述
-
sdk包添加
一定要按照下圖的導(dǎo)入方式,不然運行的時候會報這個錯誤
dyld: Library not loaded: @rpath/AliyunPlayerSDK.framework/AliyunPlayerSDK
-
用戶權(quán)限驗證
- 在項目中導(dǎo)入頭文件
#import <AliyunPlayerSDK/AliyunPlayerSDK.h>
- 用戶需要用申請得到的AccessKeyID和AccessKeySecret進行權(quán)限驗證,才能夠使用播放器舅桩。權(quán)限驗證需要通過實現(xiàn)AliVcAccessKeyProtocol協(xié)議來完成咏闪。
[AliVcMediaPlayer setAccessKeyDelegate:self];
- 權(quán)限驗證可以在播放器創(chuàng)建之前進行夜矗,且播放多個視頻只需要驗證一次即可怜珍。通過協(xié)議的getAccessKeyIDSecret接口,sdk可以獲取用戶的AccessKeyID和AccessKeySecret來完成驗證。
- 在項目中導(dǎo)入頭文件
NSString* accessKeyID = @"QxJIheGFRL926hFX";
NSString* accessKeySecret = @"hipHJKpt0TdznQG2J4D0EVSavRH7mR";
-(AliVcAccesskey*)getAccessKeyIDSecret
{
AliVcAccesskey* accessKey = [[AliVcAccesskey alloc] init];
accessKey.accessKeyId = accessKeyID;
accessKey.accessKeySecret = accessKeySecret;
return accessKey;
}
-
播放器的基本模塊及播放器的工作流程
使用SDK開發(fā)播放器時,基本的開發(fā)步驟為:
1.alloc播放器后寿谴,調(diào)用create創(chuàng)建播放器,并傳入view顯示窗口
2.注冊通知響應(yīng)函數(shù)失受。
3.調(diào)用prepareToPlay準(zhǔn)備開始播放讶泰,傳入要播放的視頻地址。
4.調(diào)用play接口進行播放拂到。
項目開發(fā)
- 播放視頻
- (void)playVideo {
if (self.playerURL == nil) return;
//1. 新建播放器
self.player = [[AliVcMediaPlayer alloc]init];
//2. 創(chuàng)建播放器,傳入顯示窗口
[self.player create:self.playView];
//3. 注冊完成通知
[self addPlayObserver];
//4.設(shè)置網(wǎng)絡(luò)超時時間
self.player.timeout = 25000;
//5.設(shè)置渲染的模式痪署,適應(yīng)全屏還是充滿全屏
self.player.scalingMode = scalingModeAspectFitWithCropping;
//傳入播放地址,初始化視頻兄旬,準(zhǔn)備播放
[self.player prepareToPlay:self.playerURL];
//開始播放
[self.player play];
}
- 注冊通知
- (void)addPlayObserver {
//成功的通知
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(OnVideoPrepared:) name:AliVcMediaPlayerLoadDidPreparedNotification object:self.player];
//注冊錯誤通知
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(OnVideoError:) name:AliVcMediaPlayerPlaybackErrorNotification object:self.player];
}
- 通知事件
- (void)OnVideoPrepared:(NSNotification *)notification {
//收到完成通知后狼犯,獲取視頻的相關(guān)信息,更新界面相關(guān)信息
self.dimIamge.hidden = YES;
}
- (void)OnVideoError:(NSNotification *)notification {
NSString* error_msg = @"未知錯誤";
AliVcMovieErrorCode error_code = self.player.errorCode;
switch (error_code) {
case ALIVC_ERR_FUNCTION_DENIED:
error_msg = @"未授權(quán)";
break;
case ALIVC_ERR_ILLEGALSTATUS:
error_msg = @"非法的播放流程";
break;
case ALIVC_ERR_INVALID_INPUTFILE:
error_msg = @"無法打開";
break;
case ALIVC_ERR_NO_INPUTFILE:
error_msg = @"無輸入文件";
break;
case ALIVC_ERR_NO_NETWORK:
error_msg = @"網(wǎng)絡(luò)連接失敗";
break;
case ALIVC_ERR_NO_SUPPORT_CODEC:
error_msg = @"不支持的視頻編碼格式";
break;
case ALIVC_ERR_NO_VIEW:
error_msg = @"無顯示窗口";
break;
case ALIVC_ERR_NO_MEMORY:
error_msg = @"內(nèi)存不足";
break;
case ALIVC_ERR_DOWNLOAD_TIMEOUT:
error_msg = @"網(wǎng)絡(luò)超時";
break;
case ALIVC_ERR_UNKOWN:
error_msg = @"未知錯誤";
break;
default:
break;
}
if(error_code > 500 || error_code == ALIVC_ERR_FUNCTION_DENIED) {
[self.player reset];
UIAlertView *alter = [[UIAlertView alloc] initWithTitle:[self.playerURL absoluteString] message:error_msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alter show];
return;
}
if(error_code == ALIVC_ERR_DOWNLOAD_TIMEOUT) {
[self.player pause];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"錯誤提示"
message:error_msg
delegate:self
cancelButtonTitle:@"等待"
otherButtonTitles:@"重新連接",nil];
[alert show];
}
}
-
停止播放
[self.player stop];