- 6.thirdparty:这里存放着一些包含源码的与平台无关的三方库,例如 libyuv。
- 7.CMakeLists.txt:这个文件主要是为了让 Clion 能够识别我们这个整个项目。
2.如何运行项目
- 1.
git clone https://github.com/TheGodsThemselves/WsVideoEditor.git
- 2.NDK 环境需要准备好
- 3.用 Android Studio 打开 WsVideoEditor/android 目录
- 4.在手机中准备 /sdcard/test.mp4 视频文件
- 5.运行 wsvideoeditor-test 项目
二、SDK功能介绍
这一章我们来介绍一下 编辑SDK 目前有的以及未来会有的功能。编辑SDK 的最终形态会和抖音的视频编辑功能接近,有其他想法的读者也可以在评论区留言或者提 issue。
1.目前有的功能
- 1.开始播放
- 2.暂停播放
- 3.视频音量调整
- 4.单段视频播放
- 5.多段视频播放
- 6.视频 Seek
- 7.视频边缘模糊填充
2.规划中的功能
- 1.视频类:
- 1.按时间轴添加额外的声音
- 2.按时间轴添加滤镜
- 3.按时间轴添加静态贴纸、动态贴纸
- 4.多段视频间转场
- 2.图片类:
- 1.添加声音
- 2.多张图片间的转场
- 3.照片电影
- 3.工具类:
- 1.视频缩略图截取
- 2.视频元数据读取
- 4.编码类:
- 1.导出不同格式的视频
- 2.更改视频的分辨率、帧率
- 3.视频转 gif
- 5.技术类:
- 1.多进程编解码视频
- 2.多进程播放视频
- 3.多进程视频缩略图截取
三、SDK架构以及运行机制介绍
这一章我来介绍一下目前 编辑SDK 的整体架构以及运行机制。
1.编辑SDK架构
图6是 编辑SDK 的架构图,这一节我会照着这张图来介绍。
(1).基础API
先从底部看起,底部是整个 SDK 依赖的底层 API 库。
- 1.FFMPEG:前面简单介绍过,是一个开源的视频库,在我们的项目中主要用于软编解码。
- 2.MediaCodec:是 Android 中的硬编解码 API,相应的 iOS 也有自己的硬编解码方式。
- 3.OpenGL:是一个开源的图形库,Android 和 iOS 中都有内置 OpenGL ES 作为默认图形库。在我们的项目中主要用于将视频解码后的视频帧绘制到屏幕上去。当然也可以对这些图像做一些效果的变化,例如滤镜、视频/图片转场等等。
- 4.Libyuv:是 Google 开源的实现各种 YUV 与 RGB 之间相互转换、旋转、缩放的库。
- 5.Protobuf:是 Google 开源的一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议。在我们的项目中主要用于 Cpp 与 Java、OC、Dart 之间的数据通信。
(2).SDK主体
接着我们再看图片中的主体部分,因为目前只有 Android 端的实现,所以主体部分的上层实现我使用 Android 来代替。
- 1.Android层架构:
- 1.WSMediaPlayerView:继承于 TextureView,所以其可以提供一个具有 Open G