构建支持视频的 squishrunner

直接从源代码构建 squishrunner 非常罕见。在《从桌面源包安装 Squish for Qt》或《从嵌入式源包安装 Squish for Qt》 的说明中,我们完全避免了构建,因为只有 squishserver 需要与您的 AUT 兼容二进制,而 squishrunner 可以从我们的官方二进制版本之一获得,并通常在运行流行操作系统/平台的桌面或 CI 服务器上运行。

然而,在那种罕见的情况下,您确实需要构建 squishrunner(可能为了支持我们支持的脚本解释器的一个不同版本),本节将说明如何构建它,并提供记录视频的选项支持。

要求

在我们可以配置 squish 之前,我们需要满足以下要求。

  1. 安装您计划使用的脚本语言的开发包,对于 Python、Ruby、Perl 或 TCL(JavaScript 包含在 Squish 中)。
  2. 必须可用的 Qt 4.8 或更高版本。如果 qmake 的路径在我们的 PATH 中,它将由 Squish 的 configure 脚本自动获取。
  3. 与用于构建 Qt 的版本相匹配的 C++ 编译器,以及在 Windows 上的命令外壳窗口,其中包含编译器的命令行工具,并在我们的 PATH 中。

设置构建目录

接下来,我们将设置一个构建目录,以下步骤中将用 <BUILDDIR> 来指代它。此目录需要以下内容

  1. 构建 openh264 v2.1.1 库的源文件
  2. 构建 ffmpeg 4.4 库的源文件
  3. 构建 Squish 7.0 或更高版本的源文件。源存档可以从选择 Squish 嵌入式或桌面源作为产品后从 Qt 客户门户 下载。如果您在列表中看不到这些产品之一,请联系您的销售代表以获取访问权限。
  4. 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
  5. 仅限 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 位构建 ffmpegopenh264。为此,我们在 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.的商标。所有其他商标均为其各自所有者的财产。