全部产品
云市场

高级播放器

更新时间:2019-03-12 14:30:31

一、概念说明

1. 高级播放器:除了具备基础播放器的所有功能外,还提供播放视频的高级能力,如视频加密、安全下载、边播边下缓存、清晰度切换等功能,建议使用阿里视频云点播和直播业务的用户使用。

2. RAM和STS:RAM和STS是阿里云提供的权限管理系统。RAM主要的作用是控制账号系统的权限。通过使用RAM可以将在主账号的权限范围内创建子用户,给不同的子用户分配不同的权限从而达到授权管理的目的。STS是一个安全凭证(Token)的管理系统,用来授予临时的访问权限,这样就可以通过STS来完成对于临时用户的访问授权。详细参考STS介绍

3. 临时AccessKeyId、AccessKeySecret和SecurityToken:开启RAM授权,并通过STS授权系统提供的OpenAPI或SDK获取的AccessKeyId、AccessKeySecret和SecurityToken,用于播放和下载请求。详见:STS SDK参考

4. playAuth(推荐):视频播放的唯一凭证,每个播放凭证都绑定了用户的身份标识,不同用户的播放凭证不能互换,否则无法正常播放视频。另外,播放凭证是有时效性的(默认100秒)。具体参数获取方法查看文档 获取播放凭证

5. 防盗链:通过判断request请求头的refer是否来源于本站的方式来决定视频是否能被播放。(在点播或CDN控制台设置referer)具体设置方法查看防盗链设置

6. 动态库:播放器SDK以动态库的方式提供链接,在iOS集成时需要注意将SDK在target-general-embedded binaries里面添加。

7.安全下载:安全下载是指将视频文件通过私钥进行二次加密,下载后在SDK内部完成视频解密,保障离线视频仅能通过唯一应用(安全下载中设定的bundleID或keystore)进行安全播放的一种下载方式。(限点播和MPS用户使用)

二、使用流程

2.1 基本使用流程

高级播放器拥除了拥有普通播放器的基本功能外,还提供了很多点播和直播的业务功能(详见:产品介绍),配合点播服务和直播服务获取视频ID或播放地址,集成高级播放器SDK框架(需集成AliyunPlayerSDK.framework和AliyunVodPlayerSDK.framework),然后调用播放器的Vid+STS或URL播放接口即可播放视频或观看直播。高级版使用流程

2.2 STS的播放流程

流程:用户App获取STS凭证 -> 服务端下发STS凭证 -> 用户上传视频并获取vid -> 服务端获取STS凭证 -> 将STS凭证下发给客户端 -> 完成视频播放。sts

注意:AppServer为用户App的服务端,需要用户使用服务端API或SDK自行开发。

2.3 PlayAuth的播放流程

流程:用户App获取上传凭证 -> 服务端下发上传凭证 -> 用户上传视频并获取vid -> 服务端获取播放凭证 -> 将播放凭证下发给客户端 -> 完成视频播放。playAuth播放

注意:AppServer为用户App的服务端,需要用户使用服务端API或SDK自行开发。

2.4 安全下载流程

在点播控制台全局设置-下载设置里面设置为安全下载->填写应用的bundleID或keystore的SHA1->生成并下载加密私钥文件->在SDK内集成并调用setEncrptyFile/setSecretImagePath设置加密私钥文件路径,加密文件获取详见文档,流程图如下:

安全下载

备注:用户使用安全下载后,必须从点播控制台下载秘钥文件并集成在SDK里面。这样下载的视频不论是否是加密流,在本地都会存储为加密视频。如果使用普通下载,则无论是否是加密流,在本地都会存储为非加密视频,可以用任意播放器观看。

三、视频教程

3.1 点播播放和安全下载

点播使用vid+sts播放和下载的用户可以参考以下点播和下载接入指南及Demo演示,视频教程演示如下:

四、SDK集成

4.1 系统支持

播放器SDK支持iOS8.0以上。

4.2 运行环境

建议使用XCode8.0以上版本进行编译。

4.3 如何导入

播放器SDK支持普通导入和Cocoapods两种导入方式,选择一种即可。

4.3.1 普通导入

  1. 需要导入AliyunPlayerSDK.frameworkAliyunVodPlayerSDK.frameworkAliyunLanguageSource.bundle到工程中。
  2. 播放器SDK_3.4.2版本以上需要添加 AliThirdparty.framework 到工程中。
动态库文件夹

动态库文件夹

  1. arm文件夹:release版本,用于应用发布。
  2. arm&simulator文件夹:debugrelease通用版本,用于模拟器和真机测试。
  3. AliyunLanguageSource.bundle 多语言库
  4. AliyunPlayerSDK.framework 基础播放器动态库
  5. AliyunVodPlayerSDK.framework :高级播放器动态库
  6. AliThirdparty.framework : ffmpeg3.3.0)等第三方库

备注:AliThirdparty.framework:播放器SDK version_3.4.2版本开始使用.

  • 打开工程,选中目标target,依次选择”General”->”Embededed Binaries”,点击”+”号,点击“Add Other…”,高级播放器需导入下载好的AliyunPlayerSDK.framework和AliyunVodPlayer.framework到项目中,并勾选copy选项。
    1. 项目目录结构,以Demo项目为例。
    20180417190625012
  1. 集成动态库

20180417190226008

  1. Build Phases目录结构

20180417190310009

  1. import

20180417190349011

三、设置Build Settings → Build Options → Enable Bitcode为YES。

备注:Bitcode参数,播放器SDK_3.4.2及以后版本都设置为YES;播放器SDK_3.4.2之前版本设置为NO,不包含3.4.2版本。

04171820007

4.3.2 Cocoapods导入

  • 添加如下语句加入你的Podfile
    1. pod 'AliyunPlayer_iOS/AliyunVodPlayerSDK'
    05
  • 执行pod install或者pod update后集成SDK到项目工程。

  • 运行项目名.xcworkspace文件打开工程

五、SDK使用

5.1 播放器初始化

在需要使用播放器SDK的Controller里面引入#import <AliyunVodPlayerSDK/AliyunVodPlayerSDK.h>viewDidLoad里面添加如下初始化方法:

  1. //创建播放器对象,可以创建多个示例
  2. AliyunVodPlayer *aliPlayer = [[AliyunVodPlayer alloc] init];
  3. //设置播放器代理
  4. aliPlayer.delegate = self;
  5. //获取播放器视图
  6. UIView *playerView = aliPlayer.playerView
  7. playerView.frame = CGRectMake(0, 0, width, height);
  8. //添加播放器视图到需要展示的界面上
  9. [self.view addSubview:playerView];

5.2 设置播放器代理事件

在给播放器设置代理的Controller里面添加以下代理,具体示例代码如下

  1. - (void)vodPlayer:(AliyunVodPlayer *)vodPlayer onEventCallback:(AliyunVodPlayerEvent)event{
  2. //这里监控播放事件回调
  3. //主要事件如下:
  4. switch (event) {
  5. case AliyunVodPlayerEventPrepareDone:
  6. //播放准备完成时触发
  7. break;
  8. case AliyunVodPlayerEventPlay:
  9. //暂停后恢复播放时触发
  10. break;
  11. case AliyunVodPlayerEventFirstFrame:
  12. //播放视频首帧显示出来时触发
  13. break;
  14. case AliyunVodPlayerEventPause:
  15. //视频暂停时触发
  16. break;
  17. case AliyunVodPlayerEventStop:
  18. //主动使用stop接口时触发
  19. break;
  20. case AliyunVodPlayerEventFinish:
  21. //视频正常播放完成时触发
  22. break;
  23. case AliyunVodPlayerEventBeginLoading:
  24. //视频开始载入时触发
  25. break;
  26. case AliyunVodPlayerEventEndLoading:
  27. //视频加载完成时触发
  28. break;
  29. case AliyunVodPlayerEventSeekDone:
  30. //视频Seek完成时触发
  31. break;
  32. default:
  33. break;
  34. }
  35. }
  36. - (void)vodPlayer:(AliyunVodPlayer *)vodPlayer playBackErrorModel:(ALPlayerVideoErrorModel *)errorModel{
  37. //播放出错时触发,通过errorModel可以查看错误码、错误信息、视频ID、视频地址和requestId。
  38. }
  39. - (void)vodPlayer:(AliyunVodPlayer*)vodPlayer willSwitchToQuality:(AliyunVodPlayerVideoQuality)quality videoDefinition:(NSString*)videoDefinition{
  40. //将要切换清晰度时触发
  41. }
  42. - (void)vodPlayer:(AliyunVodPlayer *)vodPlayer didSwitchToQuality:(AliyunVodPlayerVideoQuality)quality videoDefinition:(NSString*)videoDefinition{
  43. //清晰度切换完成后触发
  44. }
  45. - (void)vodPlayer:(AliyunVodPlayer*)vodPlayer failSwitchToQuality:(AliyunVodPlayerVideoQuality)quality videoDefinition:(NSString*)videoDefinition{
  46. //清晰度切换失败触发
  47. }
  48. - (void)onCircleStartWithVodPlayer:(AliyunVodPlayer*)vodPlayer{
  49. //开启循环播放功能,开始循环播放时接收此事件。
  50. }
  51. - (void)onTimeExpiredErrorWithVodPlayer:(AliyunVodPlayer *)vodPlayer{
  52. //播放器鉴权数据过期回调,出现过期可重新prepare新的地址或进行UI上的错误提醒。
  53. }
  54. /*
  55. *功能:播放过程中鉴权即将过期时提供的回调消息(过期前一分钟回调)
  56. *参数:videoid:过期时播放的videoId
  57. *参数:quality:过期时播放的清晰度,playauth播放方式和STS播放方式有效。
  58. *参数:videoDefinition:过期时播放的清晰度,MPS播放方式时有效。
  59. *备注:使用方法参考高级播放器-点播。
  60. */
  61. - (void)vodPlayerPlaybackAddressExpiredWithVideoId:(NSString *)videoId quality:(AliyunVodPlayerVideoQuality)quality videoDefinition:(NSString*)videoDefinition{
  62. //鉴权有效期为2小时,在这个回调里面可以提前请求新的鉴权,stop上一次播放,prepare新的地址,seek到当前位置
  63. }

5.3 准备播放

在开始播放前,播放器必须先prepare,高级播放器一共提供四种播放方式,选择一种即可,示例如下:

  1. //播放方式一:使用vid+STS方式播放(点播用户推荐使用)
  2. [self.aliPlayer prepareWithVid:vid accessKeyId:accessKeyId accessKeySecret:accessKeySecret securityToken:securityToken];
  3. //播放方式二:使用URL播放(直播用户推荐使用)
  4. NSURL *fileUrl = [NSURL fileURLWithPath:@""];//本地视频,填写文件路径
  5. NSURL *strUrl = [NSURL URLWithString:@""];//网络视频,填写网络url地址
  6. NSURL *url = strUrl;
  7. [self.aliPlayer prepareWithURL:url];
  8. //播放方式三:使用vid+playAuth方式播放(V3.2.0之前版本使用,兼容老用户)
  9. [self.aliPlayer prepareWithVid:vid playAuth:playAuth];
  10. //播放四:MPS的vid播放方式(仅限MPS用户使用)
  11. [self.aliPlayer prepareWithVid:vid accId:accessKeyId accSecret:accessKeySecret stsToken:stsToken authInfo:authInfo region:region playDomain:playDomain mtsHlsUriToken:mtsHlsUriToken];

MPS播放的参数说明详见:MPS播放说明

5.4 播放器各种控制功能

用户自行创建播放器的播放控制按钮,在按钮事件里面实现播放器控制接口。基本控制功能有播放、停止、暂停、恢复、重播、Seek,其中Seek功能仅对点播有效,直播时使用pause功能画面会停留在当前,使用resume后会进入当前直播画面。具体示例如下:

  1. //开始播放
  2. [self.aliPlayer start];
  3. //停止播放,在开始播放之后调用
  4. [self.aliPlayer stop];
  5. //暂停播放
  6. [self.aliPlayer pause];
  7. //恢复播放,在调用暂停播放之后调用
  8. [self.aliPlayer resume];
  9. //重播,播放上一次的url
  10. [self.aliPlayer replay];
  11. //跳转到指定时间点的视频画面,时间单位为秒;支持Cache内Seek
  12. [self.aliPlayer seekToTime:2.5];

5.5 清晰度切换

播放器在prepare成功之后可以设置清晰度,在清晰度切换的按钮事件中添加设置,用户可以自行开发根据网速情况选择当前清晰度,示例如下:

  1. //设置清晰度为超清
  2. self.aliPlayer.quality = AliyunVodPlayerVideoHD

5.6 播放进度和时间

播放的当前时间和播放时长在prepare成功之后可以获取。示例代码如下:

  1. //获取播放的当前时间,单位为秒
  2. NSTimeInterval currentTime = self.aliPlayer.currentTime
  3. //获取视频的总时长,单位为秒
  4. NSTimeInterval duration = self.aliPlayer.duration
  5. //计算当前进度,可以把当前进度值设置给进度条在界面上显示
  6. float progress = currentTime/duration

5.7 倍数播放

在播放器创建之后可调用倍数播放功能,在开始播放之前和之后都可以起作用,仅对点播有效。示例代码如下:

  1. //倍数播放支持0.5~2倍的设置,支持音频变速不变调
  2. self.aliPlayer.playSpeed = 1.5;

5.8 边播边下缓存功能

边播边下缓存功能是在视频被成功播放后,文件会缓存到本地,再次播放视频时会直接使用本地缓存文件,不再走网络请求。加密流视频缓存到本地进行加密处理,需要集成安全下载加密文件,详见本文5.18。

可设置下载路径、最大下载数据(单位:MB)、单一视频最大允许下载的时长(单位:秒)

  1. //设置缓存目录路径
  2. NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  3. NSString *docDir = [pathArray objectAtIndex:0];
  4. //在创建播放器类,并在调用prepare方法之前设置。比如:maxSize设置500M时缓存文件超过500M后会优先覆盖最早缓存的文件。maxDuration设置为300秒时表示超过300秒的视频不会启用缓存功能。
  5. [self.aliPlayer setPlayingCache:YES saveDir:docDir maxSize:500 maxDuration:300];

功能限制说明:1.缓存功能仅针对被完整播放的视频(seek后无效),主要用于短视频循环播放场景。2.需要在播放器prepare之前调用。

5.9 获取播放器状态

用户可以获取播放器的当前播放状态,可获取的状态有闲时、错误、准备完成、播放中、暂停中、已停止、播放完成和加载中。代码示例如下:

  1. AliyunVodPlayerState *state = self.aliPlayer.playerState;

5.10 循环播放控制

用户是否开启循环播放功能,default:NO;YES:播放器结束自动在次播放当前视频。

  1. self.aliPlayer.circlePlay = YES;

5.11 截取当前正在播放图像

获取当前播放器时间点播放图片,返回类型:UIImage。

  1. UIImage*image = [self.aliPlayer snapshot];

5.12 渲染视图角度

设置渲染视图角度,可设置为0°,90°,180°和270°,默认为0°,角度按顺时针计算。

  1. [self.aliPlayer setRenderRotate:renderRotate0];

5.13 渲染镜像

设置渲染镜像,提供水平镜像和垂直镜像设置,默认为无镜像。

  1. [self.aliPlayer setRenderMirrorMode:renderMirrorModeNone];

5.14 后台播放

参考下图设置:Target-Capabilities-Background Modes 打开,选择Audio,AirPlay and Picture in Picture选项即可。后台播放

5.15 播放器其他功能

播放器还提供了自动播放、音量控制、静音、亮度调节、显示模式设置和获取媒体信息等接口。示例代码如下:

  1. //设置自动播放,设置后调用prepare之后会自动开始播放,无需调start接口
  2. [self.aliPlayer setAutoPlay:YES];
  3. //设置播放器音量(系统音量),值为0~1.0
  4. [self.aliPlayer setVolume:0.8];
  5. //设置为静音
  6. [self.aliPlayer setMuteMode:YES];
  7. //设置亮度(系统亮度),值为0~1.0
  8. [self.aliPlayer setBrightness:0.5];
  9. //设置显示模式,可设置为fit方式填充或corp方式裁剪充满
  10. [self.aliPlayer setDisplayMode:AliyunVodPlayerDisplayModeFit];
  11. //获取媒体信息,在prepareDone的时候才可以获取,主要可获取信息有视频ID、视频标题、视频封面、视频总时长、当前视频清晰度、所有视频清晰度
  12. AliyunVodPlayerVideo *mediaInfo = [self.playerView getAliyunMediaInfo]

5.16 播放器直播时移功能

备注:参考sdk demo中time-shift 文件夹,直播时移项目。

  1. //设置时移播放地址。
  2. [self.vodPlayer prepareWithLiveTimeUrl:[NSURL URLWithString:LIVE_URL]];
  3. //设置时移地址,获取可时移段。
  4. [self.vodPlayer setLiveTimeShiftUrl:currentLive];
  5. //获取当前直播时间
  6. NSTimeInterval liveTime = self.vodPlayer.liveTime;
  7. //获取当前播放时间
  8. NSTimeInterval currentPlayTime = self.vodPlayer.currentPlayTime;
  9. //获取时移接口返回的时移数据,每60秒更新一次。
  10. ALPlayerVideoTimeShiftModel *timeShiftModel = self.vodPlayer.timeShiftModel;
  11. //seek 到播放某一时间点,单位秒
  12. [self.vodPlayer seekToLiveTime:(int)[[NSDate date] timeIntervalSince1970]];

5.17 增加referer支持

客户端发送视频播放器请求时带上referer信息。(同时支持地址和vid播放)

  1. //设置referer
  2. /*
  3. 流程:
  4. 1.控制台-防盗链-开启防盗链
  5. 2.添加黑白名单(黑名单:如果设置referer是被添加的域名,则不能访问,白名单:如果设置的referer被添加到白名单的域名才可以访问)
  6. 3.默认不选中允许空referer,如果允许空refer,则客户端不设置referer是可以访问的。如果设置了,但是错误的,则不能访问。
  7. */
  8. [self.vodPlayer setReferer:@""];

5.18 下载功能

视频云点播服务提供两种下载方式:普通下载和安全下载。普通下载即下载的视频存在本地为非加密视频可以任意传播(即使视频流是加密的,下载后也为普通视频,谨慎使用)。安全下载可确保下载的视频为加密视频,仅能通过在控制台下载加密文件时填写的bundleID或签名绑定的应用播放(需要保护视频版权的用户使用,限点播和MPS用户)。

加密文件获取参考 文档

5.18.1 获取对象并设置代理

在需要使用下载功能的Controller里面引入#import <AliyunPlayerSDK/AliyunVodPlayerSDK.h>,在viewDidLoad里面添加:

  1. //获取下载的单例对象,并设置代理
  2. [[AliyunVodDownLoadManager shareManager] setDownloadDelegate:self];

5.18.2 设置下载代理事件

根据需求在使用下载功能的Controller里面添加代理事件。

  1. -(void) onUnFinished:(NSArray<AliyunDataSource*>*)mediaInfos{
  2. //异常中断导致下载未完成,下次启动后会接收到此回调。
  3. }
  4. /*
  5. 功能:开始下载后收到回调,更新最新的playAuth。主要场景是开始多个下载时,等待下载的任务自动开始下载后,playAuth有可能已经过期了,需通过此回调更新
  6. 参数:返回当前数据
  7. 返回:使用代理方法,设置playauth来更新数据。
  8. */
  9. -(NSString*)onGetPlayAuth:(NSString*)vid format:(NSString*)format quality:(AliyunVodPlayerVideoQuality)quality;
  10. /*
  11. 功能:开始下载后收到回调,更新最新的stsData。主要场景是开始多个下载时,等待下载的任务自动开始下载后,stsData有可能已经过期了,需通过此回调更新
  12. 参数:返回当前数据
  13. 返回:使用代理方法,设置AliyunStsData来更新数据。
  14. */
  15. - (AliyunStsData*)onGetAliyunStsData:(NSString *)videoID
  16. format:(NSString*)format
  17. quality:(AliyunVodPlayerVideoQuality)quality;
  18. /*
  19. 功能:开始下载后收到回调,更新最新的MtsData。主要场景是开始多个下载时,等待下载的任务自动开始下载后,MtsData有可能已经过期了,需通过此回调更新
  20. 参数:返回当前数据
  21. 返回:使用代理方法,设置AliyunMtsData来更新数据。
  22. */
  23. - (AliyunMtsData*)onGetAliyunMtsData:(NSString *)videoID
  24. format:(NSString*)format
  25. quality:(NSString *)quality;
  26. -(void) onPrepare:(NSArray<AliyunDownloadMediaInfo*>*)mediaInfos{
  27. //准备下载时回调
  28. }
  29. -(void) onStart:(AliyunDownloadMediaInfo*)mediaInfo{
  30. //开始下载时回调
  31. }
  32. -(void) onProgress:(AliyunDownloadMediaInfo*)mediaInfo{
  33. //下载过程中回调下载进度,通过mediaInfo.downloadProgress获取进度
  34. }
  35. -(void) onStop:(AliyunDownloadMediaInfo*)mediaInfo{
  36. //使用stop结束下载时回调
  37. }
  38. -(void) onCompletion:(AliyunDownloadMediaInfo*)mediaInfo{
  39. //下载完成时回调
  40. }
  41. -(void)onError:(AliyunDownloadMediaInfo*)mediaInfo code:(int)code msg:(NSString *)msg{
  42. //错误回调,错误码和错误信息详见接口文档中的错误信息表
  43. }

5.18.3 设置下载路径和最大下载个数

设置下载路径后,视频下载后存放在用户设置的目录下面。

  1. //设置下载路径
  2. NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
  3. [[AliyunVodDownLoadManager shareManager] setDownLoadPath:path];
  4. //设置最大下载个数,最多允许同时开启4个下载
  5. [[AliyunVodDownLoadManager shareManager] setMaxDownloadOperationCount:3];

5.18.4 设置加密文件路径

使用安全下载的用户必须设置(在准备下载之前设置),普通下载可以不用设置。

  1. //将下载的加密文件集成到自己的项目中,确保加密文件的路径正确
  2. NSString *path = [[NSBundle mainBundle] pathForResource:@"encryptedApp" ofType:@"dat"];
  3. [[AliyunVodDownLoadManager shareManager] setEncrptyFile:path];

5.18.5 准备下载

准备下载主要作用是得到当前需要下载的视频流,如果已经知道当前下载的视频流信息,可以直接使用开始下载。

  1. AliyunDataSource* source = [[AliyunDataSource alloc] init];
  2. source.vid = vid;
  3. //临时ak数据封装在AliyunStsData对象中,需要初始化对象。
  4. source.requestMethod= AliyunVodRequestMethodStsToken;//以下参数点播使用STS方式下载的用户使用
  5. source.stsData = [[AliyunStsData alloc] init];
  6. source.stsData.accessKeyId = accessKeyId;
  7. source.stsData.accessKeySecret = accessKeySecret;
  8. source.stsData.securityToken = securityToken;
  9. //以下参数使用playAuth下载方式的用户使用
  10. //source.playAuth = playAuth;
  11. //临时ak数据封装在AliyunStsData对象中,需要初始化对象,mps下载用户使用。
  12. source.vid = mtsVid; //mps 所需的视频vid。
  13. source.mtsData = [[AliyunMtsData alloc] init];
  14. source.mtsData.accessKeyId = mtsAccessKey;
  15. source.mtsData.accessKeySecret = mtsAccessSecret;
  16. source.mtsData.securityToken = mtsStstoken;
  17. source.mtsData.authInfo = mtsAuthon;
  18. source.mtsData.region = mtsRegion;
  19. source.mtsData.mtsHlsUriToken = @"";
  20. //设置下载的清晰度
  21. source.quality = AliyunVodPlayerVideoHD;
  22. //设置下载的视频格式,根据转码后的文件格式来选择,当前返回的格式优先级为m3u8>mp4>flv
  23. source.format = @"m3u8";
  24. //监听代理onPrepare,可以获取视频清晰度、长度、大小、格式等信息(异步接口)
  25. [[AliyunVodDownLoadManager shareManager] prepareDownloadMedia:source];

5.18.6 开始下载

开始下载和准备下载是相互独立的,配置需要下载的DataSource后便可以使用开始下载功能。

  1. AliyunDataSource* source = [[AliyunDataSource alloc] init];
  2. source.vid = vid;
  3. //临时ak数据封装在AliyunStsData对象中,需要初始化对象。
  4. source.requestMethod= AliyunVodRequestMethodStsToken;//以下参数使用STS方式下载的用户使用
  5. source.stsData = [[AliyunStsData alloc] init];
  6. source.stsData.accessKeyId = accessKeyId;
  7. source.stsData.accessKeySecret = accessKeySecret;
  8. source.stsData.securityToken = securityToken;
  9. //以下方式使用playAuth下载方式的用户使用
  10. //source.playAuth = playAuth;
  11. //设置下载的清晰度
  12. source.quality = AliyunVodPlayerVideoHD;
  13. //设置下载的视频格式,根据转码后的文件格式来选择,当前返回的格式优先级为m3u8>mp4>flv
  14. source.format = @"m3u8";
  15. //监听代理onPrepare,可以获取视频清晰度、长度、大小、格式等信息(异步接口)
  16. [[AliyunVodDownLoadManager shareManager] startDownloadMedia:source];

备注:可以将多个AliyunDataSource添加到数组,使用[[AliyunVodDownLoadManager shareManager] startDownloadMedias:sources];进行多个下载。

5.18.7 停止下载

  1. //可以在开始下载的代理里面获取当前正在下载的AliyunDownloadMediaInfo(同步接口)
  2. [[AliyunVodDownLoadManager shareManager] stopDownloadMedia:info];

备注:1.可以使用[[AliyunVodDownLoadManager shareManager] stopDownloadMedias];停止所有下载。2.可以将多个AliyunDownloadMediaInfo添加到数组,使用[[AliyunVodDownLoadManager shareManager] stopDownloadMedias:infos];停止多个下载对象。

5.18.8 下载列表相关功能

  1. //获取正在下载视频资源列表(包括等待下载列表)
  2. NSArray *infos = [[AliyunVodDownLoadManager shareManager] downloadingdMedias];
  3. //获取正在下载视频资源列表(不包括等待下载列表)
  4. NSArray *currentInfos = [[AliyunVodDownLoadManager shareManager] currentDownloadingdMedias];
  5. //获取所有的视频资源列表(包括停止的,正在下载的视频列表)
  6. NSArray *allInfos = [[AliyunVodDownLoadManager shareManager] allMedias];
  7. //清除所有下载的媒体资源。
  8. [[AliyunVodDownLoadManager shareManager] clearAllMedias];
  9. //清除指定下载的媒体资源,AliyunDownloadMediaInfo可以通过onCompletion的回调获取。
  10. [[AliyunVodDownLoadManager shareManager] clearMedia:info];

备注:使用clearAllMediasclearMedia后会清除已经下载的本地视频文件。

更多请参功能和接口请参考 接口文档

六、注意事项

  1. SDK提供的是动态链接库,请参考SDK导入说明中动态库的方式添加,集成后包大小增加 4.3MB
  2. 当前SDK仅支持HLS、RTMP、HTTP FLV、mp4、mp3等流格式,支持的视频编码格式为H264,音频编码格式为AAC。建议使用MPS或点播平台转码后使用。
  3. 适配iPhone5S以上机型,低端机型在使用变速功能时可能存在性能问题。
  4. swift用户可以参考Demo中的AliyunPlayerMediaDemo-Swift这个Target。
  5. 强烈推荐使用playAuth方式播放点播视频,其相比STS方式,在易用性、安全性、灵活性等各方面都有优势,详情参考 凭证与STS方式对比
  6. 使用点播上传不转码的用户,在使用vid播放时需要配合V3.1.0之后的版本使用。
  7. 当前ffmpeg版本为V3.3。