短视频 SDK iOS(快速接入)

TAVMagicUIKit 是一个高级编辑界面操作的 UI SDK,这篇将介绍如何在短时间内完成 TAVMagicUIKit 组件的接入。按这篇档叙述的接入方式,可以以快速完成接入工作,并最终完成包含完整 UI 界面的视频剪辑功能。

相关产品
短视频 SDK 产品页,含版本规格、价格与购买入口。

一、环境准备

·Xcode 9.0+。

·iOS 9.0 以上的 iPhone 或者 iPad 真机。

·项目已配置有效的开发者签名。

二、申请 License

参见 License 申请 的指引申请 License 后,从 腾讯云视立方控制台 复制 License Key 和 License URL:

三、初始化 UIKit

以下是集成 UIKit 的步骤。

四、手动集成方式

1. 下载获得 TAVMagicUIKit SDK,解压后你将得到 TAVMagicUIKit.framework(SDK) 、TAVMagicUIKit.bundle(UIKIT 界面需要的 icon 切图)。

2. 将 TAVMagicUIKit SDK 中的 TAVMagicUIKit.framework 和 TAVMagicUIKit.bundle 添加进工程目录。

3. 需要注意的是 UIKit 需要依赖 TAVMagic SDK,所以你还需要集成 TAVMagic SDK。你可以选择 CocoaPods 集成或者手动集成,具体步骤参考 TAVMagicSDK 集成文档。

五、Pod 集成方式

目前 TAVMagicUIKit 支持 Pods 渠道方式进行集成,集成 Pods 方法如下:

1. 在 Podfile 中添加如下依赖项:

pod 'TAVMagicUIKit', :podspec => "https://mediacloud-76607.gzc.vod.tencent-cloud.com/TAVMagic/iOS/Release/latest/TAVMagicUIKit.podspec"# TAVMagicUIKit依赖 TencentEffect_Edit美颜库 & TAVMagic核心SDK pod 'TencentEffect_Edit', :podspec => 'https://mediacloud-76607.gzc.vod.tencent-cloud.com/TencentEffect/iOS/edit/4.1.0.5/TencentEffect_Edit.podspec'pod 'TAVMagic',:podspec => 'https://mediacloud-76607.gzc.vod.tencent-cloud.com/TAVMagic/iOS/Release/latest/TAVMagic.podspec'

2. 在 Podfile 目录下执行 pod install 安装依赖。

六、2. 将特效素材资源拷贝到工程

如果需要使用和 Demo 一样的素材资源(贴纸、滤镜、特效、音乐、模板),可以从 TAVMagicUIKitSample 中将素材资源包 resource 拷贝拖入到 app 项目工程中。

七、3. 设置 License 鉴权

你可以根据业务需求,在相关模块的初始化代码中设置 URL 和 KEY。设置 License 后将立即触发下载。建议在应用初始化时完成设置,以避免实际使用时临时下载对性能造成影响。

//如果仅仅是为了触发下载或更新license,而不关心鉴权结果,则第4个参数传入null。[TELicenseCheck setTELicense:<#licenseUrl#> key:<#licenseKey#> completion:^(NSInteger authresult, NSString * _Nonnull errorMsg) { if (authresult == TELicenseCheckOk) { //鉴权成功 } else { //鉴权失败 }}];

八、4. TAVMagicUIKIT 组件

TAVMagicUIKit 是一套高级编辑界面的 UI 组件库,内部依赖 TAVMagic SDK。对外提供:

·TAVMagicUIKitBase:统一配置入口(初始化、资源提供者、拦截器、埋点、时长限制、控制器工厂)。

·TAVAlbumPickerController:相册选择器。

·TAVEditorPreviewController:预览/剪辑页容器。

·TAVDraftViewController:草稿箱页。

·TAVTemplateEditController:剪同款(模板)编辑页。

·TAVRecorderController:录制页。

·TAVCoverSelectorController:封面选择器。

九、初始化 UIKit

#import <TAVMagicUIKit/TAVMagicUIKitBase.h>- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 1. License 鉴权(详见「剪同款集成指引 > 快速接入 > iOS(不含 UI)」) [TELicenseCheck setTELicense:@"<#License URL#>" key:@"<#License KEY#>" completion:^(NSInteger authresult, NSString *errorMsg) { NSLog(@"authResult : %zd msg:%@", authresult, errorMsg); }]; // 2. 初始化 UIKit,内部会自动调用 [TAVMagicBase initSDK:] // assetPath 传 nil 时默认从 mainBundle 获取 LightCore.bundle NSString *assetsPath = [[NSBundle mainBundle] pathForResource:@"LightCore" ofType:@"bundle"]; BOOL ret = [TAVMagicUIKitBase initUIKit:assetsPath]; // 3. 可选配置 [TAVMagicUIKitBase setMinimumEditableDuration:3.0]; // 编辑最小时长,默认 6s [TAVMagicUIKitBase setMaximumEditableDuration:60*60]; // 编辑最大时长,默认 60*60s return ret;}

十、相册选择器

1. 弹出相册选择器:

#import <TAVMagicUIKit/TAVAlbumPickerController.h>#import <TAVMagicUIKit/TAVAlbumAuthorizer.h>#import <TAVMagicUIKit/TAVAlbumPickerFactory.h> // 申请相册权限[TAVAlbumAuthorizer checkAlbumAuthorize:^(PHAuthorizationStatus status) { // 弹出相册选择器 [self showPickerVC];}];// 弹出相册选择器- (void)showPickerVC{ TAVAlbumPickerOptions *options = [TAVAlbumPickerFactory defaultAlbumPickerOptions]; TAVAlbumPickerController *pickerController = [[TAVAlbumPickerController alloc] initWithOptions:options]; pickerController.modalPresentationStyle = UIModalPresentationFullScreen; pickerController.pickerDelegate = self; [self presentViewController:pickerController animated:YES completion:nil];}

2. 监听相册选择器回调:

#pragma mark – TAVAlbumPickerControllerDelegate- (void)albumPickerController:(TAVAlbumPickerController *)pickerController didFinishPickingAlbumAssets:(NSArray<TAVAlbumAsset*> *)albumAssets{ // 获取albumAssets资源的路径,添加进TAVMagic SDK dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ NSMutableArray *resources = [NSMutableArray array]; for (TAVAlbumAsset *mediaItem in albumAssets) { TAVAlbumResource *resource; if (mediaItem.mediaType == TAVAlbumAssetTypeVideo) { resource = [self videoResourceWithPHAsset:mediaItem.asset]; } else if (mediaItem.mediaType == TAVAlbumAssetTypeImage) { resource = [self imageResourceWithPHAsset:mediaItem.asset]; } else { } [resources addObject:resource]; } dispatch_async(dispatch_get_main_queue(), ^{ [self gotoPreviewControllerWithResource:resources]; [pickerController dismissViewControllerAnimated:YES completion:nil]; }); });}

3.自定义相册选择器界面:

相册选择器支持自定义相册展示内绝大部分元素,包含展示视频/图片类型、UI元素自定义、最大最小选取数等。可参考TAVAlbumPickerOptions和TAVAlbumPickerCustomViewOptions- (TAVAlbumPickerOptions *)albumOptionsForEditor { TAVAlbumPickerOptions *options = [TAVAlbumPickerFactory defaultAlbumPickerOptions]; options.autoDismiss = NO; options.mediaType = TAVAlbumAssetTypeAll; int minAssetCount = 1; int maxAssetCount = 9; options.minimumSelectionCount = minAssetCount; options.maximumSelectionCount = maxAssetCount; options.customViewOptions.albumAssetCollectionViewCellClass = TAVAlbumAssetCustomCollectionViewCell.class; options.customViewOptions.albumPreviewViewControlleClass = TAVAlbumCustomPreviewViewController.class; options.customViewOptions.albumAssetNavigationViewClass = TAVTemplateAlbumNavigationView.class; options.customViewOptions.albumAssetCollectionViewCellClass = TAVTemplateAlbumAssetCell.class; options.pattern = TAVAlbumPatternRepeatedSelection; options.customData = templateConfig; options.customViewOptions.albumAssetSelectorViewClass = TAVAlbumPlaceholderAssetSelectorView.class; options.assetSelectorViewTips = [NSString stringWithFormat:@"请选择%d个照片/视频", maxAssetCount]; return options;}

十一、跳转到编辑页面

#import <TAVMagicUIKit/TAVMagicUIKitBase.h>#import <TAVMagicUIKit/TAVEditorPreviewController.h>#import <TAVMagicUIKit/TAVAlbumResource.h>// 方式一:使用素材路径数组初始化NSArray<TAVAlbumResource *> *resources = ….// 从相册拿到的素材数组TAVEditorPreviewController *previewVC = [TAVMagicUIKitBase createPreviewControllerWithResources:resources];// 方式二:使用草稿初始化// TAVEditorPreviewController *previewVC = [TAVMagicUIKitBase createPreviewControllerWithDraft:draft];// 方式三:使用已有的 TAVEditor 实例初始化// TAVEditorPreviewController *previewVC = [TAVMagicUIKitBase createPreviewControllerWithEditor:editor];previewVC.nextClickCallback = ^{ // 点击「下一步」的回调,可在此处接管导出/发布流程};[self.navigationController pushViewController:previewVC animated:YES];

十二、跳转到录制页

#import <TAVMagicUIKit/TAVMagicUIKitBase.h>#import <TAVMagicUIKit/TAVRecorderController.h>#import <TAVMagicUIKit/TAVRecorderSessionDelegate.h>TAVRecorderController *recorderVC = [TAVMagicUIKitBase createRecorderController];recorderVC.sessionDelegate = self;[self.navigationController pushViewController:recorderVC animated:YES];

十三、自定义 UIKIT 主题色与切图替换

// 设置颜色TAVThemeConfig *themeConfig = [TAVCustomUIManager shareInstance].themeConfig;themeConfig.brandColor = [UIColor tvc_colorWithHexString:@"#4BEF65"];// 渐变按钮(导出 / 下一步)走品牌渐变,不配置时会降级为 brandColor 纯色themeConfig.brandGradient = [TAVGradientConfig configWithColors:@[ [UIColor tvc_colorWithHexString:@"#DCFC73"], [UIColor tvc_colorWithHexString:@"#7BF38E"], [UIColor tvc_colorWithHexString:@"#74ECEE"],]];// 注册自定义bundle,bundle内同名的切图资源会覆盖TAVMagicUIKit.bundle内原有切图[[TAVBdManager sharedInstance] registerBundle:@"customTheme"];

赞 (0)
上一篇 4天前
下一篇 4天前