diff --git a/.github/workflows/android-build-scripts.yml b/.github/workflows/android-build-scripts.yml index 659e30fc5..921f12ae2 100644 --- a/.github/workflows/android-build-scripts.yml +++ b/.github/workflows/android-build-scripts.yml @@ -35,12 +35,14 @@ jobs: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: set up adopt jdk 17 uses: actions/setup-java@v3 with: distribution: 'adopt' java-version: '17' + - name: prerequisites + run: ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --uninstall "cmake;3.10.2.4988404" "cmake;3.18.1" - name: set up android ndk run: | curl -s "https://dl.google.com/android/repository/android-ndk-${{ matrix.ndk-version }}.zip" -o ndk.zip @@ -64,12 +66,14 @@ jobs: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: set up adopt jdk 17 uses: actions/setup-java@v3 with: distribution: 'adopt' java-version: '17' + - name: prerequisites + run: ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --uninstall "cmake;3.10.2.4988404" "cmake;3.18.1" - name: set up android ndk run: | curl -s "https://dl.google.com/android/repository/android-ndk-${{ matrix.ndk-version }}.zip" -o ndk.zip @@ -93,7 +97,7 @@ jobs: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: set up adopt jdk 17 uses: actions/setup-java@v3 with: @@ -114,7 +118,7 @@ jobs: run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' build-lts-on-macos: name: android lts on macos - runs-on: macos-11 + runs-on: macos-12 strategy: matrix: ndk-version: [ 'r22b-darwin-x86_64', 'r23b-darwin' ] @@ -122,7 +126,7 @@ jobs: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: set up adopt jdk 17 uses: actions/setup-java@v3 with: @@ -151,12 +155,14 @@ jobs: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: set up adopt jdk 17 uses: actions/setup-java@v3 with: distribution: 'adopt' java-version: '17' + - name: prerequisites + run: ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --uninstall "cmake;3.10.2.4988404" "cmake;3.18.1" - name: set up android ndk run: | curl -s "https://dl.google.com/android/repository/android-ndk-${{ matrix.ndk-version }}.zip" -o ndk.zip diff --git a/.github/workflows/ios-build-scripts.yml b/.github/workflows/ios-build-scripts.yml index 29d897858..40387ce7e 100644 --- a/.github/workflows/ios-build-scripts.yml +++ b/.github/workflows/ios-build-scripts.yml @@ -27,17 +27,17 @@ on: - 'ios.sh' jobs: - build-main-on-macos-monterey: - name: ios main on monterey - runs-on: macos-12 + build-main-on-macos-sonoma: + name: ios main on sonoma + runs-on: macos-14 strategy: matrix: - xcode: [ '13.4.1', '14.0.1' ] + xcode: [ '15.4', '16.0' ] defaults: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: prerequisites run: brew install autoconf automake libtool pkg-config curl git cmake nasm - name: set up xcode @@ -50,17 +50,17 @@ jobs: - name: print ffbuild logs if: ${{ failure() }} run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-main-on-macos-bigsur: - name: ios main on big sur - runs-on: macos-11 + build-main-on-macos-ventura: + name: ios main on ventura + runs-on: macos-13 strategy: matrix: - xcode: [ '12.5.1', '13.2.1' ] + xcode: [ '14.3.1', '15.2' ] defaults: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: prerequisites run: brew install autoconf automake libtool pkg-config curl git cmake nasm - name: set up xcode @@ -73,17 +73,17 @@ jobs: - name: print ffbuild logs if: ${{ failure() }} run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-lts-on-macos-bigsur: - name: ios lts on big sur - runs-on: macos-11 + build-lts-on-macos-monterey: + name: ios lts on monterey + runs-on: macos-12 strategy: matrix: - xcode: [ '11.7', '12.4' ] + xcode: [ '13.4.1', '14.2' ] defaults: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: prerequisites run: brew install autoconf automake libtool pkg-config curl git cmake nasm - name: set up xcode diff --git a/.github/workflows/linux-build-scripts.yml b/.github/workflows/linux-build-scripts.yml index 6f43cf728..a42e980a0 100644 --- a/.github/workflows/linux-build-scripts.yml +++ b/.github/workflows/linux-build-scripts.yml @@ -30,7 +30,7 @@ jobs: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: prerequisites run: sudo apt-get install clang llvm lld libclang-14-dev libstdc++6 nasm autoconf automake libtool pkg-config curl git doxygen rapidjson-dev - name: run the build script @@ -48,7 +48,7 @@ jobs: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: prerequisites run: sudo apt-get install clang llvm lld libclang-14-dev libstdc++6 nasm autoconf automake libtool pkg-config curl git doxygen rapidjson-dev - name: run the build script @@ -66,7 +66,7 @@ jobs: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: prerequisites run: sudo apt-get install clang llvm lld libclang-11-dev libstdc++6 nasm autoconf automake libtool pkg-config curl git doxygen rapidjson-dev - name: run the build script @@ -84,7 +84,7 @@ jobs: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: prerequisites run: sudo apt-get install clang llvm lld libclang-11-dev libstdc++6 nasm autoconf automake libtool pkg-config curl git doxygen rapidjson-dev - name: run the build script diff --git a/.github/workflows/macos-build-scripts.yml b/.github/workflows/macos-build-scripts.yml index fb2d35bc0..d76fcfe65 100644 --- a/.github/workflows/macos-build-scripts.yml +++ b/.github/workflows/macos-build-scripts.yml @@ -27,17 +27,17 @@ on: - 'macos.sh' jobs: - build-main-on-macos-monterey: - name: macos main on monterey - runs-on: macos-12 + build-main-on-macos-sonoma: + name: macos main on sonoma + runs-on: macos-14 strategy: matrix: - xcode: [ '13.4.1', '14.0.1' ] + xcode: [ '15.4', '16.0' ] defaults: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: prerequisites run: brew install autoconf automake libtool pkg-config curl git cmake nasm - name: set up xcode @@ -50,17 +50,17 @@ jobs: - name: print ffbuild logs if: ${{ failure() }} run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-main-on-macos-bigsur: - name: macos main on big sur - runs-on: macos-11 + build-main-on-macos-ventura: + name: macos main on ventura + runs-on: macos-13 strategy: matrix: - xcode: [ '12.5.1', '13.2.1' ] + xcode: [ '14.3.1', '15.2' ] defaults: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: prerequisites run: brew install autoconf automake libtool pkg-config curl git cmake nasm - name: set up xcode @@ -73,17 +73,17 @@ jobs: - name: print ffbuild logs if: ${{ failure() }} run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-lts-on-macos-bigsur: - name: macos lts on big sur - runs-on: macos-11 + build-lts-on-macos-monterey: + name: macos lts on monterey + runs-on: macos-12 strategy: matrix: - xcode: [ '11.7', '12.4' ] + xcode: [ '13.4.1', '14.2' ] defaults: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: prerequisites run: brew install autoconf automake libtool pkg-config curl git cmake nasm - name: set up xcode diff --git a/.github/workflows/periodic-builds-android.yml b/.github/workflows/periodic-builds-android.yml index d4a690389..d16469680 100644 --- a/.github/workflows/periodic-builds-android.yml +++ b/.github/workflows/periodic-builds-android.yml @@ -16,7 +16,7 @@ jobs: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: ref: ${{ matrix.branches }} - name: set up adopt jdk 17 @@ -25,7 +25,9 @@ jobs: distribution: 'adopt' java-version: '17' - name: prerequisites - run: sudo apt-get install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget autopoint meson ninja-build ragel groff gtk-doc-tools libtasn1-6 + run: sudo apt-get install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget autopoint meson ninja-build ragel groff gtk-doc-tools libtasn1-bin + - name: prerequisites 2 + run: ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --uninstall "cmake;3.10.2.4988404" "cmake;3.18.1" - name: upgrade meson run: pip install meson --upgrade - name: set up android ndk @@ -52,7 +54,7 @@ jobs: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: ref: ${{ matrix.branches }} - name: set up adopt jdk 17 @@ -61,7 +63,9 @@ jobs: distribution: 'adopt' java-version: '17' - name: prerequisites - run: sudo apt-get install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget autopoint meson ninja-build ragel groff gtk-doc-tools libtasn1-6 + run: sudo apt-get install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget autopoint meson ninja-build ragel groff gtk-doc-tools libtasn1-bin + - name: prerequisites 2 + run: ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --uninstall "cmake;3.10.2.4988404" "cmake;3.18.1" - name: upgrade meson run: pip install meson --upgrade - name: set up android ndk diff --git a/.github/workflows/periodic-builds-apple.yml b/.github/workflows/periodic-builds-apple.yml index 7832066ba..6b3b19b9f 100644 --- a/.github/workflows/periodic-builds-apple.yml +++ b/.github/workflows/periodic-builds-apple.yml @@ -5,156 +5,156 @@ on: - cron: '0 1 * * 0' jobs: - build-ios-main-on-macos-monterey: - name: ios main on monterey - runs-on: macos-12 + build-ios-main-on-macos-sonoma: + name: ios main on sonoma + runs-on: macos-14 strategy: matrix: - xcode: [ '13.4.1' ] + xcode: [ '15.4', '16.0' ] branches: [ 'main', 'development' ] defaults: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: ref: ${{ matrix.branches }} - name: prerequisites - run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc-tools libtasn1 --overwrite + run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc libtasn1 --overwrite - name: set up xcode run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh - name: run the build script - run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./ios.sh -x --full --enable-gpl --disable-lib-srt + run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./ios.sh -x --full --enable-gpl --disable-lib-srt --disable-lib-gnutls - name: print build logs if: ${{ always() }} run: cat build.log - name: print ffbuild logs if: ${{ failure() }} run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-ios-lts-on-macos-bigsur: - name: ios lts on big sur - runs-on: macos-11 + build-ios-lts-on-macos-monterey: + name: ios lts on monterey + runs-on: macos-12 strategy: matrix: - xcode: [ '12.4' ] + xcode: [ '13.4.1' ] branches: [ 'main', 'development' ] defaults: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: ref: ${{ matrix.branches }} - name: prerequisites - run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc-tools libtasn1 --overwrite + run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc libtasn1 --overwrite - name: set up xcode run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh - name: run the build script - run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./ios.sh -l --full --enable-gpl --disable-lib-srt + run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./ios.sh -l --full --enable-gpl --disable-lib-srt --disable-lib-gnutls --disable-armv7s --disable-arm64e --disable-i386 - name: print build logs if: ${{ always() }} run: cat build.log - name: print ffbuild logs if: ${{ failure() }} run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-macos-main-on-macos-monterey: - name: macos main on monterey - runs-on: macos-12 + build-macos-main-on-macos-sonoma: + name: macos main on sonoma + runs-on: macos-14 strategy: matrix: - xcode: [ '13.4.1' ] + xcode: [ '15.4', '16.0' ] branches: [ 'main', 'development' ] defaults: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: ref: ${{ matrix.branches }} - name: prerequisites - run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc-tools libtasn1 --overwrite + run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc libtasn1 --overwrite - name: set up xcode run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh - name: run the build script - run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./macos.sh -x --full --enable-gpl --disable-lib-srt + run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./macos.sh -x --full --enable-gpl --disable-lib-srt --disable-lib-gnutls - name: print build logs if: ${{ always() }} run: cat build.log - name: print ffbuild logs if: ${{ failure() }} run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-macos-lts-on-macos-bigsur: - name: macos lts on big sur - runs-on: macos-11 + build-macos-lts-on-macos-monterey: + name: macos lts on monterey + runs-on: macos-12 strategy: matrix: - xcode: [ '12.4' ] + xcode: [ '13.4.1' ] branches: [ 'main', 'development' ] defaults: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: ref: ${{ matrix.branches }} - name: prerequisites - run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc-tools libtasn1 --overwrite + run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc libtasn1 --overwrite - name: set up xcode run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh - name: run the build script - run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./macos.sh -l --full --enable-gpl --disable-lib-srt + run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./macos.sh -l --full --enable-gpl --disable-lib-srt --disable-lib-gnutls - name: print build logs if: ${{ always() }} run: cat build.log - name: print ffbuild logs if: ${{ failure() }} run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-tvos-main-on-macos-monterey: - name: tvos main on monterey - runs-on: macos-12 + build-tvos-main-on-macos-sonoma: + name: tvos main on sonoma + runs-on: macos-14 strategy: matrix: - xcode: [ '13.4.1' ] + xcode: [ '15.4', '16.0' ] branches: [ 'main', 'development' ] defaults: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: ref: ${{ matrix.branches }} - name: prerequisites - run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc-tools libtasn1 --overwrite + run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc libtasn1 --overwrite - name: set up xcode run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh - name: run the build script - run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./tvos.sh -x --full --enable-gpl --disable-lib-srt + run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./tvos.sh -x --full --enable-gpl --disable-lib-srt --disable-lib-gnutls - name: print build logs if: ${{ always() }} run: cat build.log - name: print ffbuild logs if: ${{ failure() }} run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-tvos-lts-on-macos-bigsur: - name: tvos lts on big sur - runs-on: macos-11 + build-tvos-lts-on-macos-monterey: + name: tvos lts on monterey + runs-on: macos-12 strategy: matrix: - xcode: [ '12.4' ] + xcode: [ '13.4.1' ] branches: [ 'main', 'development' ] defaults: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: ref: ${{ matrix.branches }} - name: prerequisites - run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc-tools libtasn1 --overwrite + run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc libtasn1 --overwrite - name: set up xcode run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh - name: run the build script - run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./tvos.sh -l --full --enable-gpl --disable-lib-srt + run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./tvos.sh -l --full --enable-gpl --disable-lib-srt --disable-lib-gnutls - name: print build logs if: ${{ always() }} run: cat build.log diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 171bb1008..c9b592878 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -11,7 +11,7 @@ jobs: issues: write pull-requests: write steps: - - uses: actions/stale@v5 + - uses: actions/stale@v8 with: repo-token: ${{ secrets.GITHUB_TOKEN }} days-before-stale: 60 @@ -21,6 +21,6 @@ jobs: close-pr-message: 'This PR was closed because it has been stalled for 7 days with no activity.' stale-issue-label: 'no-issue-activity' stale-pr-label: 'no-pr-activity' - exempt-issue-labels: 'enhancement,unreleased' + exempt-issue-labels: 'enhancement,ffmpeg-bug,unreleased' exempt-pr-labels: 'enhancement,unreleased' exempt-all-assignees: 'true' diff --git a/.github/workflows/tvos-build-scripts.yml b/.github/workflows/tvos-build-scripts.yml index 116994281..eaee3abd9 100644 --- a/.github/workflows/tvos-build-scripts.yml +++ b/.github/workflows/tvos-build-scripts.yml @@ -27,17 +27,17 @@ on: - 'tvos.sh' jobs: - build-main-on-macos-monterey: - name: tvos main on monterey - runs-on: macos-12 + build-main-on-macos-sonoma: + name: tvos main on sonoma + runs-on: macos-14 strategy: matrix: - xcode: [ '13.4.1', '14.0.1' ] + xcode: [ '15.4', '16.0' ] defaults: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: prerequisites run: brew install autoconf automake libtool pkg-config curl git cmake nasm - name: set up xcode @@ -50,17 +50,17 @@ jobs: - name: print ffbuild logs if: ${{ failure() }} run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-main-on-macos-bigsur: - name: tvos main on big sur - runs-on: macos-11 + build-main-on-macos-ventura: + name: tvos main on ventura + runs-on: macos-13 strategy: matrix: - xcode: [ '12.5.1', '13.2.1' ] + xcode: [ '14.3.1', '15.2' ] defaults: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: prerequisites run: brew install autoconf automake libtool pkg-config curl git cmake nasm - name: set up xcode @@ -73,17 +73,17 @@ jobs: - name: print ffbuild logs if: ${{ failure() }} run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' - build-lts-on-macos-bigsur: - name: tvos lts on big sur - runs-on: macos-11 + build-lts-on-macos-monterey: + name: tvos lts on monterey + runs-on: macos-12 strategy: matrix: - xcode: [ '11.7', '12.4' ] + xcode: [ '13.4.1', '14.2' ] defaults: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: prerequisites run: brew install autoconf automake libtool pkg-config curl git cmake nasm - name: set up xcode diff --git a/README.md b/README.md index dcffc03b9..b9299b4aa 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,30 @@ # FFmpegKit ![GitHub release](https://img.shields.io/badge/release-v6.0-blue.svg) ![Maven Central](https://img.shields.io/maven-central/v/com.arthenica/ffmpeg-kit-min) ![CocoaPods](https://img.shields.io/cocoapods/v/ffmpeg-kit-ios-min) ![pub](https://img.shields.io/pub/v/ffmpeg_kit_flutter.svg) ![npm](https://img.shields.io/npm/v/ffmpeg-kit-react-native.svg) +## Notice +FFmpegKit has been officially retired. There will be no further `ffmpeg-kit` releases. + +See [Saying Goodbye to FFmpegKit @ medium](https://medium.com/@tanersener/saying-goodbye-to-ffmpegkit-33ae939767e1) to learn why we made this decision. + +All previously released `ffmpeg-kit` binaries will be removed according to the following schedule. + +| FFmpegKit Version | Available Until | +|:-----------------:|:------------------:| +| Less than 6.0 | February 1st, 2025 | +| 6.0 | April 1st, 2025 | + +Thank you for your support and interest in this project. + +If you're looking for a replacement, please check out the community-maintained forks available through the package managers below. + +| Platform | +|:-------------------------------------------------------:| +| [Android](https://central.sonatype.com/search?q=ffmpeg+kit) | +| [Flutter](https://pub.dev/packages?q=ffmpeg+kit) | +| [React Native](https://www.npmjs.com/search?q=ffmpeg%20kit) | + -`FFmpegKit` is a collection of tools to use `FFmpeg` in `Android`, `iOS`, `Linux`, `macOS`, `tvOS`, `Flutter` and `React Native` applications. +`FFmpegKit` is a collection of tools to use `FFmpeg`1 in `Android`, `iOS`, `Linux`, `macOS`, `tvOS`, `Flutter` and `React Native` applications. It includes scripts to build `FFmpeg` native libraries, a wrapper library to run `FFmpeg`/`FFprobe` commands in applications and 8 prebuilt binary packages available at [Github](https://github.com/arthenica/ffmpeg-kit/releases), @@ -124,23 +146,28 @@ the same `FFmpeg` release branch. `dev` part in the version string indicates that `FFmpeg` source code is cloned from the `FFmpeg` `master` branch and the exact version number of `FFmpeg` is obtained using the `git describe --tags` command. -| Platforms | FFmpegKit Version | FFmpeg Version | Release Date | -|:----------------:|:-----------------------------------------------------------------------------------:|:--------------:|:------------:| -| React Native | [6.0.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v6.0.0) | 6.0.0 | Aug 27, 2023 | -| Flutter | [6.0.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v6.0.0) | 6.0.0 | Aug 27, 2023 | -| Android
Apple | [6.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/v6.0) | 6.0 | Aug 21, 2023 | -| React Native | [5.1.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v5.1.0) | 5.1.2 | Oct 02, 2022 | -| Flutter | [5.1.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v5.1.0) | 5.1.2 | Oct 02, 2022 | -| Android
Apple | [5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v5.1) | 5.1.2 | Sep 29, 2022 | -| React Native | [4.5.2](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.2) | 4.5-dev-3393 | May 25, 2022 | -| Flutter | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v4.5.1) | 4.5-dev-3393 | Jan 02, 2022 | -| React Native | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.1) | 4.5-dev-3393 | Jan 02, 2022 | -| Android | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5.1) | 4.5-dev-3393 | Jan 01, 2022 | -| Apple | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5.1) | 4.5-dev-3393 | Dec 30, 2021 | -| Flutter | [4.5.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v4.5.0) | 4.5-dev-2008 | Oct 05, 2021 | -| React Native | [4.5.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.0) | 4.5-dev-2008 | Oct 01, 2021 | -| Android
Apple | [4.5](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5) | 4.5-dev-2008 | Sep 18, 2021 | -| Android
Apple | [4.4](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.4) | 4.4-dev-3015 | Mar 03, 2021 | +| Platforms | FFmpegKit Version | FFmpeg Version | Release Date | +|:----------------:|:---------------------------------------------------------------------------------:|:--------------:|:------------:| +| Flutter | [6.0.3](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v6.0.3) | 6.0 | Sep 19, 2023 | +| React Native | [6.0.2](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v6.0.2) | 6.0 | Sep 19, 2023 | +| Flutter | [6.0.2](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v6.0.2) | 6.0 | Sep 03, 2023 | +| React Native | [6.0.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v6.0.1) | 6.0 | Sep 03, 2023 | +| Flutter | [6.0.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v6.0.1) | 6.0 | Sep 03, 2023 | +| React Native | [6.0.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v6.0.0) | 6.0 | Aug 27, 2023 | +| Flutter | [6.0.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v6.0.0) | 6.0 | Aug 27, 2023 | +| Android
Apple | [6.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/v6.0) | 6.0 | Aug 21, 2023 | +| React Native | [5.1.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v5.1.0) | 5.1.2 | Oct 02, 2022 | +| Flutter | [5.1.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v5.1.0) | 5.1.2 | Oct 02, 2022 | +| Android
Apple | [5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v5.1) | 5.1.2 | Sep 29, 2022 | +| React Native | [4.5.2](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.2) | 4.5-dev-3393 | May 25, 2022 | +| Flutter | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v4.5.1) | 4.5-dev-3393 | Jan 02, 2022 | +| React Native | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.1) | 4.5-dev-3393 | Jan 02, 2022 | +| Android | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5.1) | 4.5-dev-3393 | Jan 01, 2022 | +| Apple | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5.1) | 4.5-dev-3393 | Dec 30, 2021 | +| Flutter | [4.5.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v4.5.0) | 4.5-dev-2008 | Oct 05, 2021 | +| React Native | [4.5.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.0) | 4.5-dev-2008 | Oct 01, 2021 | +| Android
Apple | [4.5](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5) | 4.5-dev-2008 | Sep 18, 2021 | +| Android
Apple | [4.4](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.4) | 4.4-dev-3015 | Mar 03, 2021 | ### 11. LTS Releases @@ -214,11 +241,15 @@ that you seek legal advice first. See [FFmpeg Patent Mini-FAQ](https://ffmpeg.or distribute that library, then you are subject to pay MPEG LA licensing fees. Refer to [OpenH264 FAQ](https://www.openh264.org/faq.html) page for the details. -### 16. Contributing +### 16. Trademarks + +1 `FFmpeg` is a trademark of [Fabrice Bellard](http://www.bellard.org/). `FFmpegKit` is an independent project and not affiliated with the `FFmpeg` trademark holder. + +### 17. Contributing See our [CONTRIBUTING](CONTRIBUTING.md) guide. -### 17. See Also +### 18. See Also - [FFmpeg API Documentation](https://ffmpeg.org/doxygen/4.0/index.html) - [FFmpeg Wiki](https://trac.ffmpeg.org/wiki/WikiStart) diff --git a/android/README.md b/android/README.md index 95186c93f..b252cb47e 100644 --- a/android/README.md +++ b/android/README.md @@ -77,7 +77,7 @@ All libraries created by `android.sh` can be found under the `prebuilt` director } dependencies { - implementation 'com.arthenica:ffmpeg-kit-full:6.0' + implementation 'com.arthenica:ffmpeg-kit-full:6.0-2' } ``` diff --git a/android/ffmpeg-kit-android-lib/build.gradle b/android/ffmpeg-kit-android-lib/build.gradle index 0cdbe1de3..f1dd6ed19 100644 --- a/android/ffmpeg-kit-android-lib/build.gradle +++ b/android/ffmpeg-kit-android-lib/build.gradle @@ -49,6 +49,15 @@ android { } } +task javadoc(type: Javadoc) { + title = 'FFmpegKit' + destinationDir = file("${projectDir}/../../docs/android/javadoc") + classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + source = android.sourceSets.main.java.srcDirs + configurations.implementation.setCanBeResolved(true) + classpath += configurations.implementation +} + dependencies { api 'com.arthenica:smart-exception-java:0.2.1' testImplementation "androidx.test.ext:junit:1.1.5" diff --git a/android/ffmpeg-kit-android-lib/src/main/cpp/fftools_ffmpeg.c b/android/ffmpeg-kit-android-lib/src/main/cpp/fftools_ffmpeg.c index 19024cbaa..28aa83a86 100644 --- a/android/ffmpeg-kit-android-lib/src/main/cpp/fftools_ffmpeg.c +++ b/android/ffmpeg-kit-android-lib/src/main/cpp/fftools_ffmpeg.c @@ -32,6 +32,10 @@ * * ffmpeg-kit changes by ARTHENICA LTD * + * 09.2023 + * -------------------------------------------------------- + * - forward_report method signature accepts pts to calculate the time + * * 07.2023 * -------------------------------------------------------- * - FFmpeg 6.0 changes migrated @@ -1725,11 +1729,19 @@ static void print_final_stats(int64_t total_size) } } -static void forward_report(uint64_t frame_number, float fps, float quality, int64_t total_size, int seconds, int microseconds, double bitrate, double speed) +static void forward_report(uint64_t frame_number, float fps, float quality, int64_t total_size, int64_t pts, double bitrate, double speed) { // FORWARD DATA if (report_callback != NULL) { - report_callback(frame_number, fps, quality, total_size, ((double)seconds*1000) + ((double)microseconds)/1000, bitrate, speed); + double milliseconds = 0; + if (pts != AV_NOPTS_VALUE) { + milliseconds = ((double)FFABS64U(pts)) / 1000; + } + if (pts < 0) { + report_callback(frame_number, fps, quality, total_size, 0 - milliseconds, bitrate, speed); + } else { + report_callback(frame_number, fps, quality, total_size, milliseconds, bitrate, speed); + } } } @@ -1864,11 +1876,7 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti speed = pts != AV_NOPTS_VALUE && t != 0.0 ? (double)pts / AV_TIME_BASE / t : -1; // FFmpegKit forward report - if (pts == AV_NOPTS_VALUE) { - forward_report(frame_number, fps, q, total_size, 0, 0, bitrate, speed); - } else { - forward_report(frame_number, fps, q, total_size, secs, us, bitrate, speed); - } + forward_report(frame_number, fps, q, total_size, pts, bitrate, speed); if (local_print_stats) { if (total_size < 0) av_bprintf(&buf, "size=N/A time="); diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java index e9446fecd..163fb5533 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java @@ -36,7 +36,7 @@ public class NativeLoader { static final String[] FFMPEG_LIBRARIES = {"avutil", "swscale", "swresample", "avcodec", "avformat", "avfilter", "avdevice"}; - static final String[] LIBRARIES_LINKED_WITH_CXX = {"chromaprint", "openh264", "rubberband", "snappy", "srt", "tesseract", "x265", "zimg"}; + static final String[] LIBRARIES_LINKED_WITH_CXX = {"chromaprint", "openh264", "rubberband", "snappy", "srt", "tesseract", "x265", "zimg", "libilbc"}; static boolean isTestModeDisabled() { return (System.getProperty("enable.ffmpeg.kit.test.mode") == null); diff --git a/apple/src/fftools_ffmpeg.c b/apple/src/fftools_ffmpeg.c index 19024cbaa..28aa83a86 100644 --- a/apple/src/fftools_ffmpeg.c +++ b/apple/src/fftools_ffmpeg.c @@ -32,6 +32,10 @@ * * ffmpeg-kit changes by ARTHENICA LTD * + * 09.2023 + * -------------------------------------------------------- + * - forward_report method signature accepts pts to calculate the time + * * 07.2023 * -------------------------------------------------------- * - FFmpeg 6.0 changes migrated @@ -1725,11 +1729,19 @@ static void print_final_stats(int64_t total_size) } } -static void forward_report(uint64_t frame_number, float fps, float quality, int64_t total_size, int seconds, int microseconds, double bitrate, double speed) +static void forward_report(uint64_t frame_number, float fps, float quality, int64_t total_size, int64_t pts, double bitrate, double speed) { // FORWARD DATA if (report_callback != NULL) { - report_callback(frame_number, fps, quality, total_size, ((double)seconds*1000) + ((double)microseconds)/1000, bitrate, speed); + double milliseconds = 0; + if (pts != AV_NOPTS_VALUE) { + milliseconds = ((double)FFABS64U(pts)) / 1000; + } + if (pts < 0) { + report_callback(frame_number, fps, quality, total_size, 0 - milliseconds, bitrate, speed); + } else { + report_callback(frame_number, fps, quality, total_size, milliseconds, bitrate, speed); + } } } @@ -1864,11 +1876,7 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti speed = pts != AV_NOPTS_VALUE && t != 0.0 ? (double)pts / AV_TIME_BASE / t : -1; // FFmpegKit forward report - if (pts == AV_NOPTS_VALUE) { - forward_report(frame_number, fps, q, total_size, 0, 0, bitrate, speed); - } else { - forward_report(frame_number, fps, q, total_size, secs, us, bitrate, speed); - } + forward_report(frame_number, fps, q, total_size, pts, bitrate, speed); if (local_print_stats) { if (total_size < 0) av_bprintf(&buf, "size=N/A time="); diff --git a/docs/index.md b/docs/index.md index 26f674f22..288073dd1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,5 +1,15 @@ # FFmpegKit +## Notice +FFmpegKit has been officially retired. There will be no further `ffmpeg-kit` releases. All previously released `ffmpeg-kit` binaries will be removed according to the following schedule. Thank you for your support and interest in this project. + +Thank you for your support and contributions over the course of this project. + +| FFmpegKit Version | Available Until | +|:-----------------:|:------------------:| +| Less than 6.0 | February 1st, 2025 | +| 6.0 | April 1st, 2025 | + `FFmpegKit` is a collection of tools to use `FFmpeg` in `Android`, `iOS`, `Linux`, `macOS`, `tvOS`, `Flutter` and `React Native` applications. @@ -114,21 +124,26 @@ the exact version number of `FFmpeg` is obtained using the `git describe --tags` | Platforms | FFmpegKit Version | FFmpeg Version | Release Date | |:----------------:|:-----------------------------------------------------------------------------------:|:--------------:|:------------:| -| React Native | [6.0.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v6.0.0) | 6.0.0 | Aug 27, 2023 | -| Flutter | [6.0.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v6.0.0) | 6.0.0 | Aug 27, 2023 | -| Android
Apple | [6.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/v6.0) | 6.0 | Aug 21, 2023 | -| React Native | [5.1.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v5.1.0) | 5.1.2 | Oct 02, 2022 | -| Flutter | [5.1.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v5.1.0) | 5.1.2 | Oct 02, 2022 | -| Android
Apple | [5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v5.1) | 5.1.2 | Sep 29, 2022 | -| React Native | [4.5.2](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.2) | 4.5-dev-3393 | May 25, 2022 | -| Flutter | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v4.5.1) | 4.5-dev-3393 | Jan 02, 2022 | -| React Native | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.1) | 4.5-dev-3393 | Jan 02, 2022 | -| Android | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5.1) | 4.5-dev-3393 | Jan 01, 2022 | -| Apple | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5.1) | 4.5-dev-3393 | Dec 30, 2021 | -| Flutter | [4.5.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v4.5.0) | 4.5-dev-2008 | Oct 05, 2021 | -| React Native | [4.5.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.0) | 4.5-dev-2008 | Oct 01, 2021 | -| Android
Apple | [4.5](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5) | 4.5-dev-2008 | Sep 18, 2021 | -| Android
Apple | [4.4](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.4) | 4.4-dev-3015 | Mar 03, 2021 | +| Flutter | [6.0.3](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v6.0.3) | 6.0 | Sep 19, 2023 | +| React Native | [6.0.2](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v6.0.2) | 6.0 | Sep 19, 2023 | +| Flutter | [6.0.2](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v6.0.2) | 6.0 | Sep 03, 2023 | +| React Native | [6.0.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v6.0.1) | 6.0 | Sep 03, 2023 | +| Flutter | [6.0.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v6.0.1) | 6.0 | Sep 03, 2023 | +| React Native | [6.0.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v6.0.0) | 6.0 | Aug 27, 2023 | +| Flutter | [6.0.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v6.0.0) | 6.0 | Aug 27, 2023 | +| Android
Apple | [6.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/v6.0) | 6.0 | Aug 21, 2023 | +| React Native | [5.1.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v5.1.0) | 5.1.2 | Oct 02, 2022 | +| Flutter | [5.1.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v5.1.0) | 5.1.2 | Oct 02, 2022 | +| Android
Apple | [5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v5.1) | 5.1.2 | Sep 29, 2022 | +| React Native | [4.5.2](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.2) | 4.5-dev-3393 | May 25, 2022 | +| Flutter | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v4.5.1) | 4.5-dev-3393 | Jan 02, 2022 | +| React Native | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.1) | 4.5-dev-3393 | Jan 02, 2022 | +| Android | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5.1) | 4.5-dev-3393 | Jan 01, 2022 | +| Apple | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5.1) | 4.5-dev-3393 | Dec 30, 2021 | +| Flutter | [4.5.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v4.5.0) | 4.5-dev-2008 | Oct 05, 2021 | +| React Native | [4.5.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.0) | 4.5-dev-2008 | Oct 01, 2021 | +| Android
Apple | [4.5](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5) | 4.5-dev-2008 | Sep 18, 2021 | +| Android
Apple | [4.4](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.4) | 4.4-dev-3015 | Mar 03, 2021 | ### 11. LTS Releases diff --git a/flutter/flutter/CHANGELOG.md b/flutter/flutter/CHANGELOG.md index 1879bf079..a67101556 100644 --- a/flutter/flutter/CHANGELOG.md +++ b/flutter/flutter/CHANGELOG.md @@ -1,3 +1,27 @@ +## 6.0.3 +- Bug fix release based on native v6.0 +- Fixes issue 825 + +## 6.0.3-LTS +- Bug fix release based on native v6.0.LTS +- Fixes issue 825 + +## 6.0.2 +- Bug fix release based on native v6.0 +- Fixes version information in podspec and gradle files + +## 6.0.2-LTS +- Bug fix release based on native v6.0.LTS +- Fixes version information in podspec and gradle files + +## 6.0.1 +- Bug fix release based on native v6.0 +- Fixes issues 804 and 809 + +## 6.0.1-LTS +- Bug fix release based on native v6.0.LTS +- Fixes issues 804 and 809 + ## 6.0.0 - Feature release based on native v6.0 - Renames StreamInformation.getFullCodec() method to getCodecLong() diff --git a/flutter/flutter/README.md b/flutter/flutter/README.md index 63f26029a..e9f4825b4 100644 --- a/flutter/flutter/README.md +++ b/flutter/flutter/README.md @@ -35,7 +35,7 @@ Add `ffmpeg_kit_flutter` as a dependency in your `pubspec.yaml file`. ```yaml dependencies: - ffmpeg_kit_flutter: 6.0.0 + ffmpeg_kit_flutter: 6.0.3 ``` #### 2.1 Packages @@ -58,7 +58,7 @@ using the following dependency format. ```yaml dependencies: - ffmpeg_kit_flutter_: 6.0.0 + ffmpeg_kit_flutter_: 6.0.3 ``` Note that hyphens in the package name must be replaced with underscores. Additionally, do not forget to use the package @@ -70,7 +70,7 @@ In order to install the `LTS` variant, append `-LTS` to the version you have for ```yaml dependencies: - ffmpeg_kit_flutter: 6.0.0-LTS + ffmpeg_kit_flutter: 6.0.3-LTS ``` #### 2.4 LTS Releases diff --git a/flutter/flutter/analysis_options.yaml b/flutter/flutter/analysis_options.yaml index a5dd89fc5..228b0f642 100644 --- a/flutter/flutter/analysis_options.yaml +++ b/flutter/flutter/analysis_options.yaml @@ -1,8 +1,4 @@ analyzer: - enable-experiment: - - non-nullable - strong-mode: - implicit-dynamic: false errors: missing_required_param: warning missing_return: warning @@ -27,10 +23,8 @@ linter: - file_names - hash_and_equals - implementation_imports - - iterable_contains_unrelated_type - join_return_with_assignment - - lines_longer_than_80_chars - - list_remove_unrelated_type + - collection_methods_unrelated_type - missing_whitespace_between_adjacent_strings - no_runtimeType_toString - non_constant_identifier_names diff --git a/flutter/flutter/android/build.gradle b/flutter/flutter/android/build.gradle index 3f04b74a5..6f049bae5 100644 --- a/flutter/flutter/android/build.gradle +++ b/flutter/flutter/android/build.gradle @@ -29,8 +29,8 @@ android { defaultConfig { minSdkVersion 24 targetSdkVersion 33 - versionCode 600 - versionName "6.0.0" + versionCode 603 + versionName "6.0.3" } buildTypes { @@ -49,5 +49,5 @@ android { dependencies { implementation 'androidx.annotation:annotation:1.5.0' - implementation 'com.arthenica:ffmpeg-kit-https:6.0' + implementation 'com.arthenica:ffmpeg-kit-https:6.0-2' } diff --git a/flutter/flutter/ios/ffmpeg_kit_flutter.podspec b/flutter/flutter/ios/ffmpeg_kit_flutter.podspec index 0d6b034e2..04ba28d51 100644 --- a/flutter/flutter/ios/ffmpeg_kit_flutter.podspec +++ b/flutter/flutter/ios/ffmpeg_kit_flutter.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'ffmpeg_kit_flutter' - s.version = '6.0.0' + s.version = '6.0.3' s.summary = 'FFmpeg Kit for Flutter' s.description = 'A Flutter plugin for running FFmpeg and FFprobe commands.' s.homepage = 'https://github.com/arthenica/ffmpeg-kit' diff --git a/flutter/flutter/lib/abstract_session.dart b/flutter/flutter/lib/abstract_session.dart index 4cbb52189..02f15db95 100644 --- a/flutter/flutter/lib/abstract_session.dart +++ b/flutter/flutter/lib/abstract_session.dart @@ -64,7 +64,7 @@ abstract class AbstractSession extends Session { /// /// Returns FFmpeg session created. static Future createFFmpegSession(List argumentsArray, - [LogRedirectionStrategy? logRedirectionStrategy = null]) async { + [LogRedirectionStrategy? logRedirectionStrategy]) async { try { await FFmpegKitConfig.init(); final Map? nativeSession = @@ -118,7 +118,7 @@ abstract class AbstractSession extends Session { /// Returns FFprobe session created. static Future createFFprobeSession( List argumentsArray, - [LogRedirectionStrategy? logRedirectionStrategy = null]) async { + [LogRedirectionStrategy? logRedirectionStrategy]) async { try { await FFmpegKitConfig.init(); final Map? nativeSession = diff --git a/flutter/flutter/lib/src/ffmpeg_kit_factory.dart b/flutter/flutter/lib/src/ffmpeg_kit_factory.dart index d2c55c39b..936b14d32 100644 --- a/flutter/flutter/lib/src/ffmpeg_kit_factory.dart +++ b/flutter/flutter/lib/src/ffmpeg_kit_factory.dart @@ -99,7 +99,7 @@ class FFmpegKitFactory { } } - static String getVersion() => "6.0.0"; + static String getVersion() => "6.0.3"; static LogRedirectionStrategy? getLogRedirectionStrategy(int? sessionId) => logRedirectionStrategyMap[sessionId]; diff --git a/flutter/flutter/macos/ffmpeg_kit_flutter.podspec b/flutter/flutter/macos/ffmpeg_kit_flutter.podspec index ae29e06ed..899a9b1a3 100644 --- a/flutter/flutter/macos/ffmpeg_kit_flutter.podspec +++ b/flutter/flutter/macos/ffmpeg_kit_flutter.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'ffmpeg_kit_flutter' - s.version = '6.0.0' + s.version = '6.0.3' s.summary = 'FFmpeg Kit for Flutter' s.description = 'A Flutter plugin for running FFmpeg and FFprobe commands.' s.homepage = 'https://github.com/arthenica/ffmpeg-kit' diff --git a/flutter/flutter/pubspec.yaml b/flutter/flutter/pubspec.yaml index 08421ae90..45782aa8f 100644 --- a/flutter/flutter/pubspec.yaml +++ b/flutter/flutter/pubspec.yaml @@ -3,7 +3,7 @@ description: FFmpeg Kit for Flutter. Supports Android, iOS and macOS platforms. repository: https://github.com/arthenica/ffmpeg-kit issue_tracker: https://github.com/arthenica/ffmpeg-kit/issues homepage: https://github.com/arthenica/ffmpeg-kit -version: 6.0.0 +version: 6.0.3 environment: sdk: ">=2.12.0 <4.0.0" diff --git a/linux/src/fftools_ffmpeg.c b/linux/src/fftools_ffmpeg.c index 19024cbaa..28aa83a86 100644 --- a/linux/src/fftools_ffmpeg.c +++ b/linux/src/fftools_ffmpeg.c @@ -32,6 +32,10 @@ * * ffmpeg-kit changes by ARTHENICA LTD * + * 09.2023 + * -------------------------------------------------------- + * - forward_report method signature accepts pts to calculate the time + * * 07.2023 * -------------------------------------------------------- * - FFmpeg 6.0 changes migrated @@ -1725,11 +1729,19 @@ static void print_final_stats(int64_t total_size) } } -static void forward_report(uint64_t frame_number, float fps, float quality, int64_t total_size, int seconds, int microseconds, double bitrate, double speed) +static void forward_report(uint64_t frame_number, float fps, float quality, int64_t total_size, int64_t pts, double bitrate, double speed) { // FORWARD DATA if (report_callback != NULL) { - report_callback(frame_number, fps, quality, total_size, ((double)seconds*1000) + ((double)microseconds)/1000, bitrate, speed); + double milliseconds = 0; + if (pts != AV_NOPTS_VALUE) { + milliseconds = ((double)FFABS64U(pts)) / 1000; + } + if (pts < 0) { + report_callback(frame_number, fps, quality, total_size, 0 - milliseconds, bitrate, speed); + } else { + report_callback(frame_number, fps, quality, total_size, milliseconds, bitrate, speed); + } } } @@ -1864,11 +1876,7 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti speed = pts != AV_NOPTS_VALUE && t != 0.0 ? (double)pts / AV_TIME_BASE / t : -1; // FFmpegKit forward report - if (pts == AV_NOPTS_VALUE) { - forward_report(frame_number, fps, q, total_size, 0, 0, bitrate, speed); - } else { - forward_report(frame_number, fps, q, total_size, secs, us, bitrate, speed); - } + forward_report(frame_number, fps, q, total_size, pts, bitrate, speed); if (local_print_stats) { if (total_size < 0) av_bprintf(&buf, "size=N/A time="); diff --git a/react-native/android/build.gradle b/react-native/android/build.gradle index 97f6a366b..2909280ab 100644 --- a/react-native/android/build.gradle +++ b/react-native/android/build.gradle @@ -35,8 +35,8 @@ android { defaultConfig { minSdkVersion safeExtGet('ffmpegKitPackage', 'https').contains("-lts") ? 16 : 24 targetSdkVersion 33 - versionCode 600 - versionName "6.0.0" + versionCode 602 + versionName "6.0.2" } buildTypes { diff --git a/react-native/android/gradle.properties b/react-native/android/gradle.properties index 06db36990..a9120281d 100644 --- a/react-native/android/gradle.properties +++ b/react-native/android/gradle.properties @@ -1,3 +1,3 @@ android.useAndroidX=true -ffmpegKit.android.main.version=6.0 -ffmpegKit.android.lts.version=6.0 +ffmpegKit.android.main.version=6.0-2 +ffmpegKit.android.lts.version=6.0-2 diff --git a/react-native/package.json b/react-native/package.json index b39a4f99c..e39cec33e 100644 --- a/react-native/package.json +++ b/react-native/package.json @@ -1,6 +1,6 @@ { "name": "ffmpeg-kit-react-native", - "version": "6.0.0", + "version": "6.0.2", "description": "FFmpeg Kit for React Native", "main": "src/index", "types": "src/index.d.ts", diff --git a/react-native/src/index.js b/react-native/src/index.js index 3144750b8..3789aa87d 100644 --- a/react-native/src/index.js +++ b/react-native/src/index.js @@ -1611,7 +1611,7 @@ class FFmpegKitFactory { } static getVersion() { - return "6.0.0"; + return "6.0.2"; } static getLogRedirectionStrategy(sessionId) { diff --git a/scripts/android/libiconv.sh b/scripts/android/libiconv.sh index 15535c7c6..545c134a2 100755 --- a/scripts/android/libiconv.sh +++ b/scripts/android/libiconv.sh @@ -1,8 +1,17 @@ #!/bin/bash -# INIT SUBMODULES +# FIX HARD-CODED PATHS ${SED_INLINE} 's|git://git.savannah.gnu.org|https://github.com/arthenica|g' "${BASEDIR}"/src/"${LIB_NAME}"/.gitmodules || return 1 -./gitsub.sh pull || return 1 +ln -s -f $(which aclocal) ${BASEDIR}/.tmp/aclocal-1.16 +ln -s -f $(which automake) ${BASEDIR}/.tmp/automake-1.16 +PATH="${BASEDIR}/.tmp":$PATH + +if [[ ! -d "${BASEDIR}"/src/"${LIB_NAME}"/gnulib ]]; then + + # INIT SUBMODULES + ./gitsub.sh pull || return 1 + ./gitsub.sh checkout gnulib 485d983b7795548fb32b12fbe8370d40789e88c4 || return 1 +fi # ALWAYS CLEAN THE PREVIOUS BUILD make distclean 2>/dev/null 1>/dev/null diff --git a/scripts/apple/libogg.sh b/scripts/apple/libogg.sh index 13f00515f..5e325643a 100755 --- a/scripts/apple/libogg.sh +++ b/scripts/apple/libogg.sh @@ -8,9 +8,6 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libogg} -e autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi -# FIX INCLUDE PATHS -${SED_INLINE} 's/sys\/types/stdint/g' ${BASEDIR}/src/libogg/include/ogg/os_types.h - ./configure \ --prefix="${LIB_INSTALL_PREFIX}" \ --with-pic \ diff --git a/scripts/apple/libpng.sh b/scripts/apple/libpng.sh index 2c36e66ff..46e73f06e 100755 --- a/scripts/apple/libpng.sh +++ b/scripts/apple/libpng.sh @@ -24,6 +24,13 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libpng} -e autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi +# WORKAROUND TO FIX ZLIB VERSION DETECTED - OCCURS ON XCODE 14.3.1 +if [[ -n "$DETECTED_IOS_SDK_VERSION" && $(compare_versions "$DETECTED_IOS_SDK_VERSION" "16.4") -ge 0 ]] || + [[ -n "$DETECTED_MACOS_SDK_VERSION" && $(compare_versions "$DETECTED_MACOS_SDK_VERSION" "13.3") -eq 0 ]] || + [[ -n "$DETECTED_TVOS_SDK_VERSION" && $(compare_versions "$DETECTED_TVOS_SDK_VERSION" "16.4") -ge 0 ]]; then + ${SED_INLINE} "s|ZLIB_VERNUM default .*|ZLIB_VERNUM default 0|g" "${BASEDIR}"/src/"${LIB_NAME}"/scripts/pnglibconf.dfa +fi + ./configure \ --prefix="${LIB_INSTALL_PREFIX}" \ --with-pic \ diff --git a/scripts/apple/libvorbis.sh b/scripts/apple/libvorbis.sh index 00dbee7a1..56a99504f 100755 --- a/scripts/apple/libvorbis.sh +++ b/scripts/apple/libvorbis.sh @@ -10,12 +10,9 @@ ${SED_INLINE} 's/\-mno-ieee-fp//g' "${BASEDIR}"/src/"${LIB_NAME}"/configure.ac | # ALWAYS REGENERATE BUILD FILES - NECESSARY TO APPLY THE WORKAROUNDS autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 -if [[ ${FFMPEG_KIT_BUILD_TYPE} != "macos" ]]; then - - # WORKAROUND TO REMOVE -force_cpusubtype_ALL FLAG DUE TO THE FOLLOWING ERROR - # ld: -force_cpusubtype_ALL and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together - ${SED_INLINE} 's/-force_cpusubtype_ALL//g' ${BASEDIR}/src/${LIB_NAME}/configure -fi +# WORKAROUND TO REMOVE -force_cpusubtype_ALL FLAG DUE TO THE FOLLOWING ERROR +# ld: -force_cpusubtype_ALL and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together +${SED_INLINE} 's/-force_cpusubtype_ALL//g' ${BASEDIR}/src/${LIB_NAME}/configure PKG_CONFIG= ./configure \ --prefix="${LIB_INSTALL_PREFIX}" \ diff --git a/scripts/function-android.sh b/scripts/function-android.sh index 36415b4ab..0e4b78a75 100755 --- a/scripts/function-android.sh +++ b/scripts/function-android.sh @@ -70,7 +70,7 @@ build_application_mk() { local LTS_BUILD_FLAG="-DFFMPEG_KIT_LTS " fi - if [[ ${ENABLED_LIBRARIES[$LIBRARY_X265]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_TESSERACT]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_OPENH264]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_SNAPPY]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_RUBBERBAND]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_ZIMG]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_SRT]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_CHROMAPRINT]} -eq 1 ]] || [[ -n ${CUSTOM_LIBRARY_USES_CPP} ]]; then + if [[ ${ENABLED_LIBRARIES[$LIBRARY_X265]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_TESSERACT]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_OPENH264]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_SNAPPY]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_RUBBERBAND]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_ZIMG]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_SRT]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_CHROMAPRINT]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_LIBILBC]} -eq 1 ]] || [[ -n ${CUSTOM_LIBRARY_USES_CPP} ]]; then local APP_STL="c++_shared" else local APP_STL="none" @@ -404,9 +404,9 @@ get_common_linked_libraries() { # SUPPORTED ON API LEVEL 24 AND LATER if [[ ${API} -ge 24 ]]; then - echo "-lc -lm -ldl -llog -lcamera2ndk -lmediandk ${COMMON_LIBRARY_PATHS}" + echo "-lc -lm -ldl -llog -landroid -lcamera2ndk -lmediandk ${COMMON_LIBRARY_PATHS}" else - echo "-lc -lm -ldl -llog ${COMMON_LIBRARY_PATHS}" + echo "-lc -lm -ldl -llog -landroid ${COMMON_LIBRARY_PATHS}" echo -e "INFO: Building ffmpeg without native camera API which is not supported on Android API Level ${API}\n" 1>>"${BASEDIR}"/build.log 2>&1 fi ;; diff --git a/scripts/function-apple.sh b/scripts/function-apple.sh index a45b8b9ee..28238d9e9 100755 --- a/scripts/function-apple.sh +++ b/scripts/function-apple.sh @@ -1287,6 +1287,15 @@ EOF create_libiconv_system_package_config() { local LIB_ICONV_VERSION=$(grep '_LIBICONV_VERSION' "${SDK_PATH}"/usr/include/iconv.h | grep -Eo '0x.*' | grep -Eo '.* ') + # AFTER XCODE 15.0, libcharset DOES NOT CONTAIN ALL ARCHITECTURES WE SUPPORT + if [[ -n "$DETECTED_IOS_SDK_VERSION" && $(compare_versions "$DETECTED_IOS_SDK_VERSION" "17.0") -ge 0 ]] || + [[ -n "$DETECTED_MACOS_SDK_VERSION" && $(compare_versions "$DETECTED_MACOS_SDK_VERSION" "14.0") -ge 0 ]] || + [[ -n "$DETECTED_TVOS_SDK_VERSION" && $(compare_versions "$DETECTED_TVOS_SDK_VERSION" "17.0") -ge 0 ]]; then + local _REQUIRES_LIBS="-liconv" + else + local _REQUIRES_LIBS="-liconv -lcharset" + fi + cat >"${INSTALL_PKG_CONFIG_DIR}/libiconv.pc" <