Olive编译安装(Windows10+VisualStudio2022)
Olive是一个开源的非线性视频编辑器。主要基于Qt和FFmpeg开发。
注:官方的编译指南 https://olivevideoeditor.org/compile 但会有些问题,仅参考
前置条件
电脑上需要的环境
- Qt(>=5.15)
- VisualStudio(2022,其他版也可)
- vcpkg
软件安装
- 安装Qt5.15
令人糟糕的是,Qt如今变得不太容易安装。自从Qt5.15以后的版本,就取消了离线安装。所有的Qt后序版本就只能通过在线安装器进行安装。而有时,在线安装器并没有我们想要的版本,这就需要手动配置了。
-
首先,下载在线安装器,可从国内镜像站下载,例如:阿里源
-
配置在线安装器,打开安装器以后,点击左下角的设置按钮,配置过程,如下图所示
添加档案链接在镜像网站查找,如阿里源
于是,便可填入三个链接:https://mirrors.aliyun.com/qt/online/qtsdkrepository/windows_x86/desktop/qt5_5151
https://mirrors.aliyun.com/qt/online/qtsdkrepository/windows_x86/desktop/qt5_5151_wasm
https://mirrors.aliyun.com/qt/online/qtsdkrepository/windows_x86/desktop/qt5_5151_src_doc_examples
可以点击下条件测试,判断网址是否输入有误
最后点击确定即可 -
下面就是正常的Qt安装过程了
注意:Qt Design Studio默认是勾选的,可以去除掉。编译好的SDK也只需要MSVC 64一个就好了。这可以降低磁盘的占用大小以及加快安装的时间。 -
最后完成Qt5.15的安装
- 安装VS2022
- 网上下载在线安装器VS2022
- 傻瓜式安装,一步一步
- 最后完成VS2022的安装
- 安装vcpkg
vcpkg是一个强大的包管理工具。再通俗一点,就是它帮助我们下载源代码,并完成目标平台的编译构建。作为开发者,我们只需要输入vcpkg install xxx,我们就可以得到编译好的基础库(dll,lib,h,xxxConfig.cmake)。在我们的上层工程中,直接使用即可,极大的简化了C++开发的构建流程。
- 从github克隆vcpkg仓库。
之所以通过克隆的方式,是因为默认的vcpkg只安装最新版本的三方库。如果想要安装指定版本的三方库,就需要进行一些变基的操作,这就需要通过克隆的方式把完整的仓库拉到本地。 - 初始化vcpkg,通过仓库中的bootstrap-vcpkg.bat。如下图:
它会下载安装好一个vcpkg.exe到同级目录 - 安装完成
配置环境变量
-
配置Qt
其作用有:1,方便exe运行时查找dll。2,方便CMake中查找Qt。 -
配置Git。安装VisualStudio2022后,默认就会内置了Git。它的安装路径如下图所示:
-
配置CMake。安装VisualStudio2022后,默认就会内置了CMake。它的安装路径如下图所示:
-
配置vcpkg。把vcpkg仓库目录添加即可。
编译Olive
Olive的官方github:https://github.com/olive-editor/olive. 但其可能更新,导致编译失败,因此可参考我fork的仓库 https://github.com/zzzcb/olive. 它保证了编译完全可行。
安装依赖
官方指南中指明了,依赖要求
Olive currently has four major dependencies: Qt 5.15+, FFmpeg 3.0+, OpenImageIO 2.1.12+, and OpenColorIO 2.0+. It also uses the CMake build system for configuring. The following are instructions designed to help you on your way to acquiring these dependencies and using them to compile Olive.
但其实,其中的ffmpeg版本也不能太高。笔者进行了测试,最新的ffmpeg7.0已经不能编译通过。使用ffmpeg4.3.1可以编译通过。因此,ffmpeg采用4.3.1,其余依赖均采用最新版本,可顺利编译通过。
安装前述
通过vcpkg.json的方式安装依赖,并使用triplet来指定编译选项
- vcpkg.json中可以指定依赖名称,基线版本
- triplet选项,可以指定编译的选项,例如只安装release版本
新建目录olive_dep,用于最终存放所有依赖,新建vcpkg.json和x64-windows-release.cmake(用于triplet指定)
x64-windows-release.cmake内容如下:
set(VCPKG_TARGET_TRIPLET "x64-windows-release")
set(CMAKE_BUILD_TYPE "Release")
安装ffmpeg4.3.1
修改vcpkg.json内容如下:
{
"dependencies": [
"ffmpeg"
],
"builtin-baseline": "3426db05b996481ca31e95fff3734cf23e0f51bc"
}
其中的基线版本对应ffmpeg4.3.1
进入vcpkg仓库,使用powershell输入如下指令,可查看基线对应的依赖版本:
git show 3426db05b996481ca31e95fff3734cf23e0f51bc:versions/baseline.json | Select-String -Pattern '"ffmpeg"|"zlib"' -Context 0,3
如下图:
更多相关资料,参考 https://learn.microsoft.com/zh-cn/vcpkg/consume/lock-package-versions?tabs=inspect-powershell
一切准备就绪,cmd打开命令行,进入olive_dep目录,输入vcpkg install --triplet x64-windows-release
安装完成,所有依赖均被放入olive_dep\vcpkg_installed\x64-windows-release
拷贝bin include lib share 到olive_dep中,防止后序安装其他依赖被清理,并删除vcpkg_installed,如下图
安装其他依赖
openimageio openexr opencolorio portaudio
修改vcpkg.json,如下:
{
"dependencies": [
"openimageio",
"openexr",
"opencolorio",
"portaudio"
],
"builtin-baseline": "3426db05b996481ca31e95fff3734cf23e0f51bc"
}
cmd进入olive_dep,执行vcpkg x-update-baseline,更新到最新基线
命令执行完成,我们可以看到vcpkg.json中的baseline字段就自动更新到了最新
接下来,就可以安装依赖了,cmd进入olive_dep,执行vcpkg install --triplet x64-windows-release
结果生成了新的依赖包,如下:
拷贝bin include lib share 到olive_dep中
即形成了最终的依赖包,如下图:
配置依赖
将安装好的依赖配置到环境变量,方便后序编译时CMake的查找
正式开编olive
如果你不想手动vcpkg编译,也可以直接下载我编好的依赖 链接: https://pan.baidu.com/s/1g0AlXhhCCm-kq8NeUmZ6-Q?pwd=ygnw
-
下载源码,可从笔者fork的仓库拉取
https://github.com/zzzcb/olive
需要注意的是,olive中使用了两个外部仓库,git clone默认不拉取到本地,需要我们手动下载到它指定的目录的,如下:把core和KD下载好放入到olive的这个目录中,后序编译才可以顺利进行
-
使用vs2022打开源码根目录
因为我们的依赖都是Release版本,所以,管理配置到Release
默认CMake就执行成功了,如下
注:这里要改动一个地方,不然后序生成阶段会报错,就是要添加utf编译选项,在源码根CMakeLists.txt中添加,如下图
接下来,点击生成>全部生成。
等待编译完成即可。
最后,点击运行即可
完结撒花~