- Based on FFmpeg `v4.5-dev` with optional system and external libraries
- Based on FFmpeg `v4.5-dev`or later with optional system and external libraries
- 8 prebuilt binary packages available at [Github](https://github.com/arthenica/ffmpeg-kit/releases), [Maven Central](https://search.maven.org), [CocoaPods](https://cocoapods.org), [pub](https://pub.dev) and [npm](https://www.npmjs.com)
- 8 prebuilt binary packages available at [Github](https://github.com/arthenica/ffmpeg-kit/releases), [Maven Central](https://search.maven.org), [CocoaPods](https://cocoapods.org), [pub](https://pub.dev) and [npm](https://www.npmjs.com)
- Licensed under `LGPL 3.0`, or `GPL v3.0` if GPL licensed libraries are enabled
- Licensed under `LGPL 3.0`, or `GPL v3.0` if GPL licensed libraries are enabled
@ -29,28 +29,32 @@ See [Apple](apple) to use `FFmpegKit` on `Apple` platforms (`iOS`, `macOS`, `tvO
See [Flutter](flutter/flutter) to learn more about `FFmpegKit` for `Flutter`.
See [Flutter](flutter/flutter) to learn more about `FFmpegKit` for `Flutter`.
### 5. React Native
### 5. Linux
See [Linux](linux) to learn more about `FFmpegKit` for `Linux`.
### 6. React Native
See [React Native](react-native) to learn more about `FFmpegKit` for `React Native`.
See [React Native](react-native) to learn more about `FFmpegKit` for `React Native`.
### 6. Build Scripts
### 7. Build Scripts
Use `android.sh`, `ios.sh`, `macos.sh` and `tvos.sh` to build `FFmpegKit` for each native platform.
Use `android.sh`, `ios.sh`, `linux.sh`, `macos.sh` and `tvos.sh` to build `FFmpegKit` for each native platform.
All scripts support additional options to enable optional libraries and disable platform architectures. See
All scripts support additional options to enable optional libraries and disable platform architectures. See
[Building](https://github.com/arthenica/ffmpeg-kit/wiki/Building) wiki page for the details.
[Building](https://github.com/arthenica/ffmpeg-kit/wiki/Building) wiki page for the details.
### 7. FFmpegKit Library
### 8. FFmpegKit Library
`FFmpegKit` is a wrapper library that allows you to easily run `FFmpeg`/`FFprobe` commands in applications. It
`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
provides additional features on top of `FFmpeg` to enable platform specific resources, control how commands are
executed and how the results are handled.
executed and how the results are handled.
`Android` library of `FFmpegKit` has a `Java` API, `Apple` libraries (`iOS`, `macOS`, `tvOS`) have an `Objective-C`
`Android` library of `FFmpegKit` has a `Java` API, `Apple` libraries (`iOS`, `macOS`, `tvOS`) have an `Objective-C`
API, `Flutter`library comes with a `Dart` API and `React Native` library provides a `JavaScript` API, which are
API, `Flutter`library comes with a `Dart` API, `Linux` library has a `C++` API and `React Native` library provides
identical in terms of features and capabilities.
a `JavaScript` API with `Typescript` definitions, which are identical in terms of features and capabilities.
### 8. Packages
### 9. Packages
There are eight different `ffmpeg-kit` packages distributed on
There are eight different `ffmpeg-kit` packages distributed on
- Based on FFmpeg `v4.5-dev` with optional system and external libraries
- Based on FFmpeg `v4.5-dev`or later with optional system and external libraries
- 8 prebuilt binary packages available at [Github](https://github.com/arthenica/ffmpeg-kit/releases), [Maven Central](https://search.maven.org), [CocoaPods](https://cocoapods.org), [pub](https://pub.dev) and [npm](https://www.npmjs.com)
- 8 prebuilt binary packages available at [Github](https://github.com/arthenica/ffmpeg-kit/releases), [Maven Central](https://search.maven.org), [CocoaPods](https://cocoapods.org), [pub](https://pub.dev) and [npm](https://www.npmjs.com)
- Licensed under `LGPL 3.0`, or `GPL v3.0` if GPL licensed libraries are enabled
- Licensed under `LGPL 3.0`, or `GPL v3.0` if GPL licensed libraries are enabled
@ -32,29 +32,34 @@ See [Apple](https://github.com/arthenica/ffmpeg-kit/tree/development/apple) to u
See [Flutter](https://github.com/arthenica/ffmpeg-kit/tree/main/flutter/flutter) to learn more about `FFmpegKit` for
See [Flutter](https://github.com/arthenica/ffmpeg-kit/tree/main/flutter/flutter) to learn more about `FFmpegKit` for
`Flutter`.
`Flutter`.
### 5. React Native
### 5. Linux
See [Linux](https://github.com/arthenica/ffmpeg-kit/tree/main/linux) to learn more about `FFmpegKit` for
`Linux`.
### 6. React Native
See [React Native](https://github.com/arthenica/ffmpeg-kit/tree/main/react-native) to learn more about `FFmpegKit` for
See [React Native](https://github.com/arthenica/ffmpeg-kit/tree/main/react-native) to learn more about `FFmpegKit` for
`React Native`.
`React Native`.
### 6. Build Scripts
### 7. Build Scripts
Use `android.sh`, `ios.sh`, `macos.sh` and `tvos.sh` to build `FFmpegKit` for each native platform.
Use `android.sh`, `ios.sh`, `linux.sh`, `macos.sh` and `tvos.sh` to build `FFmpegKit` for each native platform.
All scripts support additional options to enable optional libraries and disable platform architectures. See
All scripts support additional options to enable optional libraries and disable platform architectures. See
[Building](https://github.com/arthenica/ffmpeg-kit/wiki/Building) wiki page for the details.
[Building](https://github.com/arthenica/ffmpeg-kit/wiki/Building) wiki page for the details.
### 7. FFmpegKit Library
### 8. FFmpegKit Library
`FFmpegKit` is a wrapper library that allows you to easily run `FFmpeg`/`FFprobe` commands in applications. It
`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
provides additional features on top of `FFmpeg` to enable platform specific resources, control how commands are
executed and how the results are handled.
executed and how the results are handled.
`Android` library of `FFmpegKit` has a `Java` API, `Apple` libraries (`iOS`, `macOS`, `tvOS`) have an `Objective-C`
`Android` library of `FFmpegKit` has a `Java` API, `Apple` libraries (`iOS`, `macOS`, `tvOS`) have an `Objective-C`
API, `Flutter`library comes with a `Dart` API and `React Native` library provides a `JavaScript` API, which are
API, `Flutter`library comes with a `Dart` API, `Linux` library has a `C++` API and `React Native` library provides
identical in terms of features and capabilities.
a `JavaScript` API with `Typescript` definitions, which are identical in terms of features and capabilities.
### 8. Packages
### 9. Packages
There are eight different `ffmpeg-kit` packages distributed on
There are eight different `ffmpeg-kit` packages distributed on
std::cout << "FFmpeg process exited with state " <<FFmpegKitConfig::sessionStateToString(state)<<"andrc"<<returnCode<<"."<<session->getFailStackTrace() <<std::endl;
}, [](auto log) {
// CALLED WHEN SESSION PRINTS LOGS
}, [](auto statistics) {
// CALLED WHEN SESSION GENERATES STATISTICS
});
```
4. Execute `FFprobe` commands.
- Synchronous
```C++
#include<FFprobeKit.h>
#include<FFmpegKitConfig.h>
using namespace ffmpegkit;
auto session = FFprobeKit::execute(ffprobeCommand);
if (!ReturnCode::isSuccess(session->getReturnCode())) {
std::cout << "Command failed. Please check output for the details." <<std::endl;