b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

iOS 播放器 SDK 开发者指南

电脑杂谈  发布时间:2019-08-15 13:09:39  来源:网络整理

build_播放器build_build version

使用Cocoapods接入手段相当简单,可移步Cocoapods接入手段。

或者使用Cocoapods接入手段,可跳过上面的 开发前打算 和 XCode工程配置。

从 iOS 9.0 和 OS X v10.11 开始,默认开启 App Transport Security (ATS) 功能。ATS 强制使用 HTTPS 访问 Web 服务,如果必须使用 TLS v1.2 以上版本确保通信的安全性。ATS 的详实需求请参考:

或者 app 支持 iOS 9.0 而且需要访问不满足上述要求的 Web 服务,必须在 info.plist 文件中使用 NSAppTransportSecurity 元素添加例外处理规则。NSAppTransportSecurity 的应用原理请参考:

所以 AK 鉴权所访问的服务也不满足 ATS 的需求, 需要在 info.plist 文件设置如下配置,改动 ATS 对域名 drm.media.baidubce.com 的访问行为。

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>drm.media.baidubce.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSExceptionAllowInsecureHTTPSLoads</key>
                <true/>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
                <key>NSExceptionMinimumTLSVersion</key>
                <string>TLSv1.0</string>
            </dict>
        </dict>
    </dict>

将Baidu-T5Player-SDK-iOS-x.x.x/include 目录下的头文件 CyberPlayerController.h 添加到 Xcode 工程。

请在“Build Phases->Link Binary with Libraries” 添加iOS SDK的静态链接库。

请在“Build Phases->Link Binary with Libraries” 添加下表所列的系统库

表 6 SDK 依赖的框架

框架名 说明

libbz2.tbd

压缩工具

libz.tbd

压缩工具

AudioToolbox.framework

音频处理工具

将iOS SDK的静态链接库和功能的动态链接库设置完毕,下图所示:

上面介绍怎么读取播放器 SDK 中已封装的 API 完成各项操作。

CyberPlayerController 是iOS SDK的体系API,开发者必须先创建上述的事例才能播放音视频。需要分别设置视频播映地址和百度智能云Access Key

build version_build_播放器build

以上代码展示怎么用视频播映地址 URL 和 Access Key 创建并增设 CyberPlayerController。

CyberPlayerController *cbPlayerController = [[CyberPlayerController alloc] init];
NSURL *url = [NSURL URLWithString:@”<video url>”];
cbPlayerController.contentURL = url;
NSString* msAK=@"<AccessKey>";
[cbPlayerController setAccessKey:msAK];

注意

播放器在增设播放视频地址后播放器build,需要调用 prepareToPlay 方法对视频文件进行初始化工作。

初始化完成后将发送 CyberPlayerLoadDidPreparedNotification 通知,并将 isPreparedToPlay 属性置为 YES。

初始化完成后,或者 shouldAutoplay 属性为 YES,则自动读取 play 方法进行播放;如果 shouldAutoplay 属性为 NO,则等待调用 play 或 start 方法播放。

在开始阶段,播放器会先暂停一段时间,以便于缓存一定量的集锦,用来冲销网络抖动所带给的卡顿播放器build,确保视频播映的流畅。此时间宽度对应的 property 是 cachePauseTimeInSeconds (默认值为 1.0)。这个值越大,图片抖动对视频播映的影响越小,反而延迟会下降;反之值越小,图片抖动对视频播映的影响越大,播放的延迟越小。在直播的画面下,需要按照图片状态和视频码流,为 cachePauseTimeInSeconds 设置一个合适的值,以均衡播放卡顿和直播延时的需求。带宽高的时候,建议提升缓存以增大延迟;带宽低的时候,改善缓存以改善播放流畅度。

cbPlayerController.shouldAutoplay = YES;
[cbPlayerController prepareToPlay];

此时,shouldAutoplay 属性为 YES,prepareToPlay 方法完成后将播放器自动读取 play 开始播放视频。

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(preparedDone:)
                                             name:CyberPlayerLoadDidPreparedNotification
                                           object:nil];
cbPlayerController.shouldAutoplay = NO
[cbPlayerController prepareToPlay];

同样新建 preparedDone 方法,并在该原理中读取 start 或 play 方法。

(void) preparedDone: (NSNotification*)aNotification {
    [cbPlayerController start];
}

注意

或者读取 play 方法前未读取 prepareToPlay 完成播放器对视频文件的初始化,则播放器自动读取prepareToPlay 进行视频文件的初始化工作。

读取 pause 方法暂停视频播映,读取 play 或 start 方法重新开始播放。

[cbPlayerController pause];

SDK 提供了多种改变播放位置的手段。

当 isPreparedToPlay 属性为 NO 时,为了实现改变视频播映的初始时刻,三种形式都可以接近相近作用:

当播放视频过程中读取 seekTo 或者增设 currentPlaybackTime 属性,将加剧从指定位置开始播映。

或者目前视频为图片视频,认为触发缓冲 CyberPlayerStartCachingNotification 通知。

或者能够在UI 反应缓冲进度,请 CyberPlayerGotCachePercentNotification 通知。

播放器build_build version_build

对于HLS多码流视频,在播放器完成视频格式解析、打算开始播映时,可借助 getSupportedBitrates 方法展示码率列表或借助 getSupportedResolution 方法展示分辨率列表。码率与分辩率一一对应,一般分二档(低、高,默认值为低)或三档(低、中、高,默认值为中),建议按照终端用户的应用习惯选择展示码率或分辨率。启用手动切换时,可借助 getBitrateIndex 获取目前帧数并用 selectBitrate 选用新码率。

[cbPlayerController stop];

停止播放后,将发送 CyberPlayerPlaybackDidFinishNotification 通知。

注意

stop方法为异步操作,当它前往的时候不能马上调用 prepareToPlay 播放其他视频,必须等接收到 CyberPlayerPlaybackDidFinishNotification 后才能播放。

播放器支持对M3U8视频进行下载和管理。

头文件

头文件 描述 关键资料

CyberDownloader.h

下载管理相关

downloadTaskWithURL、suspendTask、resumeTask、cancelTask、stopAllTasks、resumeUncompletedTasks接口

CyberDownloadTask.h

下载任务相关

CyberMediaItem.h

视频本地存储相关

task.item.index属性

下载管理接口

接口 描述 说明

downloadTaskWithURL

新建下载任务

指定目标视频的URL及文章,建设任务并加入下载任务队列,任务能否执行取决于当前队列中正在执行的任务个数,默认支持4个任务同样下载

build version_build_播放器build

suspendTask

暂停下载任务

与resumeTask配合使用。任务暂停后,已下载视频仍存于用户本地,任务从下载队列出队

resumeTask

恢复下载任务

与suspendTask配合使用。任务恢复后,再次步入下载任务队列,基于已下载部分断点续传

cancelTask

取消下载任务

相较于suspendTask,被取消的任务不但从任务队列出队,相应视频也从用户本地删除

stopAllTasks

批量停止下载任务

对本地视频的处理与suspendTask相似,即仍将已下载视频存于用户本地。suspendTask针对单个任务,stopAllTasks为批量操作

resumeUncompletedTasks

批量恢复下载任务

resumeTask针对单个任务,resumeUncompletedTasks为批量操作

冻结下载队列

当取消一些任务,且不能够处于等待状态的任务被调度时,可读取此原理。

删除一切下载数据

之前下载的一切视频将被消灭。调用后,该对象将不再可用。

下载及播放

读取initWithUser:delegate:完成初始化。

build_build version_播放器build

其中,user处理用户相关事件,delegate处理任务相关事件。

索引原型:

- (instancetype)initWithUser:(NSString*)user delegate:(id<CyberDownloaderDelegate>)delegate;

读取downloadTaskWithURL:title:error:创建下载任务。

索引原型:

- (CyberDownloadTask*)downloadTaskWithURL:(NSString*)url title:(NSString*)title error:(NSError**)error;

downloadTaskWithURL:title:error:其次检查error返回值,值为CyberDownloadErrorCodeOK表示视频可以下载,此时创建任务并加入下载任务队列(并未真正开始下载,队列有可用资源时,就会进一步调用taskStart启动下载);否则请依照下述错误代码表进行调试:

错误代码 描述

CyberDownloadErrorCodeAlreadyExists

视频文件早已存在且已下载完毕

CyberDownloadErrorCodeProtocolNotSupport

协议不支持

下载任务开始执行时,回调taskStart:。

索引原型:

- (void)taskStart:(CyberDownloadTask*)task;

此时也可读取暂停(suspendTask:)、恢复(resumeTask:)、取消(cancelTask:)、批量停止(stopAllTasks:)等接口对下载任务进行管理。

任务下载过程中回调task:progress:,通知任务进度。

索引原型:

- (void)task:(CyberDownloadTask*)task progress:(float)progress;

任务下载结束后,回调taskEnd:error:。如果error为空,下载任务执行成功;否则,任务执行失败。

索引原型:

- (void)taskEnd:(CyberDownloadTask*)task error:(NSError*)error;

下载成功后,将task.item.index属性,传给播放器进行本地播放。

以及,还可读取mediaItems查询本地下载完成及下载中的集锦,或读取removeMediaItem:删除指定视频。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shouji/article-119333-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...