构建支持视频的 squishrunner
直接从源代码构建 squishrunner 非常罕见。在《从桌面源包安装 Squish for Qt》或《从嵌入式源包安装 Squish for Qt》 的说明中,我们完全避免了构建,因为只有 squishserver 需要与您的 AUT 兼容二进制,而 squishrunner 可以从我们的官方二进制版本之一获得,并通常在运行流行操作系统/平台的桌面或 CI 服务器上运行。
然而,在那种罕见的情况下,您确实需要构建 squishrunner(可能为了支持我们支持的脚本解释器的一个不同版本),本节将说明如何构建它,并提供记录视频的选项支持。
要求
在我们可以配置 squish 之前,我们需要满足以下要求。
- 安装您计划使用的脚本语言的开发包,对于 Python、Ruby、Perl 或 TCL(JavaScript 包含在 Squish 中)。
- 必须可用的 Qt 4.8 或更高版本。如果 qmake 的路径在我们的 PATH 中,它将由 Squish 的 configure 脚本自动获取。
- 与用于构建 Qt 的版本相匹配的 C++ 编译器,以及在 Windows 上的命令外壳窗口,其中包含编译器的命令行工具,并在我们的 PATH 中。
设置构建目录
接下来,我们将设置一个构建目录,以下步骤中将用 <BUILDDIR> 来指代它。此目录需要以下内容
- 构建
openh264
v2.1.1 库的源文件 - 构建
ffmpeg
4.4 库的源文件 - 构建 Squish 7.0 或更高版本的源文件。源存档可以从选择 Squish 嵌入式或桌面源作为产品后从 Qt 客户门户 下载。如果您在列表中看不到这些产品之一,请联系您的销售代表以获取访问权限。
build.sh
,一个跨平台脚本,用于构建具有openh264
支持的ffmpeg
topDir=`pwd` packageName=$1 cd $topDir/openh264 make $OPENH264_ARGS make install-static $OPENH264_ARGS PREFIX=$topDir/install/openh264 make install-headers $OPENH264_ARGS PREFIX=$topDir/install/openh264 cd $topDir/ffmpeg export PKG_CONFIG_PATH=$topDir/install/openh264/lib/pkgconfig ./configure $FFMPEG_ARGS --prefix=$topDir/install/ffmpeg \ --disable-static --enable-shared --disable-all \ --disable-autodetect --enable-ffmpeg --disable-doc \ --enable-avcodec --enable-avformat --enable-swscale \ --disable-everything --enable-libopenh264 --enable-encoder=libopenh264 \ --enable-protocol=file --enable-muxer=mp4 --build-suffix=Squish \ --enable-debug --disable-stripping make make install cd $topDir/install/ffmpeg for i in `find . -name "*Squish.lib" -o -name "*Squish.so" -o -name "*Squish.dylib"` do cp -Pv $i `echo $i | sed s/Squish././` done tar -czf $topDir/$packageName -C $topDir/install ffmpeg
- 仅限 Windows,
build.bat
,一个批处理文件,用于在 Windows 上构建ffmpeg
,并使用 MSYS2 运行build.sh
set MSYSTEM=MSYS set CHERE_INVOKING=1 set MSYS2_PATH_TYPE=inherit set OPENH264_ARGS=OS=msvc %OPENH264_ARGS% set FFMPEG_ARGS=--toolchain=msvc %FFMPEG_ARGS% set PATH=c:\msys64\usr\bin;%LOCALAPPDATA%\bin\NASM;%PROGRAMFILES%\Git\usr\bin;%PATH% bash -l build.sh ffmpeg-4.4-squish-windows-x64.tar.gz
针对 32 位构建
如果您使用的是 32 位编译器和 32 位 Qt,则需要为 32 位构建 ffmpeg
和 openh264
。为此,我们在 build.sh
的顶部附近设置了一些环境变量。根据您的平台设置以下值。
Windows | OPENH264_ARGS=ENABLE64BIT=No FFMPEG_ARGS=--arch=i686 |
Debian Linux/Ubuntu | OPENH264_ARGS=ENABLE64BIT=No FFMPEG_ARGS="--arch=i686 --extra-cflags=-m32 --extra-cxxflags=-m32 --extra-ldflags=-m32" |
构建具有 openh264 支持的 ffmpeg
在 Windows 上使用的 ffmpeg
的官方二进制版本默认情况下使用 Windows Media Foundation для H.264。在 Linux 上,它们使用 libx264
。这些二进制文件与 Squish 一起使用时存在问题。使用以下脚本配置 ffmpeg
将禁用除 Openh264 之外的任何功能,以避免这些问题。
Windows | 安装 nasm。 安装 MSYS2 打开一个 MSYS2 终端,并从那里安装一些附加软件包 $ pacman -sYY $ pacman -S make pkg-config tar git 打开一个开发者命令行外壳,例如 Visual Studio 的 x64 Native Tools Command Prompt C:\> cd BUILDDIR C:\builddir> git clone https://github.com/cisco/openh264.git -b v2.1.1 C:\builddir> git clone https://git.ffmpeg.org/ffmpeg.git -b n4.4 C:\builddir> build.bat |
Debian Linux/Ubuntu | $ sudo apt-get build-dep ffmpeg $ cd BUILDDIR $ git clone https://github.com/cisco/openh264.git -b v2.1.1 $ git clone https://git.ffmpeg.org/ffmpeg.git -b n4.4 $ ./build.sh ffmpeg-4.4-squish-linux-x64.tar.gz |
完成此步骤后,如果一切顺利,应在 <BUILDDIR> 中看到一个名为 install
的目录,其中包含构建的 ffmpeg,以及一个包含相同文件的 ffmpeg-4.4-squish.tar.gz
存档。
配置和构建具有视频支持的 squishrunner
Windows | 需要在配置行中指定如下位置:qmake 、Python和其他任何我们想要使用的脚本解释器的位置,如果它们还未包含在我们的PATH C:\builddir> mkdir squish-build C:\builddir> cd squish-build C:\builddir\squish-build> ..\squish-7.0-qt-src\configure --with-qmake=C:\Qt\5.15.7\msvc2019_64\bin\qmake --with-python3=C:\Python38\python.exe --disable-all --enable-runner --with-ffmpeg=..\install\ffmpeg\ C:\builddir\squish-build> build |
Debian Linux/Ubuntu | 只要使用系统包管理器安装,Qt、Python和其他脚本解释器通常会被configure 自动找到。$ sudo apt-get install libperl-dev ruby-dev python3-dev qt5-qmake $ mkdir squish-build $ cd squish-build $ ../squish-7.0-qt-src/configure --disable-all --enable-runner --with-ffmpeg=../install/ffmpeg/ $ ./build |
©2024 The Qt Company Ltd. 文档中的贡献均为各自所有者的版权所拥有。
本提供的文档受GNU自由文档许可证第1.3版的条款约束,该许可证由自由软件基金会发布。
Qt及其相关标志是芬兰以及其他国家全球范围内的The Qt Company Ltd.的商标。所有其他商标均为其各自所有者的财产。