测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017年6月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Kjartan Vestvik 维护。
依赖项 | |
Alamofire | ~> 4.4 |
SynqHttpLib | ~> 0.4 |
这是为 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
。这应该会解决这个问题。
这部分包括从照片库获取视频、导出和上传到 SYNQ 的类。SDK 使用 Alamofire 与服务器通信。它利用配置了背景会话管理器的会话来管理视频上传。这使得即使在应用程序处于前台或后台时,上传也可以继续。
import SynqSwift
let uploader = SynqUploader()
uploader.delegate = self
let aVideo = SQVideoUpload.init(asset: anAsset)
要完成这项工作,您必须做两件事。1:在 SYNQ API 中创建一个视频对象,2:从 API 中获取创建的视频对象的上传参数。
在示例项目中,SynqHttpLib pod 和示例服务器(SYNQ-Nodejs-example-server)通过“createVideoAndGetParamsWithSuccess:”函数一步完成这两个功能。
video.uploadParameters = uploadParams
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 方法报告。以下是可用的方法,以及它们的用法
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 文件。