开发指南

1.播放功能

1.1 DWVodVideoModel数据模型的使用

DWVodVideoModel类是SDK中媒体的数据模型,无论是播放、下载都需要通过DWPlayInfo对象来获取到此对象。获取方式详见2.集成指南。

以下是具体DWVodVideoModel中,包含的字段及含义:

1.2 播放功能集成

1.2.1 播放功能的快速集成,请详见2.集成指南

1.2.2 DWPlayerView的使用

DWPlayerView是SDK的播放视图,可以通过创建此对象,添加到需要显示的视图上,并传入数据对象即可播放。

DWPlayerView包含的属性及方法如下:

1.2.3 DWPlayerViewDelegate的使用

DWPlayerViewDelegate是DWPlayerView的代理方法,包含了一系列的播放回调,用户可根据自己的功能需求来调用。

DWPlayerViewDelegate方法及含义如下:

1.2.4 DWPlayerSkinView的使用

为了方便用户快速集成我们的SDK,SDK中提供了一套带皮肤的播放器。若此播放器不满足需求,用户可使用DWPlayerView,来高度定制化自己的播放页面。

DWPlayerSkinView包含的属性及方法如下:

注意:DWPlayerSkinView对象暂不支持修改frame的操作,view的大小完全根据传入的screenScale属性来决定的。

1.2.5 DWPlayerSkinViewDelegate的使用

DWPlayerSkinViewDelegate是DWPlayerSkinView的代理方法,包含了一些事件回调及播放状态回调。

DWPlayerSkinViewDelegate方法及含义如下:

1.3 统计功能

1.3.1 默认统计功能

此功能已在SDK内部实现,用户无需在做额外的设置即可在后台看到视频相关的统计数据。

1.3.2 自定义参数统计功能

若有自定义统计参数需求/流量统计的需求的客户,需自行进行如下设置。

下面是使用DWPlayerView / DWPlayerSkinView 播放器的具体使用方式:

对于使用DWPlayerView对象的用户,在设置播放数据或切换播放数据时,请传入customId即可。

对于使用DWPlayerSkinView对象的用户,在调用playVodViedo:方法前,设置customId属性即可。例:

1.4 视频打点功能

视频打点数据为DWVodVideoModel对象的<DWVideoMarkModel *>videomarks数组。

DWVideoMarkModel数据及含义如下:

1.5 视频问答

视频问答数据为DWVodVideoModel对象的<DWVideoQuestionModel *>questions数组。

DWVideoQuestionModel数据及含义如下:

1.6 视频字幕

视频字幕相关的数据包含三个,DWVodVideoModel对象的defaultSubtitle、subtitle、subtitle2。

具体数据及含义如下:

1.7 授权验证功能

授权验证数据为DWVodVideoModel对象的authorize。

DWVideoAuthorizeModel数据及含义如下:

1.8 广告功能

用户可以通过DWAdInfo,来获取后台投放的广告,实现广告的播放功能。

1.8.1 通过DWAdInfo,获取后台投放的广告信息

通过账号ID、视频ID、广告类型(现在支持片头广告、暂停广告两种类型),来获取DWVodAdInfoModel广告模型数据。

1.8.2 DWVodAdInfoModel广告模型数据

DWVodAdInfoModel属性及含义如下:

广告信息模型DWVodAdMaterialModel属性及含义如下:

1.9 VR视频

1.9.1 VR视频的判断

DWVodVideoModel对象中的vrmode,代表此视频是否是VR视频。

1.9.2 VR视频的播放

VR视频的使用流程如下:

1.10 GIF录制功能

SDK提供DWGIFManager对象,来完成GIF录制。

DWGIFManager的方法属性及含义如下:

1.11 访客信息收集

访客信息收集数据为DWVodVideoModel对象的visitor。

DWVideoVisitorModel数据及含义如下:

DWVideoVisitorMessageModel数据及含义如下:

1.12 课堂练习

课堂练习数据为DWVodVideoModel对象的exercises。

DWVideoExercisesModel数据及含义如下:

DWVideoExercisesQuestionModel数据及含义如下:

DWVideoExercisesQuestionAnswerModel数据及含义如下:

1.13 视频投屏

1.13.1 投屏设备的搜索

DWUPnPSearch是设备搜索类,负责搜索可投放视频的设备。

具体的属性及方法如下:

DWUPnPSearchDelegate方法如下:

1.13.2 投屏以及控制设备的事件

DWUPnPRenderer是设备控制类,可以控制设备的播放链接,开始暂停等等一些列功能。

DWUPnPRenderer的具体属性与方法如下:

DWUPnPResponseDelegate对应DWUPnPRenderer的事件回调,设置成功后会被调用。以下是具体的方法含义:

DWUPnPDevice设备类,包含了一些设备的属性。以下是属性及含义:

1.13.3 接收投屏设备的回调

DWUPnPSubscription是设备订阅类,主要负责订阅设备以及接收设备事件。

具体的方法及含义如下:

DWUPnPSubscriptionDelegate是接收到回调事件,以下是它方法的具体含义:

2.下载功能

2.1 下载功能的快速集成,请详见2.集成指南

2.2 DWDownloadSessionManager的使用

DWDownloadSessionManager是下载管理类,所有有关下载的操作,都是通过此对象来进行的。可根据自己的业务逻辑,来自行修改下载相关的设置。

以下是具体的属性及方法:

2.3 下载功能的回调

DWDownloadSessionManagerDelegate,方法说明如下:

2.4 DWDownloadModel数据模型的使用

DWDownloadModel对象对应具体的下载任务。

以下是具体DWDownloadModel中,包含的字段及含义:

以下是具体DWDownloadProgress中,包含的字段及含义:

2.5 批量下载功能

通过创建DWBatchDownloadUtility对象,来批量获取DWVodVideoModel对象,进行下载。

具体数据及相关方法如下:

3.上传功能

注意事项:通常情况下,不可对同一视频多次使用第一种初始化方式初始化上传,这样会造成大量重复视频,增加你后期管理视频的同事的工作量,且CC视频会根据你的付费套餐对每天的上传次数有不同的限制,超过最大上传次数,当天便无法上传视频。

3.1 上传功能的快速集成,请详见2.集成指南

初始化DWUploader对象,调用start方法,即可开始上传视频。

3.2 DWUploadSessionManager的使用

DWUploadSessionManager是上传管理类,所有有关上传的操作,都是通过此对象来进行的。可根据自己的业务逻辑,来自行修改上传相关的设置。

以下是具体的属性及方法:

3.3 上传功能的回调

DWUploadSessionManagerDelegate,方法说明如下:

3.4 DWUploadModel数据模型的使用

DWUploadModel对象对应具体的上传任务。

以下是具体DWUploadModel中,包含的字段及含义:

以下是具体DWUploadWaterMarkModel中,包含的字段及含义:

4.Demo的注意事项

Demo是使用SDK对接CC视频云的示例源码,Demo的设计旨在展示SDK各项功能的使用方法,Demo中的逻辑仅供参考,如果希望应用获得更好的使用体验,请根据自己的需求更改。

注意:仅可默认体验播放、下载相关的功能,若需进行上传功能的测试,请查看4.3。

4.1 默认播放列表

我们提供了一些视频数据,用户在运行demo以后,无需进行额外的设置,即可体验我们SDK的功能。

4.2 自定义播放列表

若默认播放列表不能满足需求,可通过修改网络请求或者使用本地数据的方式来修改播放列表。具体修改方式如下。

4.2.1 修改userId和APIKey

无论是通过哪种方式来修改播放列表,首先,都需要修改demo中的userId跟APIKey。请找到DWConfigurationManager.m文件,修改DWAccount_userId,DWAccount_apikey属性值即可。例:

4.2.2 网络数据获取播放列表

用户可通过修改demo中网络请求URL的方式,来修改播放列表中的数据。

4.2.3 本地数据获取播放列表

用户也可不通过网络请求,通过修改本地数据来修改播放列表。

4.3 上传功能的使用

demo中提供的默认账号并无上传功能,若需体验SDK中的上传功能,请在选择完视频之后,填写账号下的userId,以及APIKey等信息,才能使用demo中的上传功能。

5.调试与反馈

5.1 SDK错误码

以下是错误码的详细说明:

枚举code详细描述
ERROR_INFO_NOTMATCH1000视频参数错误
ERROR_VIDEO_UNAVAILABLE1001视频不可用
ERROR_VIDEO_PROCESSING1002视频处理中
ERROR_VIDEO_DELETE1003视频已删除
ERROR_VIDEO_TRANFAILURE1004视频转码失败
ERROR_REQUEST_FAILURE1005网络请求失败
ERROR_VIDEO_ANALYSIS1006PlayInfo数据解析失败
ERROR_VIDEO_UNKNOW1007未知错误
ERROR_PLAYERSKIN_VIDEOUNAVAILABLE1201视频资源不存在
ERROR_PLAYERSKIN_LOCALUNAVAILABLE1202离线资源不存在
ERROR_PLAYERSKIN_DISABLEAUTOROTATE1203禁止手动旋转
ERROR_PLAYERSKIN_BUFFEREMPTY1204暂无缓冲数据
ERROR_PLAYERSKIN_BUFFERTIMEOUT1205缓冲超时
ERROR_PLAYERSKIN_LOADTIMEOUT1206加载超时
ERROR_AFINFO_NOTMATCH1301广告参数错误
ERROR_AFINFO_NOTSERVING1302该用户未投放广告
ERROR_AFINFO_TYPENOTEXIST1303该用户无type对应类型的广告位
ERROR_AFINFO_NOTAD1304该用户type类型下无广告
ERROR_AFINFO_DATA1305数据查询异常
ERROR_AFINFO_ANALYSIS1306广告数据解析失败
ERROR_PLAYER_CREATE2000播放器创建失败
ERROR_VIDEO_PLAYERROR2001播放失败
ERROR_QUALITY_NOTEXIST2002未查找到清晰度
ERROR_LOCAL_UNAVAILABLE2003本地资源不可用
ERROR_PLAYURL_UNAVAILABLE2010播放地址不可用/不存在
ERROR_GIF_UNASSOCIATION2100GIF未关联播放器
ERROR_EXRCISES_REQUEST2302课堂练习上报失败
ERROR_DOWNLOAD_UNAVAILABLE3000网络资源不存在
ERROR_DOWNLOAD_UNAUTHORIZED3001未获得下载授权
ERROR_DOWNLOAD_UNSUPPORTM3U83002暂不支持m3u8视频格式下载
ERROR_DOWNLOAD_MORETHANMAXCOUNT3040超过下载最大并发数
ERROR_DOWNLOAD_ALREADYFAIL3050该任务已失败,请重新下载
ERROR_DOWNLOAD_MOVEFILE3077下载完成移动文件失败
ERROR_BATCHDOWNLOAD_NOTMATCH3100批量下载参数有误
ERROR_UPLOAD_NOTMATCH4000上传参数错误
ERROR_UPLOAD_NOTENOUGHSPACE4001用户剩余空间不足
ERROR_UPLOAD_SERVICEEXPIRED4002用户服务终止
ERROR_UPLOAD_PROCESSFAIL4003服务器处理错误
ERROR_UPLOAD_FREQUENTACCESS4004访问过于频繁
ERROR_UPLOAD_NOTPERMISSION4005用户服务无权限
ERROR_UPLOAD_FAIL4100上传失败
ERROR_UPLOAD_ANALYSIS4150上传数据解析失败
ERROR_UPLOAD_RECEIVE4301获取上传服务器失败
ERROR_UPLOAD_FILEDAMAGED4302上传文件已损坏

5.2 通信日志的使用

SDK提供了DWLog模块用来打印HTTP通信日志,可以在App的任意位置开启或关闭打印HTTP通信日志等功能。下面是DWLog的使用方法: