Skip to content

lite: disable cuda filters except upload #762

lite: disable cuda filters except upload

lite: disable cuda filters except upload #762

Workflow file for this run

name: Build
on:
push:
schedule:
- cron: '0 0 * * 0'
env:
# if: (github.event_name == 'schedule')
# GITHUB_ENV: https://docs.github.com/en/actions/learn-github-actions/environment-variables#about-environment-variables
FF_VERSION: ${{ vars.FF_VER }} # TODO: latest release if triggered by schedule
LLVM_VER: ${{ vars.LLVM_VER }}
LLVM_VER_DEFAULT: 23
NINJA_STATUS: '[%f/%t %e %r]'
SF_PW_MAPPED: ${{ secrets.SF_PW }}
SF_USER_MAPPED: ${{ secrets.SF_USER }}
VC_LTL_VER: ${{ vars.VC_LTL_VER }}
AMF_VER: ${{ vars.AMF_VER }}
jobs:
Apple:
# See: https://docs.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow#configuring-a-build-matrix
runs-on: macos-26
env:
TARGET_OS: ${{ matrix.target }}
CONFIG_SUFFIX: -${{ matrix.config }}
strategy:
fail-fast: false
matrix:
config: [default,lite,lite-lto] # lto reduce about 300KB for lite build
target: [macOS,iOS,iOSSimulator,visionOS,visionOSSimulator,tvOS,tvOSSimulator,macCatalyst]
exclude:
- config: default
target: iOS
- config: default
target: iOSSimulator
- config: lite
target: iOSSimulator
- config: default
target: macCatalyst
- config: lite
target: macCatalyst
- config: default
target: tvOS
- config: default
target: tvOSSimulator
- config: lite
target: tvOSSimulator
- config: default
target: visionOS
- config: lite # llvm-ar-17 merged visionOS lto libs has wrong contents (/,//,*.o/)
target: visionOS
- config: default
target: visionOSSimulator
- config: lite
target: visionOSSimulator
steps:
- uses: actions/checkout@v6
- name: Setup Xcode
run: sudo xcode-select -s /Applications/Xcode_${{ vars.XCODE }}.app
- name: Create Build Environment
shell: bash
env:
DEVTOOLS_CACHE_HIT: ${{ steps.devtools-cache.outputs.cache-hit }}
EXTERNAL_DEP_CACHE_HIT: ${{ steps.external-dep-cache.outputs.cache-hit }}
run: ./tools/ci-before-build.sh
- name: Configure and Build
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
run: |
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
[[ "${TARGET_OS}" == "macOS" ]] && export USER_OPT="--enable-libshaderc"
./avbuild.sh ${TARGET_OS}
- name: Make SDK
shell: bash
run: ./tools/ci-after-build.sh
- name: Archieve SDK
uses: actions/upload-artifact@v7
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-${{ matrix.config }}
path: ffmpeg-*.tar.xz
Wasm:
if: false
runs-on: macos-26
env:
TARGET_OS: 'wasm'
steps:
- uses: actions/checkout@v6
- name: Create Build Environment
shell: bash
env:
DEVTOOLS_CACHE_HIT: ${{ steps.devtools-cache.outputs.cache-hit }}
EXTERNAL_DEP_CACHE_HIT: ${{ steps.external-dep-cache.outputs.cache-hit }}
run: ./tools/ci-before-build.sh
- name: Configure and Build
shell: bash
run: |
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
./avbuild.sh ${TARGET_OS}
- name: Make SDK
shell: bash
run: ./tools/ci-after-build.sh
- name: Archieve SDK
uses: actions/upload-artifact@v7
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}
path: ffmpeg-*.tar.xz
RaspberryPiLegacy_clang:
if: false
runs-on: ubuntu-latest
env:
TARGET_OS: 'raspberry-pi'
COMPILER: 'clang'
CONFIG_SUFFIX: -${{ matrix.config }}
strategy:
fail-fast: false
matrix:
config: [lite]
steps:
- uses: actions/checkout@v6
- name: 'Restore sysroot cache'
id: sysroot-cache
uses: actions/cache@v4
with:
path: /tmp/sysroot
key: sysroot-${{ env.TARGET_OS }}-${{ vars.LINUX_SYSROOT_ID }}
- name: Create Build Environment
shell: bash
env:
SYSROOT_CACHE_HIT: ${{ steps.sysroot-cache.outputs.cache-hit }}
run: |
sudo apt remove -y libc++1-14 libc++abi1-14 libunwind-14 python3-lldb-14 # conflict with latest llvm
./tools/ci-before-build.sh
- name: Configure and Build
shell: bash
run: |
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
export SYSROOT=/tmp/sysroot
V=1 USE_TOOLCHAIN=clang-${LLVM_VER:-$LLVM_VER_DEFAULT} ./avbuild.sh ${TARGET_OS}
- name: Make SDK
shell: bash
run: ./tools/ci-after-build.sh
- name: Archieve SDK
uses: actions/upload-artifact@v7
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-${{ matrix.config }}
path: ffmpeg-*.tar.xz
VS2026:
runs-on: windows-2025-vs2026
env:
TARGET_OS: ${{ matrix.target }}
CONFIG_SUFFIX: -${{ matrix.config }}
strategy:
fail-fast: false
matrix:
config: [default,lite]
target: [windows-desktop,uwp]
exclude:
- config: default
target: uwp
steps:
- uses: actions/checkout@v6
with:
submodules: 'recursive'
- name: Create Build Environment
shell: cmd
run: |
set FF_BRANCH=%FF_VERSION%
if not [%FF_BRANCH%]==[master] set FF_BRANCH=release/%FF_VERSION%
git clone -b %FF_BRANCH% --depth 1 --no-tags https://code.ffmpeg.org/FFmpeg/FFmpeg.git ffmpeg-%FF_VERSION%
if not [%CONFIG_SUFFIX%]==[-default] copy /y config%CONFIG_SUFFIX%.sh config.sh
- uses: msys2/setup-msys2@v2
with:
release: false # disable installation cache, so exe path in avbuild.sh is correct
update: true
install: >-
make
diffutils
patch
pkg-config
nasm
yasm
mingw-w64-x86_64-glslang
- name: Install dev packages
shell: bash
run: |
curl -kL -o dep.7z https://sourceforge.net/projects/avbuild/files/dep/dep.7z/download
7z x -y dep.7z -otools
curl -kL -o libmdk-dep.zip https://nightly.link/wang-bin/devpkgs/workflows/${DEVPKGS_WORKFLOW:=build}/main/libmdk-dep.zip
7z x -y libmdk-dep.zip
7z x -y dep-av.7z -otools
cp -af tools/dep-av/* tools/dep/
curl -kL -o AMF-headers.tar.gz https://github.com/GPUOpen-LibrariesAndSDKs/AMF/releases/download/v$AMF_VER/AMF-headers-v$AMF_VER.tar.gz
tar xf AMF-headers.tar.gz -C tools/dep/include --strip-components=1
pwd
find tools/dep*/windows*
- name: Configure and Build
shell: cmd
env:
USER_OPT: --enable-libshaderc
if: ${{ matrix.target != 'uwp' }}
run: |
set PKG_CONFIG_PATH_MFX=%CD%\tools\dep\windows\lib\pkgconfig
set MSYS2_DIR=C:\msys64
set HOME=%CD%
set FFSRC=%CD%\ffmpeg-%FF_VERSION%
set BUILD_NOW=true
tools\vcbuild.bat VS2026 %TARGET_OS%10 all
- name: Make SDK
shell: cmd
run: |
set SDK_NAME=ffmpeg-%FF_VERSION%-%TARGET_OS%-vs2026%CONFIG_SUFFIX%
move sdk* %SDK_NAME%
7z a -ssc -m0=lzma2 -mx=9 -ms=on -mf=off -xr!*.pdb %SDK_NAME%.7z %SDK_NAME%
7z a -ssc -m0=lzma2 -mx=9 -ms=on -mf=off %SDK_NAME%-pdb.7z -ir!%SDK_NAME%\*.pdb
- name: Archieve SDK
uses: actions/upload-artifact@v7
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-VS2026${{ matrix.config }}
path: ffmpeg-*.7z
VS2026LTL:
runs-on: windows-2025-vs2026
env:
TARGET_OS: ${{ matrix.target }}
CONFIG_SUFFIX: -${{ matrix.config }}
strategy:
fail-fast: false
matrix:
config: [lite,default]
target: [windows-desktop]
steps:
- uses: actions/checkout@v6
with:
submodules: 'recursive'
- name: 'Restore dep cache'
id: dep-cache
uses: actions/cache@v4
with:
path: VC-LTL
key: dep-${{ vars.VC_LTL_VER }}
- if: ${{ steps.dep-cache.outputs.cache-hit != 'true' }}
name: Get VC-LTL
shell: bash
run: |
curl -kL -o ltl.7z https://github.com/Chuyu-Team/VC-LTL5/releases/download/v${{ vars.VC_LTL_VER }}/VC-LTL-Binary.7z
7z x ltl.7z -oVC-LTL
- name: Create Build Environment
shell: cmd
run: |
set FF_BRANCH=%FF_VERSION%
if not [%FF_BRANCH%]==[master] set FF_BRANCH=release/%FF_VERSION%
git clone -b %FF_BRANCH% --depth 1 --no-tags https://code.ffmpeg.org/FFmpeg/FFmpeg.git ffmpeg-%FF_VERSION%
if not [%CONFIG_SUFFIX%]==[-default] copy /y config%CONFIG_SUFFIX%.sh config.sh
- uses: msys2/setup-msys2@v2
with:
release: false # disable installation cache, so exe path in avbuild.sh is correct
update: true
install: >-
make
diffutils
patch
pkg-config
nasm
yasm
mingw-w64-x86_64-glslang
- name: Install dev packages
shell: bash
run: |
curl -kL -o dep.7z https://sourceforge.net/projects/avbuild/files/dep/dep.7z/download
7z x -y dep.7z -otools
curl -kL -o libmdk-dep.zip https://nightly.link/wang-bin/devpkgs/workflows/${DEVPKGS_WORKFLOW:=build}/main/libmdk-dep.zip
7z x -y libmdk-dep.zip
7z x -y dep-av.7z -otools
cp -af tools/dep-av/* tools/dep/
curl -kL -o AMF-headers.tar.gz https://github.com/GPUOpen-LibrariesAndSDKs/AMF/releases/download/v$AMF_VER/AMF-headers-v$AMF_VER.tar.gz
tar xf AMF-headers.tar.gz -C tools/dep/include --strip-components=1
grep AMF_VERSION tools/dep/include/AMF/core/Version.h
sed -n '40,50p' tools/dep/include/AMF/components/DisplayCapture.h
pwd
find tools/dep*/windows*
- name: Configure and Build
shell: cmd
run: |
set VC_LTL_DIR=%CD%\VC-LTL
set PKG_CONFIG_PATH_MFX=%CD%\tools\dep\windows-ltl\lib\pkgconfig
set MSYS2_DIR=C:\msys64
set HOME=%CD%
set FFSRC=%CD%\ffmpeg-%FF_VERSION%
set BUILD_NOW=true
set USER_OPT=--enable-libshaderc
tools\vcbuild.bat VS2026 %TARGET_OS%10 all
- name: Make SDK
shell: cmd
run: |
set SDK_NAME=ffmpeg-%FF_VERSION%-%TARGET_OS%-vs2026ltl%CONFIG_SUFFIX%
move sdk* %SDK_NAME%
7z a -ssc -m0=lzma2 -mx=9 -ms=on -mf=off -xr!*.pdb %SDK_NAME%.7z %SDK_NAME%
7z a -ssc -m0=lzma2 -mx=9 -ms=on -mf=off %SDK_NAME%-pdb.7z -ir!%SDK_NAME%\*.pdb
- name: Archieve SDK
uses: actions/upload-artifact@v7
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-VS2026ltl${{ matrix.config }}
path: ffmpeg-*.7z
LAVFilters:
if: false
runs-on: ubuntu-latest
env:
FFREPO: 'git://git.1f0.de/ffmpeg'
TARGET_OS: 'windows-desktop'
COMPILER: clang
VCDIR: '/tmp/msvcrt-dev'
WINDOWSSDKDIR: '/tmp/winsdk'
PKG_CONFIG_PATH_MFX: '/tmp/dep/ClangCL/lib/pkgconfig'
AMF_DIR: "/tmp/dep/include"
CONFIG_SUFFIX: '-lavfilters'
steps:
- uses: actions/checkout@v6
if: ${{ env.FF_VERSION == 'master' }}
with:
submodules: 'recursive'
- name: 'Restore sysroot cache'
if: ${{ env.FF_VERSION == 'master' }}
id: sysroot-cache
uses: actions/cache@v4
with:
path: |
/tmp/winsdk
/tmp/msvcrt-dev
key: sysroot-${{ env.TARGET_OS }}${{ vars.WINSDKVER }}-vc${{ vars.VCVER }}${{ env.CONFIG_SUFFIX }}
- name: Create Build Environment
if: ${{ env.FF_VERSION == 'master' }}
shell: bash
env:
SYSROOT_CACHE_HIT: ${{ steps.sysroot-cache.outputs.cache-hit }}
run: |
sudo apt remove -y libc++1-14 libc++abi1-14 libunwind-14 python3-lldb-14 # conflict with latest llvm
./tools/ci-before-build.sh
- name: Configure and Build
if: ${{ env.FF_VERSION == 'master' }}
shell: bash
run: |
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
export WindowsSdkDir=${WINDOWSSDKDIR}
export WindowsSDKVersion=$(cat ${WINDOWSSDKDIR}/.version)
export V=1
USE_TOOLCHAIN=clang-${LLVM_VER:-$LLVM_VER_DEFAULT} ./avbuild.sh $TARGET_OS "x86 x64"
- name: Make SDK
if: ${{ env.FF_VERSION == 'master' }}
shell: bash
run: ./tools/ci-after-build.sh
- name: Archieve SDK
if: ${{ env.FF_VERSION == 'master' }}
uses: actions/upload-artifact@v7
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-lavfilters
path: ffmpeg-*.tar.xz
Windows_clang:
runs-on: ubuntu-latest
env:
TARGET_OS: ${{ matrix.target }}
COMPILER: clang
VCDIR: '/tmp/msvcrt-dev'
WINDOWSSDKDIR: '/tmp/winsdk'
PKG_CONFIG_PATH_MFX: '/tmp/dep/ClangCL/lib/pkgconfig'
AMF_DIR: "/tmp/dep/include"
CONFIG_SUFFIX: -${{ matrix.config }}
DEVPKGS_WORKFLOW: no-lto
strategy:
fail-fast: false
matrix:
config: [lite]
target: [windows-desktop]
steps:
- uses: actions/checkout@v6
with:
submodules: 'recursive'
- name: 'Restore sysroot cache'
id: sysroot-cache
uses: actions/cache@v4
with:
path: |
/tmp/winsdk
/tmp/msvcrt-dev
key: sysroot-${{ env.TARGET_OS }}${{ vars.WINSDKVER }}-vc${{ vars.VCVER }}
- name: Create Build Environment
shell: bash
env:
SYSROOT_CACHE_HIT: ${{ steps.sysroot-cache.outputs.cache-hit }}
run: |
sudo apt remove -y libc++1-14 libc++abi1-14 libunwind-14 python3-lldb-14 # conflict with latest llvm
./tools/ci-before-build.sh
- name: Configure and Build
shell: bash
run: |
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
export WindowsSdkDir=${WINDOWSSDKDIR}
export WindowsSDKVersion=$(cat ${WINDOWSSDKDIR}/.version)
export USER_OPT="--enable-libshaderc"
USE_TOOLCHAIN=clang-${LLVM_VER:-$LLVM_VER_DEFAULT} ./avbuild.sh $TARGET_OS "arm64 x86 x64"
- name: Make SDK
shell: bash
run: ./tools/ci-after-build.sh
- name: Archieve SDK
uses: actions/upload-artifact@v7
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-${{ matrix.config }}
path: ffmpeg-*.tar.xz
VCRT120_clang:
runs-on: ubuntu-latest
env:
TARGET_OS: windows-desktop
COMPILER: 'clang-vcrt120'
VCDIR: '/tmp/msvcrt-dev/120'
WINDOWSSDKDIR: '/tmp/winsdk'
AMF_DIR: "/tmp/dep/include"
CONFIG_SUFFIX: -${{ matrix.config }}
DEVPKGS_WORKFLOW: no-lto
strategy:
fail-fast: false
matrix:
config: [lite]
steps:
- uses: actions/checkout@v6
with:
submodules: 'recursive'
- name: 'Restore sysroot cache'
id: sysroot-cache
uses: actions/cache@v4
with:
path: |
/tmp/winsdk
/tmp/msvcrt-dev
key: sysroot-${{ env.TARGET_OS }}${{ vars.WINSDKVER }}-vc${{ vars.VCVER }}
- name: Create Build Environment
shell: bash
env:
SYSROOT_CACHE_HIT: ${{ steps.sysroot-cache.outputs.cache-hit }}
run: |
sudo apt remove -y libc++1-14 libc++abi1-14 libunwind-14 python3-lldb-14 # conflict with latest llvm
./tools/ci-before-build.sh
- name: Configure and Build
shell: bash
run: |
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
export WindowsSdkDir=${WINDOWSSDKDIR}
export WindowsSDKVersion=$(cat ${WINDOWSSDKDIR}/.version)
USE_TOOLCHAIN=clang-${LLVM_VER:-$LLVM_VER_DEFAULT} ./avbuild.sh $TARGET_OS "x86 x64"
- name: Make SDK
shell: bash
run: ./tools/ci-after-build.sh
- name: Archieve SDK
uses: actions/upload-artifact@v7
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-${{ matrix.config }}-vcrt120
path: ffmpeg-*.tar.xz
MinGW_GCC:
runs-on: ubuntu-latest
env:
TARGET_OS: mingw
COMPILER: gcc
PKG_CONFIG_PATH_MFX: "/tmp/dep/MinGW/lib/pkgconfig"
AMF_DIR: "/tmp/dep/include"
CONFIG_SUFFIX: -${{ matrix.config }}
strategy:
fail-fast: false
matrix:
config: [lite]
steps:
- uses: actions/checkout@v6
with:
submodules: 'recursive'
- name: Create Build Environment
shell: bash
run: |
sudo apt remove -y libc++1-14 libc++abi1-14 libunwind-14 python3-lldb-14 # conflict with latest llvm
./tools/ci-before-build.sh
- name: Configure and Build
shell: bash
run: |
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
./avbuild.sh $TARGET_OS
- name: Make SDK
shell: bash
run: ./tools/ci-after-build.sh
- name: Archieve SDK
uses: actions/upload-artifact@v7
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-${{ matrix.config }}
path: ffmpeg-*.tar.xz
Linux_clang:
runs-on: ubuntu-latest
env:
TARGET_OS: linux
COMPILER: clang
PKG_CONFIG_PATH_MFX: "/tmp/dep/linux/amd64/lib/pkgconfig"
AMF_DIR: "/tmp/dep/include"
CONFIG_SUFFIX: -${{ matrix.config }}
strategy:
fail-fast: false
matrix:
config: [default,lite,lite-lto]
steps:
- uses: actions/checkout@v6
with:
submodules: 'recursive'
- name: 'Restore sysroot cache'
id: sysroot-cache
uses: actions/cache@v4
with:
path: /tmp/sysroot
key: sysroot-${{ env.TARGET_OS }}-${{ vars.LINUX_SYSROOT_ID }}
- name: Create Build Environment
shell: bash
env:
SYSROOT_CACHE_HIT: ${{ steps.sysroot-cache.outputs.cache-hit }}
run: |
sudo apt remove -y libc++1-14 libc++abi1-14 libunwind-14 python3-lldb-14 # conflict with latest llvm
./tools/ci-before-build.sh
- name: Configure and Build
shell: bash
run: |
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
export SYSROOT=/tmp/sysroot
export USER_OPT="--enable-wolfssl --enable-libshaderc --disable-bzlib"
USE_TOOLCHAIN=clang-${LLVM_VER:-$LLVM_VER_DEFAULT} ./avbuild.sh linux "amd64 arm64 armhf"
- name: Make SDK
shell: bash
run: ./tools/ci-after-build.sh
- name: Archieve SDK
uses: actions/upload-artifact@v7
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-${{ matrix.config }}
path: ffmpeg-*.tar.xz
Rockchip:
if: ${{ vars.FF_VER == 'master' }}
runs-on: ubuntu-latest
env:
FFREPO: 'https://github.com/nyanmisaka/ffmpeg-rockchip'
TARGET_OS: rockchip
COMPILER: clang
PKG_CONFIG_PATH_MFX: "/tmp/dep/linux/amd64/lib/pkgconfig"
AMF_DIR: "/tmp/dep/include"
CONFIG_SUFFIX: -${{ matrix.config }}
strategy:
fail-fast: false
matrix:
config: [lite]
steps:
- uses: actions/checkout@v6
with:
submodules: 'recursive'
- name: 'Restore sysroot cache'
id: sysroot-cache
uses: actions/cache@v4
with:
path: /tmp/sysroot
key: sysroot-linux-${{ vars.LINUX_SYSROOT_ID }}
- name: Create Build Environment
shell: bash
env:
SYSROOT_CACHE_HIT: ${{ steps.sysroot-cache.outputs.cache-hit }}
run: |
sudo apt remove -y libc++1-14 libc++abi1-14 libunwind-14 python3-lldb-14 # conflict with latest llvm
./tools/ci-before-build.sh
- name: Configure and Build
shell: bash
run: |
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
export SYSROOT=/tmp/sysroot
export USER_OPT="--enable-wolfssl --enable-libshaderc --disable-bzlib"
USE_TOOLCHAIN=clang-${LLVM_VER:-$LLVM_VER_DEFAULT} ./avbuild.sh rockchip "arm64"
- name: Make SDK
shell: bash
run: ./tools/ci-after-build.sh
- name: Archieve SDK
uses: actions/upload-artifact@v7
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-${{ matrix.config }}
path: ffmpeg-*.tar.xz
Android:
runs-on: macos-26
env:
TARGET_OS: android
CONFIG_SUFFIX: -${{ matrix.config }}
strategy:
fail-fast: false
matrix:
config: [lite,lite-lto]
steps:
- uses: actions/checkout@v6
- name: 'Restore sysroot cache'
id: sysroot-cache
uses: actions/cache@v4
with:
path: /tmp/sysroot
key: sysroot-${{ env.TARGET_OS }}-${{ vars.LINUX_SYSROOT_ID }}
- name: Create Build Environment
shell: bash
env:
SYSROOT_CACHE_HIT: ${{ steps.sysroot-cache.outputs.cache-hit }}
run: ./tools/ci-before-build.sh
- name: Configure and Build 32bit
shell: bash
run: |
export ANDROID_NDK=$ANDROID_NDK_LATEST_HOME
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
export USER_OPT="--enable-wolfssl"
./avbuild.sh ${TARGET_OS} "armv7 x86"
mv sdk-android-clang{,32}
- name: Configure and Build 64bit
shell: bash
run: |
export ANDROID_NDK=$ANDROID_NDK_LATEST_HOME
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
export USER_OPT="--enable-wolfssl"
./avbuild.sh ${TARGET_OS} "arm64 x86_64"
rsync -auv --ignore-existing sdk-android-clang{32/*,}
rm -rf sdk-android-clang32
- name: Make SDK
shell: bash
run: ./tools/ci-after-build.sh
- name: Archieve SDK
uses: actions/upload-artifact@v7
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-${{ matrix.config }}
path: ffmpeg-*.tar.xz
ohos:
runs-on: macos-26
env:
TARGET_OS: ohos
CONFIG_SUFFIX: -${{ matrix.config }}
strategy:
fail-fast: false
matrix:
config: [lite,lite-lto]
steps:
- uses: actions/checkout@v6
- name: Setup OpenHarmony SDK
id: setup-ohos-sdk
uses: openharmony-rs/setup-ohos-sdk@v1.0.0
with:
version: ${{ vars.OH_SDK_VERSION }}
cache: true
- name: Create Build Environment
shell: bash
run: ./tools/ci-before-build.sh
- name: Configure and Build
shell: bash
run: |
export OHOS_NDK=$OHOS_SDK_NATIVE
export FFSRC=$PWD/ffmpeg-${FF_VERSION}
export USER_OPT="--enable-wolfssl"
./avbuild.sh ${TARGET_OS}12 "arm64"
- name: Make SDK
shell: bash
run: ./tools/ci-after-build.sh
- name: Archieve SDK
uses: actions/upload-artifact@v7
with:
name: ffmpeg-${{ env.FF_VERSION }}-${{ env.TARGET_OS }}-${{ matrix.config }}
path: ffmpeg-*.tar.xz
FFmpeg-xcframework:
runs-on: macos-26
needs: [Apple]
steps:
- name: Download iOS
uses: actions/download-artifact@v8
with:
name: ffmpeg-${{ env.FF_VERSION }}-iOS-lite-lto
- name: Download iOSSimulator
uses: actions/download-artifact@v8
with:
name: ffmpeg-${{ env.FF_VERSION }}-iOSSimulator-lite-lto
- name: Download tvOS
uses: actions/download-artifact@v8
with:
name: ffmpeg-${{ env.FF_VERSION }}-tvOS-lite-lto
- name: Download tvOSSimulator
uses: actions/download-artifact@v8
with:
name: ffmpeg-${{ env.FF_VERSION }}-tvOSSimulator-lite-lto
- name: Download visionOS
uses: actions/download-artifact@v8
with:
name: ffmpeg-${{ env.FF_VERSION }}-visionOS-lite-lto
- name: Download visionOSSimulator
uses: actions/download-artifact@v8
with:
name: ffmpeg-${{ env.FF_VERSION }}-visionOSSimulator-lite-lto
- name: Download macOS
uses: actions/download-artifact@v8
with:
name: ffmpeg-${{ env.FF_VERSION }}-macOS-lite-lto
- name: Download macCatalyst
uses: actions/download-artifact@v8
with:
name: ffmpeg-${{ env.FF_VERSION }}-macCatalyst-lite-lto
- name: Gen FFmpeg.framework
run: |
ls -lh *.tar.xz
for OS in iOS iOSSimulator tvOS tvOSSimulator visionOS visionOSSimulator; do
tar xvf ffmpeg-${{ env.FF_VERSION }}-${OS}-lite-lto-shared.tar.xz
cd ffmpeg-${{ env.FF_VERSION }}-${OS}-lite-lto
./dylib2framework.sh lib/libffmpeg.dylib
cd -
done
for OS in macOS macCatalyst; do
tar xvf ffmpeg-${{ env.FF_VERSION }}-${OS}-lite-lto.tar.xz
cd ffmpeg-${{ env.FF_VERSION }}-${OS}-lite-lto
./dylib2framework.sh lib/libffmpeg.dylib
cd -
done
- name: Gen FFmpeg.xcframework
env:
export XZ_OPT: "-T0 -9e" # -9e. -8/9 will disable mt?
run: |
for OS in macOS macCatalyst iOS iOSSimulator tvOS tvOSSimulator visionOS visionOSSimulator; do
ARGS+=" -framework ffmpeg-${{ env.FF_VERSION }}-${OS}-lite-lto/lib/FFmpeg.framework"
done
xcodebuild -create-xcframework $ARGS -output FFmpeg.xcframework
codesign --force --sign - --deep --timestamp FFmpeg.xcframework
mkdir -p out
mv -v FFmpeg.xcframework ffmpeg-${{ env.FF_VERSION }}-iOS-lite-lto/{README.txt,COPYING*,Changelog,include} out
cd out
gtar Jcvf ../FFmpeg.xcframework-${{ env.FF_VERSION }}-lite.tar.xz *
- name: Upload Artifact
uses: actions/upload-artifact@v7
with:
name: FFmpeg.xcframework-${{ env.FF_VERSION }}-lite
path: FFmpeg.xcframework-${{ env.FF_VERSION }}-lite.tar.xz
- name: Upload to SourceForge
if: (github.event_name != 'pull_request')
shell: bash
run: |
brew install hudochenkov/sshpass/sshpass
sshpass -p $SF_PW_MAPPED scp -o StrictHostKeyChecking=no FFmpeg.xcframework-${{ env.FF_VERSION }}-lite.tar.xz $SF_USER_MAPPED,avbuild@frs.sourceforge.net:/home/frs/project/a/av/avbuild/xcframework/
Upload:
runs-on: ubuntu-latest
needs: [VS2026, VS2026LTL]
steps:
- name: Download vs2026 desktop
uses: actions/download-artifact@v8
with:
name: ffmpeg-${{ env.FF_VERSION }}-windows-desktop-VS2026default
- name: Download vs2026 desktop lite
uses: actions/download-artifact@v8
with:
name: ffmpeg-${{ env.FF_VERSION }}-windows-desktop-VS2026lite
- name: Download vs2026 LTL desktop lite
uses: actions/download-artifact@v8
with:
name: ffmpeg-${{ env.FF_VERSION }}-windows-desktop-VS2026ltllite
- name: Download vs2026 LTL desktop
uses: actions/download-artifact@v8
with:
name: ffmpeg-${{ env.FF_VERSION }}-windows-desktop-VS2026ltldefault
- name: Download vs2026 uwp lite
uses: actions/download-artifact@v8
with:
name: ffmpeg-${{ env.FF_VERSION }}-uwp-VS2026lite
- name: Upload to SourceForge
if: (github.event_name != 'pull_request')
shell: bash
run: |
sudo apt update
sudo apt install -y sshpass
FFV=${{ env.FF_VERSION }}
for f in `ls ffmpeg-*.7z`; do
OS=${f%%-vs*}
OS=${OS##*${FFV}-}
sshpass -p $SF_PW_MAPPED scp -o StrictHostKeyChecking=no $f $SF_USER_MAPPED,avbuild@frs.sourceforge.net:/home/frs/project/a/av/avbuild/$OS
done