Skip to content

Commit 3bc1844

Browse files
committed
implement the flutter plugin
1 parent 2ee5414 commit 3bc1844

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+9327
-40
lines changed

.github/FUNDING.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
patreon: tanersener
2-
custom: ['https://buymeacoff.ee/tanersener','https://paypal.me/teodosiyminchev']
2+
custom: [ 'https://www.patreon.com/tanersener','https://opencollective.com/ffmpeg-kit','https://buymeacoff.ee/tanersener','https://paypal.me/teodosiyminchev' ]

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
/*.log
33
/prebuilt/
44
.DS_Store
5+
.idea

README.md

+34-20
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
1-
# FFmpegKit ![GitHub release](https://img.shields.io/badge/release-v4.5-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) [![npm](https://img.shields.io/npm/v/ffmpeg-kit-react-native.svg)](ffmpeg-kit-react-native)
1+
# FFmpegKit ![GitHub release](https://img.shields.io/badge/release-v4.5-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)
22

3-
FFmpeg Kit for applications.
3+
`FFmpegKit` is a collection of tools to use `FFmpeg` in `Android`, `iOS`, `macOS`, `tvOS`, `Flutter` and `React Native` applications.
4+
5+
It includes scripts to build `FFmpeg` libraries natively, a wrapper library to run `FFmpeg`/`FFprobe` commands in
6+
applications and 8 prebuilt binary packages available at [Github](https://github.com/tanersener/ffmpeg-kit/releases),
7+
[Maven Central](https://search.maven.org), [CocoaPods](https://cocoapods.org), [pub](https://pub.dev) and [npm](https://www.npmjs.com).
48

59
<img src="https://github.com/tanersener/ffmpeg-kit/blob/development/docs/assets/ffmpeg-kit-icon-v9.png" width="240">
610

711
### 1. Features
8-
- Scripts to build FFmpeg libraries
12+
- Scripts to build FFmpeg libraries natively
913
- `FFmpegKit` wrapper library to run `FFmpeg`/`FFprobe` commands in applications
1014
- Supports native platforms: Android, iOS, macOS and tvOS
11-
- Supports hybrid platforms: React Native
15+
- Supports hybrid platforms: Flutter, React Native
1216
- Based on FFmpeg `v4.5-dev` with optional system and external libraries
13-
- 8 prebuilt binary packages available at [Github](https://github.com/tanersener/ffmpeg-kit/releases), [Maven Central](https://search.maven.org), [CocoaPods](https://cocoapods.org) and [npm](https://www.npmjs.com)
17+
- 8 prebuilt binary packages available at [Github](https://github.com/tanersener/ffmpeg-kit/releases), [Maven Central](https://search.maven.org), [CocoaPods](https://cocoapods.org), [pub](https://pub.dev) and [npm](https://www.npmjs.com)
1418
- Licensed under `LGPL 3.0`, or `GPL v3.0` if GPL licensed libraries are enabled
1519

1620
### 2. Android
@@ -23,31 +27,38 @@ See [Android](https://github.com/tanersener/ffmpeg-kit/tree/main/android) to lea
2327
See [Apple](https://github.com/tanersener/ffmpeg-kit/tree/main/apple) to use `FFmpegKit` on `Apple` platforms
2428
(`iOS`, `macOS`, `tvOS`).
2529

26-
### 4. React Native
30+
### 4. Flutter
31+
32+
See [Flutter](https://github.com/tanersener/ffmpeg-kit/tree/main/flutter/flutter) to learn more about `FFmpegKit` for
33+
`Flutter`.
34+
35+
### 5. React Native
2736

2837
See [React Native](https://github.com/tanersener/ffmpeg-kit/tree/main/react-native) to learn more about `FFmpegKit` for
2938
`React Native`.
3039

31-
### 5. Build Scripts
40+
### 6. Build Scripts
3241

3342
Use `android.sh`, `ios.sh`, `macos.sh` and `tvos.sh` to build `FFmpegKit` for each native platform.
3443

3544
All scripts support additional options to enable optional libraries and disable platform architectures.
3645

37-
### 6. FFmpegKit Library
46+
### 7. FFmpegKit Library
3847

3948
`FFmpegKit` is a wrapper library that allows you to easily run `FFmpeg`/`FFprobe` commands in applications. It
4049
provides additional features on top of `FFmpeg` to enable platform specific resources, control how commands are
4150
executed and how the results are handled.
4251

4352
`Android` library of `FFmpegKit` has a `Java` API, `Apple` libraries (`iOS`, `macOS`, `tvOS`) have an `Objective-C`
44-
API and `React Native` library provides a `JavaScript` API, which are identical in terms of features and capabilities.
53+
API, `Flutter`library comes with a `Dart` API and `React Native` library provides a `JavaScript` API, which are
54+
identical in terms of features and capabilities.
4555

46-
### 7. Packages
56+
### 8. Packages
4757

4858
There are eight different `ffmpeg-kit` packages distributed on
4959
[Github](https://github.com/tanersener/ffmpeg-kit/releases),
50-
[Maven Central](https://search.maven.org), [CocoaPods](https://cocoapods.org) and [npm](https://www.npmjs.com).
60+
[Maven Central](https://search.maven.org), [CocoaPods](https://cocoapods.org), [pub](https://pub.dev) and
61+
[npm](https://www.npmjs.com).
5162
Below you can see which system libraries and external libraries are enabled in each one of them.
5263

5364
Please remember that some parts of `FFmpeg` are licensed under the `GPL` and only `GPL` licensed `ffmpeg-kit` packages
@@ -102,7 +113,7 @@ include them.
102113
- `AVFoundation` is not available on `tvOS`
103114
- `VideoToolbox` is not available on LTS releases of `iOS` and `tvOS`
104115

105-
### 8. Versions
116+
### 9. Versions
106117

107118
`FFmpegKit` binaries generated use the same major and minor version numbers as the upstream `FFmpeg` project.
108119

@@ -111,13 +122,15 @@ indicates that `FFmpeg` source code is cloned from the `FFmpeg` `master` branch.
111122

112123
| Platforms | FFmpegKit Version | FFmpeg Version | Release Date |
113124
| :----: | :----: | :----: | :----: |
125+
| Flutter | [4.5.0](https://github.com/tanersener/ffmpeg-kit/releases/tag/flutter.v4.5.0) | 4.5-dev-2008 | Oct 05, 2021 |
126+
| Flutter | [4.5.0-LTS](https://github.com/tanersener/ffmpeg-kit/releases/tag/flutter.v4.5.0.LTS) | 4.5-dev-2008 | Oct 05, 2021 |
114127
| React Native | [4.5.0](https://github.com/tanersener/ffmpeg-kit/releases/tag/react.native.v4.5.0) | 4.5-dev-2008 | Oct 01, 2021 |
115128
| Android<br>Apple | [4.5](https://github.com/tanersener/ffmpeg-kit/releases/tag/v4.5) | 4.5-dev-2008 | Sep 18, 2021 |
116129
| Android<br>Apple | [4.5.LTS](https://github.com/tanersener/ffmpeg-kit/releases/tag/v4.5.LTS) | 4.5-dev-2008 | Sep 18, 2021 |
117130
| Android<br>Apple | [4.4](https://github.com/tanersener/ffmpeg-kit/releases/tag/v4.4) | 4.4-dev-3015 | Mar 03, 2021 |
118131
| Android<br>Apple | [4.4.LTS](https://github.com/tanersener/ffmpeg-kit/releases/tag/v4.4.LTS) | 4.4-dev-3015 | Mar 03, 2021 |
119132

120-
### 9. LTS Releases
133+
### 10. LTS Releases
121134

122135
`FFmpegKit` binaries are published in two release variants: `Main Release` and `LTS Release`.
123136

@@ -146,24 +159,24 @@ This table shows the differences between two variants.
146159
| tvOS Architectures | arm64<br/>x86-64<br/>arm64-simulator | arm64<br/>x86-64 |
147160
| tvOS Bundle Format | XCFrameworks | Frameworks |
148161

149-
### 10. Documentation
162+
### 11. Documentation
150163

151164
A more detailed documentation is available under [Wiki](https://github.com/tanersener/ffmpeg-kit/wiki).
152165

153-
### 11. Test Applications
166+
### 12. Test Applications
154167

155168
You can see how `FFmpegKit` is used inside an application by running test applications created under
156169
[FFmpegKit Test](https://github.com/tanersener/ffmpeg-kit-test) project.
157170

158171
All applications are identical and supports command execution, video encoding, accessing https urls, encoding audio,
159172
burning subtitles, video stabilisation, pipe operations and concurrent command execution.
160173

161-
### 12. License
174+
### 13. License
162175

163176
`FFmpegKit` is licensed under the `LGPL v3.0`. However, if source code is built using the optional `--enable-gpl` flag
164177
or prebuilt binaries with `-gpl` postfix are used, then `FFmpegKit` is subject to the `GPL v3.0` license.
165178

166-
### 13. Patents
179+
### 14. Patents
167180

168181
It is not clearly explained in their documentation, but it is believed that `FFmpeg`, `kvazaar`, `x264` and `x265`
169182
include algorithms which are subject to software patents. If you live in a country where software algorithms are
@@ -174,15 +187,16 @@ that you seek legal advice first. See [FFmpeg Patent Mini-FAQ](https://ffmpeg.or
174187
distribute that library, then you are subject to pay MPEG LA licensing fees. Refer to
175188
[OpenH264 FAQ](https://www.openh264.org/faq.html) page for the details.
176189

177-
### 14. Contributing
190+
### 15. Contributing
178191

179192
Feel free to submit issues or pull requests.
180193

181194
Please note that `main` includes only the latest released source code. Changes planned for the next release are
182195
developed under the `development` branches (`development` for native platforms, `development-react-native` for
183-
`react-native`). Therefore, if you want to create a pull request, please open it against them.
196+
`react-native`, `development-flutter` for `flutter`). Therefore, if you want to create a pull request, please open it
197+
against them.
184198

185-
### 15. See Also
199+
### 16. See Also
186200

187201
- [FFmpeg API Documentation](https://ffmpeg.org/doxygen/4.0/index.html)
188202
- [FFmpeg Wiki](https://trac.ffmpeg.org/wiki/WikiStart)

docs/index.md

+33-19
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
# FFmpegKit
22

3-
FFmpeg Kit for applications.
3+
`FFmpegKit` is a collection of tools to use `FFmpeg` in `Android`, `iOS`, `macOS`, `tvOS`, `Flutter` and `React Native` applications.
4+
5+
It includes scripts to build `FFmpeg` libraries natively, a wrapper library to run `FFmpeg`/`FFprobe` commands in
6+
applications and 8 prebuilt binary packages available at [Github](https://github.com/tanersener/ffmpeg-kit/releases),
7+
[Maven Central](https://search.maven.org), [CocoaPods](https://cocoapods.org), [pub](https://pub.dev) and [npm](https://www.npmjs.com).
48

59
<img src="https://github.com/tanersener/ffmpeg-kit/raw/main/docs/assets/ffmpeg-kit-icon-v9.png" width="180">
610

711
### 1. Features
812
- Scripts to build FFmpeg libraries
913
- `FFmpegKit` wrapper library to run `FFmpeg`/`FFprobe` commands in applications
1014
- Supports native platforms: Android, iOS, macOS and tvOS
11-
- Supports hybrid platforms: React Native
15+
- Supports hybrid platforms: Flutter, React Native
1216
- Based on FFmpeg `v4.5-dev` with optional system and external libraries
13-
- 8 prebuilt binary packages available at [Github](https://github.com/tanersener/ffmpeg-kit/releases), [Maven Central](https://search.maven.org), [CocoaPods](https://cocoapods.org) and [npm](https://www.npmjs.com)
17+
- 8 prebuilt binary packages available at [Github](https://github.com/tanersener/ffmpeg-kit/releases), [Maven Central](https://search.maven.org), [CocoaPods](https://cocoapods.org), [pub](https://pub.dev) and [npm](https://www.npmjs.com)
1418
- Licensed under `LGPL 3.0`, or `GPL v3.0` if GPL licensed libraries are enabled
1519

1620
### 2. Android
@@ -23,31 +27,38 @@ See [Android](https://github.com/tanersener/ffmpeg-kit/tree/development/android)
2327
See [Apple](https://github.com/tanersener/ffmpeg-kit/tree/development/apple) to use `FFmpegKit` on `Apple` platforms
2428
(`iOS`, `macOS`, `tvOS`).
2529

26-
### 4. React Native
30+
### 4. Flutter
31+
32+
See [Flutter](https://github.com/tanersener/ffmpeg-kit/tree/main/flutter/flutter) to learn more about `FFmpegKit` for
33+
`Flutter`.
34+
35+
### 5. React Native
2736

2837
See [React Native](https://github.com/tanersener/ffmpeg-kit/tree/main/react-native) to learn more about `FFmpegKit` for
2938
`React Native`.
3039

31-
### 5. Build Scripts
40+
### 6. Build Scripts
3241

3342
Use `android.sh`, `ios.sh`, `macos.sh` and `tvos.sh` to build `FFmpegKit` for each native platform.
3443

3544
All scripts support additional options to enable optional libraries and disable platform architectures.
3645

37-
### 6. FFmpegKit Library
46+
### 7. FFmpegKit Library
3847

3948
`FFmpegKit` is a wrapper library that allows you to easily run `FFmpeg`/`FFprobe` commands in applications. It
4049
provides additional features on top of `FFmpeg` to enable platform specific resources, control how commands are
4150
executed and how the results are handled.
4251

4352
`Android` library of `FFmpegKit` has a `Java` API, `Apple` libraries (`iOS`, `macOS`, `tvOS`) have an `Objective-C`
44-
API and `React Native` library provides a `JavaScript` API, which are identical in terms of features and capabilities.
53+
API, `Flutter`library comes with a `Dart` API and `React Native` library provides a `JavaScript` API, which are
54+
identical in terms of features and capabilities.
4555

46-
### 7. Packages
56+
### 8. Packages
4757

4858
There are eight different `ffmpeg-kit` packages distributed on
4959
[Github](https://github.com/tanersener/ffmpeg-kit/releases),
50-
[Maven Central](https://search.maven.org), [CocoaPods](https://cocoapods.org) and [npm](https://www.npmjs.com).
60+
[Maven Central](https://search.maven.org), [CocoaPods](https://cocoapods.org), [pub](https://pub.dev) and
61+
[npm](https://www.npmjs.com).
5162
Below you can see which system libraries and external libraries are enabled in each one of them.
5263

5364
Please remember that some parts of `FFmpeg` are licensed under the `GPL` and only `GPL` licensed `ffmpeg-kit` packages
@@ -94,13 +105,15 @@ indicates that `FFmpeg` source code is cloned from the `FFmpeg` `master` branch.
94105

95106
| Platforms | FFmpegKit Version | FFmpeg Version | Release Date |
96107
| :----: | :----: | :----: | :----: |
108+
| Flutter | [4.5.0](https://github.com/tanersener/ffmpeg-kit/releases/tag/flutter.v4.5.0) | 4.5-dev-2008 | Oct 05, 2021 |
109+
| Flutter | [4.5.0-LTS](https://github.com/tanersener/ffmpeg-kit/releases/tag/flutter.v4.5.0.LTS) | 4.5-dev-2008 | Oct 05, 2021 |
97110
| React Native | [4.5.0](https://github.com/tanersener/ffmpeg-kit/releases/tag/react.native.v4.5.0) | 4.5-dev-2008 | Oct 01, 2021 |
98111
| Android<br>Apple | [4.5](https://github.com/tanersener/ffmpeg-kit/releases/tag/v4.5) | 4.5-dev-2008 | Sep 18, 2021 |
99112
| Android<br>Apple | [4.5.LTS](https://github.com/tanersener/ffmpeg-kit/releases/tag/v4.5.LTS) | 4.5-dev-2008 | Sep 18, 2021 |
100113
| Android<br>Apple | [4.4](https://github.com/tanersener/ffmpeg-kit/releases/tag/v4.4) | 4.4-dev-3015 | Mar 03, 2021 |
101114
| Android<br>Apple | [4.4.LTS](https://github.com/tanersener/ffmpeg-kit/releases/tag/v4.4.LTS) | 4.4-dev-3015 | Mar 03, 2021 |
102115

103-
### 9. LTS Releases
116+
### 10. LTS Releases
104117

105118
`FFmpegKit` binaries are published in two release variants: `Main Release` and `LTS Release`.
106119

@@ -129,24 +142,24 @@ This table shows the differences between two variants.
129142
| tvOS Architectures | arm64<br/>x86-64<br/>arm64-simulator | arm64<br/>x86-64 |
130143
| tvOS Bundle Format | XCFrameworks | Frameworks |
131144

132-
### 10. Documentation
145+
### 11. Documentation
133146

134147
A more detailed documentation is available under [Wiki](https://github.com/tanersener/ffmpeg-kit/wiki).
135148

136-
### 11. Test Applications
149+
### 12. Test Applications
137150

138151
You can see how `FFmpegKit` is used inside an application by running test applications created under
139152
[FFmpegKit Test](https://github.com/tanersener/ffmpeg-kit-test) project.
140153

141154
All applications are identical and supports command execution, video encoding, accessing https urls, encoding audio,
142-
burning subtitles, video stabilisation, pipe operations, concurrent command execution.
155+
burning subtitles, video stabilisation, pipe operations and concurrent command execution.
143156

144-
### 12. License
157+
### 13. License
145158

146159
`FFmpegKit` is licensed under the `LGPL v3.0`. However, if source code is built using the optional `--enable-gpl` flag
147160
or prebuilt binaries with `-gpl` postfix are used, then `FFmpegKit` is subject to the `GPL v3.0` license.
148161

149-
### 13. Patents
162+
### 14. Patents
150163

151164
It is not clearly explained in their documentation, but it is believed that `FFmpeg`, `kvazaar`, `x264` and `x265`
152165
include algorithms which are subject to software patents. If you live in a country where software algorithms are
@@ -157,15 +170,16 @@ that you seek legal advice first. See [FFmpeg Patent Mini-FAQ](https://ffmpeg.or
157170
distribute that library, then you are subject to pay MPEG LA licensing fees. Refer to
158171
[OpenH264 FAQ](https://www.openh264.org/faq.html) page for the details.
159172

160-
### 14. Contributing
173+
### 15. Contributing
161174

162175
Feel free to submit issues or pull requests.
163176

164177
Please note that `main` includes only the latest released source code. Changes planned for the next release are
165-
developed under the `development` branches (`development` for native platforms, `development-react-native` for
166-
`react-native`). Therefore, if you want to create a pull request, please open it against them.
178+
developed under the `development` branches (`development` for native platforms, `development-react-native` for
179+
`react-native`, `development-flutter` for `flutter`). Therefore, if you want to create a pull request, please open it
180+
against them.
167181

168-
### 15. See Also
182+
### 16. See Also
169183

170184
- [FFmpeg API Documentation](https://ffmpeg.org/doxygen/4.0/index.html)
171185
- [FFmpeg Wiki](https://trac.ffmpeg.org/wiki/WikiStart)

flutter/flutter/.gitignore

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.DS_Store
2+
.dart_tool/
3+
.packages
4+
.pub/
5+
build/

flutter/flutter/.metadata

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# This file tracks properties of this Flutter project.
2+
# Used by Flutter tool to assess capabilities and perform upgrades etc.
3+
#
4+
# This file should be version controlled and should not be manually edited.
5+
6+
version:
7+
revision: c5a4b4029c0798f37c4a39b479d7cb75daa7b05c
8+
channel: stable
9+
10+
project_type: plugin

flutter/flutter/CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
## 4.5.0
2+
- Initial release
3+
4+
## 4.5.0-LTS
5+
- Initial LTS release

0 commit comments

Comments
 (0)