From 56af2f1871c0ab95828fdc44333406791fbd736c Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Fri, 5 Mar 2021 03:03:02 +0000 Subject: [PATCH 1/3] fix search and replace rules in macos release script --- tools/release/macos.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/release/macos.sh b/tools/release/macos.sh index 0ac29c0..1df773d 100755 --- a/tools/release/macos.sh +++ b/tools/release/macos.sh @@ -26,9 +26,9 @@ create_package() { sed -i '' "s/DESCRIPTION/${PACKAGE_DESCRIPTION}/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/\.framework/\.xcframework/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/-framework/-xcframework/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 - sed -i '' "s/macos\.xcframeworks/macos\.frameworks/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 + sed -i '' "s/osx\.xcframeworks/osx\.frameworks/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/10\.11/10\.15/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 - sed -i '' "s/ffmpegkit\.xcframework\/LICENSE/ffmpegkit\.xcframework\/macos-arm64\/ffmpegkit\.framework\/LICENSE/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 + sed -i '' "s/ffmpegkit\.xcframework\/LICENSE/ffmpegkit\.xcframework\/macos-arm64_x86_64\/ffmpegkit\.framework\/LICENSE/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 } if [[ $# -ne 1 ]]; From 1a7203675398b286b0f2156c62bd45d99bafc1a6 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Fri, 5 Mar 2021 21:58:29 +0000 Subject: [PATCH 2/3] download the source code of dav1d from github fork --- scripts/source.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/source.sh b/scripts/source.sh index 4acf747..2f02a90 100755 --- a/scripts/source.sh +++ b/scripts/source.sh @@ -22,8 +22,8 @@ get_library_source() { SOURCE_TYPE="TAG" ;; dav1d) - SOURCE_REPO_URL="https://code.videolan.org/videolan/dav1d" - SOURCE_ID="0.8.1" + SOURCE_REPO_URL="https://github.com/tanersener/dav1d" + SOURCE_ID="0.8.2" SOURCE_TYPE="TAG" ;; expat) From 73ebc16c8b80ae600bd3ef398dc7253f4b2ea80a Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Sat, 6 Mar 2021 16:56:09 +0000 Subject: [PATCH 3/3] enable github pages --- README.md | 18 +----- docs/_config.yml | 14 +++++ docs/index.md | 153 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 170 insertions(+), 15 deletions(-) create mode 100644 docs/_config.yml create mode 100644 docs/index.md diff --git a/README.md b/README.md index af65a1c..55b4280 100644 --- a/README.md +++ b/README.md @@ -7,21 +7,9 @@ FFmpeg Kit for applications. ### 1. Features - Scripts to build FFmpeg libraries - `FFmpegKit` wrapper library to run `FFmpeg`/`FFprobe` commands in applications -- Supports - - Android, iOS, macOS and tvOS - - FFmpeg `v4.4-dev` - - 29 external libraries - - `chromaprint`, `dav1d`, `fontconfig`, `freetype`, `fribidi`, `gmp`, `gnutls`, `kvazaar`, `lame`, `libaom`, `libass`, `libiconv`, `libilbc`, `libtheora`, `libvorbis`, `libvpx`, `libwebp`, `libxml2`, `opencore-amr`, `openh264`, `opus`, `sdl`, `shine`, `snappy`, `soxr`, `speex`, `tesseract`, `twolame`, `vo-amrwbenc` - - - 5 external libraries with GPL license - - `rubberband`, `vid.stab`, `x264`, `x265`, `xvidcore` - - - Parallel command execution - +- Supports Android, iOS, macOS and tvOS +- Based on FFmpeg `v4.4-dev` with optional system and external libraries - 8 prebuilt binary packages available at [Github](https://github.com/tanersener/ffmpeg-kit/releases), [Maven Central](https://search.maven.org) and [CocoaPods](https://cocoapods.org). - - Licensed under `LGPL 3.0`, or `GPL v3.0` if GPL licensed libraries are enabled ### 2. Android @@ -38,7 +26,7 @@ See [Apple](https://github.com/tanersener/ffmpeg-kit/tree/development/apple) to Use `android.sh`, `ios.sh`, `macos.sh` and `tvos.sh` to build `FFmpegKit` for each platform. -All scripts support additional options to enable libraries and disable platform architectures. +All scripts support additional options to enable optional libraries and disable platform architectures. ### 5. FFmpegKit Library diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000..a21cb3f --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1,14 @@ +# main section +title: ffmpeg-kit +baseurl: "/ffmpeg-kit" +locale: "en" +theme: jekyll-theme-minimal +markdown: kramdown + +# github section +show_downloads: true +github: + zip_url: + tar_url: + owner_name: Taner Sener + owner_url: https://github.com/tanersener \ No newline at end of file diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..efbfa35 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,153 @@ +# FFmpegKit + +FFmpeg Kit for applications. + + + +### 1. Features +- Scripts to build FFmpeg libraries +- `FFmpegKit` wrapper library to run `FFmpeg`/`FFprobe` commands in applications +- Supports Android, iOS, macOS and tvOS +- Based on FFmpeg `v4.4-dev` with optional system and external libraries +- 8 prebuilt binary packages available at [Github](https://github.com/tanersener/ffmpeg-kit/releases), [Maven Central](https://search.maven.org) and [CocoaPods](https://cocoapods.org). +- Licensed under `LGPL 3.0`, or `GPL v3.0` if GPL licensed libraries are enabled + +### 2. Android + +See [Android](https://github.com/tanersener/ffmpeg-kit/tree/development/android) to learn more about `FFmpegKit` for +`Android`. + +### 3. iOS, macOS, tvOS + +See [Apple](https://github.com/tanersener/ffmpeg-kit/tree/development/apple) to use `FFmpegKit` on `Apple` platforms +(`iOS`, `macOS`, `tvOS`). + +### 4. Build Scripts + +Use `android.sh`, `ios.sh`, `macos.sh` and `tvos.sh` to build `FFmpegKit` for each platform. + +All scripts support additional options to enable optional libraries and disable platform architectures. + +### 5. FFmpegKit Library + +`FFmpegKit` is a wrapper library that allows you to easily run `FFmpeg`/`FFprobe` commands in applications. It +provides additional features on top of `FFmpeg` to enable platform specific resources, control how commands are +executed and how the results are handled. + +`Android` library has a `Java` API and `Apple` libraries (`iOS`, `macOS`, `tvOS`) have an `Objective-C` API, +which are identical in terms of features and capabilities. + +### 6. Binary Packages + +There are eight different `ffmpeg-kit` packages distributed on +[Github](https://github.com/tanersener/ffmpeg-kit/releases), +[Maven Central](https://search.maven.org) and [CocoaPods](https://cocoapods.org). +Below you can see which external libraries are enabled in each one of them. + +Please remember that some parts of `FFmpeg` are licensed under the `GPL` and only `GPL` licensed `ffmpeg-kit` packages +include them. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
minmin-gplhttpshttps-gplaudiovideofullfull-gpl
external libraries-vid.stab
x264
x265
xvidcore
gmp
gnutls
gmp
gnutls
vid.stab
x264
x265
xvidcore
lame
libilbc
libvorbis
opencore-amr
opus
shine
soxr
speex
twolame
vo-amrwbenc
dav1d
fontconfig
freetype
fribidi
kvazaar
libass
libiconv
libtheora
libvpx
libwebp
snappy
dav1d
fontconfig
freetype
fribidi
gmp
gnutls
kvazaar
lame
libass
libiconv
libilbc
libtheora
libvorbis
libvpx
libwebp
libxml2
opencore-amr
opus
shine
snappy
soxr
speex
twolame
vo-amrwbenc
dav1d
fontconfig
freetype
fribidi
gmp
gnutls
kvazaar
lame
libass
libiconv
libilbc
libtheora
libvorbis
libvpx
libwebp
libxml2
opencore-amr
opus
shine
snappy
soxr
speex
twolame
vid.stab
vo-amrwbenc
x264
x265
xvidcore
+ +- `AVFoundation` is not available on `tvOS`, `VideoToolbox` is not available on `tvOS` LTS releases + +### 7. Versions + +`FFmpegKit` binaries generated use the same major and minor version numbers as the upstream `FFmpeg` project. The exact +version number is obtained using `git describe --tags`. `dev` part in `FFmpeg` version number indicates that `FFmpeg` +source is cloned from the `FFmpeg` `master` branch. + +| FFmpegKit Version | FFmpeg Version | Release Date | +| :----: | :----: |:----: | +| [4.4](https://github.com/tanersener/ffmpeg-kit/releases/tag/v4.4) | 4.4-dev-3015 | Mar 03, 2021 | +| [4.4.LTS](https://github.com/tanersener/ffmpeg-kit/releases/tag/v4.4.LTS) | 4.4-dev-3015 | Mar 03, 2021 | + +### 8. LTS Releases + +`FFmpegKit` binaries are published in two release variants: `Main Release` and `LTS Release`. + +- Main releases include complete functionality of the library and support the latest SDK/API features. + +- LTS releases are customized to support a wider range of devices. They are built using older API/SDK versions, so some features are not available on them. + +This table shows the differences between two variants. + +| | Main Release | LTS Release | +| :----: | :----: | :----: | +| Android API Level | 24 | 16 | +| Android Camera Access | Yes | - | +| Android Architectures | arm-v7a-neon
arm64-v8a
x86
x86-64 | arm-v7a
arm-v7a-neon
arm64-v8a
x86
x86-64 | +| Xcode Compatibility | 11.0 or later | 7.3.1 or later | +| iOS SDK | 12.1 | 9.3 | +| iOS AVFoundation | Yes | - | +| iOS Architectures | arm64
arm64-simulator
arm64-mac-catalyst
x86-64
x86-64-mac-catalyst | armv7
arm64
i386
x86-64 | +| macOS SDK | 10.15 | 10.11 | +| macOS AVFoundation | Yes | - | +| macOS Architectures | arm64
x86-64 | x86-64 | +| tvOS SDK | 10.2 | 9.2 | +| tvOS Architectures | arm64
x86-64
arm64-simulator | arm64
x86-64 | + +### 9. Test Applications + +You can see how `FFmpegKit` is used inside an application by running test applications created under +[FFmpegKit Test](https://github.com/tanersener/ffmpeg-kit-test) project. + +All applications are identical and supports command execution, video encoding, accessing https urls, encoding audio, +burning subtitles, video stabilisation, pipe operations, concurrent command execution. + +### 10. License + +`FFmpegKit` is licensed under the `LGPL v3.0`. However, if source code is built using the optional `--enable-gpl` flag +or prebuilt binaries with `-gpl` postfix are used, then `FFmpegKit` is subject to the `GPL v3.0` license. + +### 11. Patents + +It is not clearly explained in their documentation, but it is believed that `FFmpeg`, `kvazaar`, `x264` and `x265` +include algorithms which are subject to software patents. If you live in a country where software algorithms are +patentable then you'll probably need to pay royalty fees to patent holders. We are not lawyers though, so we recommend +that you seek legal advice first. See [FFmpeg Patent Mini-FAQ](https://ffmpeg.org/legal.html). + +`openh264` clearly states that it uses patented algorithms. Therefore, if you build `ffmpeg-kit` with `openh264` and +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. + +### 12. Contributing + +Feel free to submit issues or pull requests. + +Please note that `main` includes only the latest released source code. Changes planned for the next release are +developed under the `development` branch. Therefore, if you want to create a pull request, please open it against +the `development`. + +### 13. See Also + +- [FFmpeg API Documentation](https://ffmpeg.org/doxygen/4.0/index.html) +- [FFmpeg Wiki](https://trac.ffmpeg.org/wiki/WikiStart) +- [FFmpeg External Library Licenses](https://www.ffmpeg.org/doxygen/4.0/md_LICENSE.html)