SynqSwift 0.2.2

SynqSwift 0.2.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2017年6月
SwiftSwift 版本3.0
SPM支持 SPM

Kjartan Vestvik 维护。



 
依赖项
Alamofire~> 4.4
SynqHttpLib~> 0.4
 

SynqSwift 0.2.2

SynqSwift

Build Status

这是为 iOS 编写的 SYNQ 移动 SDK,使用 Swift 3 编写。它允许您轻松地将您的移动应用程序与 SYNQ 平台和 SYNQ 视频API 集成。

示例

要运行示例项目,请克隆存储库,然后首先从 Example 目录中运行 pod install。示例项目包含一个利用 SDK 特性的应用程序,这显示了 SDK 的一些使用方式。

安装

SynqSwift 通过 CocoaPods 提供。如果您还没有安装 CocoaPods,可以使用以下命令安装它

$ gem install cocoapods

要将 SynqSwift 集成到您的 Xcode 项目中,在您的 Podfile 中指定它

pod "SynqSwift"

然后运行以下命令安装

$ pod install

如果您收到错误信息“[!] 无法找到 的规范”,尝试运行 pod repo update,然后再次运行 pod install。这应该会解决这个问题。

SynqUploader

这部分包括从照片库获取视频、导出和上传到 SYNQ 的类。SDK 使用 Alamofire 与服务器通信。它利用配置了背景会话管理器的会话来管理视频上传。这使得即使在应用程序处于前台或后台时,上传也可以继续。

导入 SynqSwift

import SynqSwift

初始化 SynqUploader 实例并将 SQVideoUploadDelegate 设置为能够处理上传结果

let uploader = SynqUploader()
uploader.delegate = self

为要上传的每个 PHAsset 创建 SQVideoUpload 对象

let aVideo = SQVideoUpload.init(asset: anAsset)

设置 SQVideoUpload 对象的上传参数

要完成这项工作,您必须做两件事。1:在 SYNQ API 中创建一个视频对象,2:从 API 中获取创建的视频对象的上传参数。

在示例项目中,SynqHttpLib pod 和示例服务器(SYNQ-Nodejs-example-server)通过“createVideoAndGetParamsWithSuccess:”函数一步完成这两个功能。

video.uploadParameters = uploadParams

将每个 SQVideoUpload 对象添加到数组中,并调用上传函数

uploader.uploadVideoArray(videos: videoArray, exportProgress:
{ progress in
    // Report export progress to UI
    self.progressView.progress = Float(progress)

}, uploadProgress: { progress in
    // We need progress between 0 and 1, so must divide percent by 100
    let progressBelowOne = progress / 100.0;

    // Report upload progress to UI
    self.progressView.progress = Float(progressBelowOne)
})

SQVideoUploadDelegate

每个上传的结果都通过 SQVideoUploadDelegate 方法报告。以下是可用的方法,以及它们的用法

func videoUploadComplete(video: SQVideoUpload)

视频上传成功。

func videoUploadFailed(video: SQVideoUpload)

上传视频时发生错误。

func allVideosUploadedSuccessfully()

所有视频均已成功上传。

播放上传的视频

本存储库中包含的示例项目包含播放您上传视频的功能。这包括一个表格视图,列出所有上传的视频。选择其中一个视频将打开一个新的视图控制器(AVPlayerViewController 实例),其中包含一个配置了以播放所选视频的视频播放器。此示例使用 HLS 输出格式作为视频播放的源。视频播放的多种来源可以在 视频对象 的“outputs”字段下找到

"outputs": {
  "hls": {
    "url": "https://multicdn.synq.fm/projects/fb/ec/fbec62099ed94d7ba7692c7353d20435/derivatives/videos/0c/19/0c19b46991ae49be994cec9f3909329a/hls/0c19b46991ae49be994cec9f3909329a_hls.m3u8",
    "state": "complete"
  },
  "mp4_360": {
    "url": "https://multicdn.synq.fm/projects/fb/ec/fbec62099ed94d7ba7692c7353d20435/derivatives/videos/0c/19/0c19b46991ae49be994cec9f3909329a/mp4_360/0c19b46991ae49be994cec9f3909329a_mp4_360.mp4",
    "state": "complete"
  },
  "mp4_720": {
    "url": "https://multicdn.synq.fm/projects/fb/ec/fbec62099ed94d7ba7692c7353d20435/derivatives/videos/0c/19/0c19b46991ae49be994cec9f3909329a/mp4_720/0c19b46991ae49be994cec9f3909329a_mp4_720.mp4",
    "state": "complete"
  },
  "mp4_1080": {
    "url": "https://multicdn.synq.fm/projects/fb/ec/fbec62099ed94d7ba7692c7353d20435/derivatives/videos/0c/19/0c19b46991ae49be994cec9f3909329a/mp4_1080/0c19b46991ae49be994cec9f3909329a_mp4_1080.mp4",
    "state": "complete"
  },
  "webm_720": {
    "url": "https://multicdn.synq.fm/projects/fb/ec/fbec62099ed94d7ba7692c7353d20435/derivatives/videos/0c/19/0c19b46991ae49be994cec9f3909329a/webm_720/0c19b46991ae49be994cec9f3909329a_webm_720.webm",
    "state": "complete"
  }
}

请注意:“url”字段仅在状态为“完成”时存在,即视频文件的转码完成后。状态可能还会是“已提交”或“正在处理”,这意味着转码尚未完成,因此没有输出 URL。

获取所需输出格式的 URL 后,通过配置 AVPlayerViewController 实例来显示视频播放器视图。

// Convert url string to URL
let videoUrlString    // the url string fetched from the video object JSON
let videoUrl = URL(string: videoUrlString)

// Configure AVPlayerViewController with an AVPlayer
let avPlayerViewController = AVPlayerViewController()
avPlayerViewController.player = AVPlayer(url: videoUrl!)

// Present the avplayer view controller
self.present(avPlayerViewController, animated: true) {
    avPlayerViewController.player?.play()
}

重要提示

要使用我们的 API,您需要有一个 API 密钥。每个 API 密钥对应一个项目,项目是视频的集合,以及与这些视频相关的设置,如 webhook。《注册》免费 API 密钥。您的应用程序永远不应直接与我们API通信,您应该有自己的服务器,并使用您的 API 密钥作为那里的密钥。服务器应在发送 http 请求到 SYNQ 之前从您的应用程序验证请求。如果您没有配置任何服务器以访问 SYNQ API,您可以使用我们的 NodeJS 示例服务器 作为入门方式。请注意,此服务器永远不应在生产环境中使用!

要求

此 SDK 需要 iOS 8 或更高版本

作者

Kjartan Vestvik,[email protected]

许可证

SynqSwift 在 MIT 许可下提供。有关更多信息,请参阅 LICENSE 文件。