全部产品
云市场

导入编辑

更新时间:2019-07-01 13:55:56

简介

阿里云短视频SDK编辑模块提供了视频特效的编辑能力。基础版目前不支持编辑模块,标准版具备滤镜、音乐、特效、变速、转场、涂鸦效果。专业版在上述能力上增加MV、动图、字幕效果。开发者可以通过简单的几步快速让你的app拥有专业视频编辑的能力。也可以通过配置文件,个性化定制视频编辑页面的UI风格。也可以参考我们的Demo使用我们的SDK深度定制属于你自己的编辑模块。

编辑功能集成

tips:编辑功能只支持标准版&专业版并且集成步骤一致,功能通过License控制。

创建示例工程SVideoEditorDemo。

undefined

步骤1. 文件导入

  • 拷贝必须的library和gradle相关文件夹到示例工程

趣视频编辑复制文件

  • 模块说明
名称 作用 是否必须
AlivcCore 短视频sdk核心组件
AliyunSVideoBase 短视频基础包
AliyunSvideoMusic 短视频音乐控件
AliyunVideoSdk 短视频sdk编辑核心功能
AliyunEditor 编辑模块ui和功能实现模块
AliyunCrop 裁剪ui模块
AlivcMedia 媒体资源选择库
AliyunFileDownLoader 资源数据库和下载模块
AliyunVideoCommon 公共模块,主要为一些工具类
thirdparty-lib 项目中所依赖的第三方库的配置子模块
  • 将assets和jniLibs中的so库拷贝到工程中

undefined

  • so库

tips:短视频目前提供了armeabi-v7a,arm64-v8a两种cpu架构的so库。

名称 作用 编辑模块是否必须
libfdk-aac.so 短视频SDK依赖音频第三方库
liblive-openh264.so 短视频SDK依赖第三方库
libQuCore.so 短视频SDK核心库
libaivcffmpeg.so 短视频SDK依赖第三方库
  • assets

tips: 视频编辑所需要的基础资源,zip文件需要放在目录AliyunEditorDemo下。

名称 作用 是否必须
aliyun_svideo_animation_filter.zip 特效资源
aliyun_svideo_caption.zip 字幕资源
aliyun_svideo_filter.zip 滤镜资源
aliyun_svideo_mv.zip mv资源
aliyun_svideo_overlay.zip 动图资源
tail.zip 尾部水印资源
  • 如果有集成其他模块,相同文件夹和so库只需要一份。

步骤2. 引入包和build.gradle设置

  • 在Android Project 的settings.gradle文件中添加以下引用
  1. include ':AlivcCore'//短视频sdk核心组件
  2. include ':AliyunSVideoBase'//短视频基础包
  3. include ':AliyunSvideoMusic'//短视频音乐控件
  4. include ':AliyunVideoSdk'//短视频sdk编辑核心功能
  5. include ':AliyunEditor:editor_demo'//编辑模块ui和功能实现模块
  6. include ':AliyunCrop:crop_demo'//裁剪ui模块
  7. include ':AlivcMedia'//媒体资源选择库
  8. include ':AliyunVideoCommon'//
  9. include ':AliyunFileDownLoader:downloadermanager'//资源数据库和下载模块
  • build.gradle中添加ndk和dependencies配置
  1. defaultConfig {
  2. //...
  3. ndk {
  4. abiFilters "armeabi-v7a","arm64-v8a"
  5. //短视频目前不支持x86架构
  6. }
  7. }
  8. dependencies {
  9. implementation fileTree(dir: 'libs', include: ['*.jar'])
  10. //...
  11. //短视频专业版依赖库
  12. api project(':AliyunEditor:editor_demo')
  13. implementation project(':AliyunImport:import_demo')
  14. implementation project(':AliyunFileDownLoader:downloadermanager')
  15. }
  • 在工程的build.gradle中添加thirdparty-lib/config.gradle的应用
  1. buildscript {
  2. //...
  3. apply from: 'thirdparty-lib/config.gradle'
  4. dependencies {
  5. classpath '...'
  6. }
  7. }
  • 在工程的build.gradle中添加maven仓库地址
  1. allprojects {
  2. repositories {
  3. google()
  4. jcenter()
  5. maven { url "http://maven.aliyun.com/nexus/content/repositories/releases" }
  6. }
  7. }

步骤3. 添加权限

在AndroidManifest.xml文件中加入以下权限,添加过的可以跳过此步骤。

  1. <uses-permission android:name="android.permission.INTERNET"/>
  2. <uses-permission android:name="android.permission.VIBRATE"/>
  3. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  4. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  5. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  6. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
  7. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
  8. <uses-permission android:name="android.permission.WAKE_LOCK"/>
  9. <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
  10. <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  11. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
  12. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  13. <uses-permission android:name="android.permission.BLUETOOTH" />
  14. <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

Android 6.0以上系统需要做动态权限请求。

步骤4. 在Application的oncreate方法中做初始化

  • 创建MyApplication继承android.app.Application
  1. @Override
  2. public void onCreate() {
  3. super.onCreate();
  4. QupaiHttpFinal.getInstance().initOkHttpFinal();
  5. DownloaderManager.getInstance().init(this);
  6. }
  • 在AndroidManifest.xml指定创建的Application

undefined

  • 如果项目中已经指定了自己Application,则只需要将onCreate中的方法添加到自己的Application。

步骤5. 功能使用

tips:编辑需要存储权限,为保证6.0以上机器可以正确使用您需要申请动态权限,您如果出现界面黑屏或者其他异常情况,请务必保证您拥有权限。

  • 使用默认参数进入编辑功能
  1. AlivcSvideoEditParam param = new AlivcSvideoEditParam.Build()
  2. .build();
  3. MediaActivity.startImport(this, param);

需要设置编辑的参数,完整代码:

  1. AlivcSvideoEditParam param = new AlivcSvideoEditParam.Build()
  2. .setRatio(mRatio)//视频比例
  3. .setCropMode(scaleMode)//裁剪模式
  4. .setVideoQuality(videoQuality)//视频质量
  5. .setResolutionMode(mResolutionMode)//裁剪分辨率
  6. .setHasTailAnimation(mHasTailAnimation)//是否添加片尾水印
  7. .setFrameRate(frameRate)//裁剪帧率
  8. .setGop(gop)//关键帧间隔
  9. .setBitrate(bitrate)//码率
  10. .setEntrance(entrance)//判断是编辑模块进入还是通过社区模块的编辑功能进入
  11. .setIsOpenCrop(true)//相册页面是否打开裁剪的入口
  12. .build();
  13. MediaActivity.startImport(this,param);
  • UI配置

    UI配置需要为Activity指定主题,定义如下(非必须指定,如不指定即为默认主题)。

  1. <style name="AlivcEditUIStyle" parent="Theme.AppCompat.Light.NoActionBar">
  2. <!--滤镜item对应的图片-->
  3. <item name="filterImage">@mipmap/aliyun_svideo_filter</item>
  4. <!--音乐图标-->
  5. <item name="musicImage">@mipmap/aliyun_svideo_music</item>
  6. <!--动图图标-->
  7. <item name="pasterImage">@mipmap/aliyun_svideo_overlay</item>
  8. <!--字幕图标-->
  9. <item name="captionImage">@mipmap/aliyun_svideo_caption</item>
  10. <!--MV图标-->
  11. <item name="mvImage">@mipmap/aliyun_svideo_mv</item>
  12. <!--特效图标-->
  13. <item name="effectImage">@mipmap/alivc_svideo_effect</item>
  14. <!--时间特效图标-->
  15. <item name="timeImage">@mipmap/aliyun_svideo_time</item>
  16. <!--转场图标-->
  17. <item name="translationImage">@mipmap/aliyun_svideo_transition</item>
  18. <!--涂鸦图标-->
  19. <item name="paintImage">@mipmap/aliyun_svideo_paint</item>
  20. <!--播放对应图标-->
  21. <item name="playImage">@mipmap/aliyun_svideo_play</item>
  22. <!--暂停对应图标-->
  23. <item name="pauseImage">@mipmap/aliyun_svideo_pause</item>
  24. <!--编辑完成对应图标-->
  25. <item name="finishImage">@mipmap/aliyun_svideo_complete_red</item>
  26. </style>