全部产品
云市场

导入裁剪

更新时间:2019-07-01 11:29:06

简介

阿里云短视频SDK裁剪模块提供视频裁剪能力,可调整裁剪视频片段时长,也可对视频的帧率、码率、分辨率、视频比例做出调整。

说明:你需要在项目内新建一个AliyunVideo文件夹,所有从Demo中复制过来的源码放入你新建的AliyunVideo文件夹,以方便问题排查及后续代码更新维护。

步骤一. 拷贝SDK文件

短视频裁剪模块需要依赖两个文件。

文件名称 类型 描述
AliyunVideoSDKPro.framework 动态库 短视频SDK,依赖alivcffmpeg
alivcffmpeg.framework 动态库 ffmepg库
  • 相关文件如下图:
    undefined

步骤二. 拷贝业务代码文件

  • 拷贝下图文件到你的工程环境。
    undefined

  • 删除不必要的文件。
    undefined

步骤三. 配置pch文件

添加以下引用到后缀名.pch的文件中:

  1. #import "AlivcDefine.h"
  2. #import "AlivcMacro.h"

如果你的工程环境中没有后缀名.pch文件,请从我们提供的Demo中拷贝PrefixHeader.pch文件并添加到你的工程环境,同时.pch文件中保留以上引用。

  • 单击TARGETSBuild Settings并进行如图设置。
    WX20181020-002351@2x.png
    Prefix Header参数对应工程环境中PrefixHeader.pch文件的路径,例如$(SRCROOT)/自己的目录文件/PrefixHeader.pch

步骤四. 配置工程环境

  • 打开工程环境,选中目标targetGeneralEmbededed Binaries,添加文件,如下图:
    undefined
  • 长按command依次选中下图所示文件,单击add
    undefined undefined
  • 打开工程,首先选中目标target,然后单击GeneralLinked Frameworks And Libraries+,添加以下系统库。

    1. libz.tbd
    2. ImageIO.framework
    3. CoreMedia.framework
    4. CoreVideo.framework
    5. VideoToolBox.framework
    6. MediaPlayer.framework
    7. OpenAL.framework
    8. libc++.tbd
    9. libsqlite3.tbd
    10. libiconv.tbd


    undefined

  • 单击Build SettingLinkingOther Linker Flags, 添加$(inherited)-ObjC选项。


undefined

  • 单击Build SettingBuild Options,设置参数Enable BitcdeNOundefined

  • 编辑info.plist文件,申请相机、相册、音乐权限。

    1. * Privacy - Photo Library Additions Usage Description
    2. * Privacy - Photo Library Usage Description

    也可以在info.plist -> source code中,加入以下代码:

    1. <key>NSPhotoLibraryAddUsageDescription</key>
    2. <string></string>
    3. <key>NSPhotoLibraryUsageDescription</key>
    4. <string></string>

步骤五. 集成Pod

  • 你需要在Podfile文件内增加以下引用。

    1. pod 'MBProgressHUD', '~> 1.1.0'
    2. pod 'AlivcConan', '0.9.0' #短视频SDK依赖的数据埋点
  • 打开终端cd到你项目的Podfile目录下,执行pod install

步骤六. 裁剪功能示例代码

  • 引入头文件。

    1. #import "AliyunPhotoViewController.h"
    2. #import "AliyunIConfig.h"
  • 代理协议。

    1. @interface ViewController ()<AliyunPhotoViewControllerDelegate>
  • 书写跳转代码。

    1. //初始化信息配置裁剪相关UI信息
    2. [AliyunIConfig setConfig:[[AliyunIConfig alloc] init]];
    3. AliyunMediaConfig *mediaConfig = [AliyunMediaConfig defaultConfig];
    4. //这些参数都是可以根据自己需求设置的
    5. //最短时间
    6. mediaConfig.minDuration = 2.0;
    7. //最长时间
    8. mediaConfig.maxDuration = 10.0*60;
    9. //帧率
    10. mediaConfig.fps = 25;
    11. //关键帧间隔
    12. mediaConfig.gop = 5;
    13. //填充模式
    14. mediaConfig.cutMode = AliyunMediaCutModeScaleAspectFill;
    15. //视频选择页只显示视频
    16. mediaConfig.videoOnly = NO;
    17. //背景颜色
    18. mediaConfig.backgroundColor = [UIColor blackColor];
    19. //更多参数设置可以查看AliyunMediaConfig.h文件
    20. //初始化视频x
    21. AliyunPhotoViewController *control = [[AliyunPhotoViewController alloc]init];
    22. //设置裁剪参数
    23. [control setCutInfo:mediaConfig];
    24. control.delegate = self;
    25. #warning无法跳转的话请检查自己有没有设置UINavigationController
    26. //跳转到控制器
    27. if (self.navigationController) {
    28. [self.navigationController pushViewController:control animated:YES];
    29. }else{
    30. NSLog(@"----------------------------------------");
    31. NSLog(@"请检查自己有没有设置UINavigationController!");
    32. NSLog(@"请检查自己有没有设置UINavigationController!");
    33. NSLog(@"请检查自己有没有设置UINavigationController!");
    34. NSLog(@"----------------------------------------");
    35. }
  • 实现代理方法。

    1. -(void)cropFinished:(UIViewController *)cropViewController videoPath:(NSString *)videoPath sourcePath:(NSString *)sourcePath{
    2. NSLog(@"裁剪完成视频路径:%@",videoPath);
    3. //在这里你可以做一些短视频处理完成后的后续事件
    4. //比如返回主页
    5. [self.navigationController popToRootViewControllerAnimated:YES];
    6. }
    7. - (void)cropFinished:(UIViewController *)cropViewController mediaType:(kPhotoMediaType)type photo:(UIImage *)photo videoPath:(NSString *)videoPath{
    8. NSLog(@"裁剪完成回调");
    9. //在这里你可以做一些短视频处理完成后的后续事件
    10. //比如返回主页
    11. [self.navigationController popToRootViewControllerAnimated:YES];
    12. }
    13. - (void)backBtnClick:(UIViewController *)vc {
    14. NSLog(@"单击取消按钮");
    15. [self.navigationController popToRootViewControllerAnimated:YES];
    16. }
  • 裁剪文件产出。

    视频裁剪完成后,会触发上一步注册的代理事件:

    1. - (void)cropFinished:(UIViewController *)cropViewController videoPath:(NSString *)videoPath sourcePath:(NSString *)sourcePath{
    2. NSLog(@"裁剪完成视频路径:%@",videoPath);
    3. //在这里你可以做一些短视频处理完成后的后续事件
    4. //比如返回主页
    5. [self.navigationController popToRootViewControllerAnimated:YES];
    6. }
    7. - (void)cropFinished:(UIViewController *)cropViewController mediaType:(kPhotoMediaType)type photo:(UIImage *)photo videoPath:(NSString *)videoPath{
    8. NSLog(@"裁剪完成回调");
    9. //在这里你可以做一些短视频处理完成后的后续事件
    10. //比如返回主页
    11. [self.navigationController popToRootViewControllerAnimated:YES];
    12. }