SDK对选择的图片或视频素材进行分类及打分,并匹配出推荐的模板进行视频合成。
相册权限
集成剪同款(参考剪同款接入)
EOHighLightManager
// 算法识别输入图像质量,质量高更精准,开销更大 typedef NS_ENUM(NSUInteger, EOHighLightCVImageQuality) { EOHighLightCVImageQualityLow = 0, // image size: 256 EOHighLightCVImageQualityNormal = 1, // image size: 540 EOHighLightCVImageQualityHigh = 2, // image size: 1080 }; // 输入视频拆分策略,对于数量素材数量不足且有少量长视频输入case的优化策略, // 将长视频拆分为多段短视频时间片段增大高光匹配概率 typedef NS_ENUM(NSInteger, EOHighLightAssetsPolicy) { EOHighLightAssetsPolicyOrigin = 0, // 不拆分,使用原始输入素材 EOHighLightAssetsPolicySplitWithAverage = 1, // 素材不足时平均拆分 }; // 导入视频压缩配置 @interface EOHighLightImportMaterialConifg : NSObject // 默认值是 0,走内部逻辑判断 // 设置后覆盖内部条件,例如设置 2160 以 2k 视频预览不压缩,可选值目前限 0,1080,2160 @property (nonatomic, assign) int maxResolution; // 素材预处理,默认 NO // 设为 YES 开启,在匹配后进行预处理,仅将长视频中高光片段压缩,减少成片时间 @property (nonatomic, assign) BOOL preprocessEnabled; @end @interface EOHighLightManager : NSObject // 进入高光页面 + (void)toHighLight; // 模版匹配数,默认 6 + (void)setMaxMatchCount:(int)count; // 图像质量,默认 EOHighLightCVImageQualityLow + (void)setCVImageQuality:(EOHighLightCVImageQuality)quality; // 匹配拆分策略,默认 EOHighLightAssetsPolicyOrigin + (void)setAssetsPolicy:(EOHighLightAssetsPolicy)policy; // 导出配置,默认 1080P + (void)setExportConfig:(CSIFVideoExportConfig *)exportConfig; // 导入配置,默认 1080P 不预处理 + (void)setImportMaterialConfig:(EOHighLightImportMaterialConifg *)importMaterialConfig; // 清理扫描结果缓存 + (void)clearScanCacheData; @end
申请相册权限后进入高光成片
public func _showHighLightViewController() { if !self.isAuthSucceeded { self.showToast("authority is failed!,please check it.") return } EOAlbumHelper.eoCheckAlbumAuthorized { EOHighLightManager.toHighLight() } restrictedOrDenied: { [weak self] in self?.showAlert(withTitle: NSLocalizedString("eo_home_camera_album_unauth_alert_title", comment: ""), message: NSLocalizedString("eo_home_camera_album_unauth_alert_message", comment: ""), cancelTitle: NSLocalizedString("eo_home_camera_unauth_alert_cancel", comment: ""), confirmTitle: NSLocalizedString("eo_home_camera_unauth_alert_confirm", comment: ""), cancelHandler: nil, confirmHandler: { if #available(iOS 10.0, *) { UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!, options: [:]) { success in // Completion handler } } else { UIApplication.shared.openURL(URL(string: UIApplication.openSettingsURLString)!) } }) } }