
FFmpegKit是在Android , iOS , Linux , macOS , tvOS , Flutter和React Native应用程序中使用FFmpeg 1的工具集合。
它包括用于构建FFmpeg本机库,一个包装库,在应用程序中运行FFmpeg / FFprobe命令的包装库,以及8个预先构建的二进制套件,可在Github,Maven Central,Cocoapods,cocoapods,pub和npm上提供。
FFmpegKit包装库在应用程序中运行FFmpeg / FFprobe命令v4.5-dev或以后使用可选系统和外部库LGPL 3.0许可, GPL v3.0如果已启用GPL许可库请参阅Android,以了解有关Android的FFmpegKit更多信息。
请参阅Apple在Apple平台上使用FFmpegKit ( iOS , macOS , tvOS )。
请参阅Flutter,以了解Flutter FFmpegKit更多信息。
请参阅Linux了解有关Linux的FFmpegKit更多信息。
请参阅React Native以了解有关React Native有关FFmpegKit更多信息。
使用android.sh , ios.sh , linux.sh , macos.sh和tvos.sh为每个本机平台构建FFmpegKit 。
所有脚本都支持其他选项,以启用可选的库和禁用平台架构。有关详细信息,请参见构建Wiki页面。
FFmpegKit是一个包装库,可让您在应用程序中轻松运行FFmpeg / FFprobe命令。它在FFmpeg之上提供了其他功能,以启用平台特定资源,控制命令的执行方式以及如何处理结果。
FFmpegKit的Android库具有Java API, Apple库( iOS , macOS , tvOS )具有Objective-C API, Flutter Library带有Dart API, Linux库具有C++ API, React Native Library提供了JavaScript API,具有带有Typescript定义,这些定义是在功能和能力方面与之相同的。
在Github,Maven Central,Cocoapods,Pub和NPM上分布了八个不同的ffmpeg-kit软件包。在下面,您可以看到其中每个系统库和外部库都启用了哪些系统库和外部库。
请记住, FFmpeg的某些部分是在GPL下许可的,只有GPL许可的ffmpeg-kit软件包包括它们。
| 最小 | Min-GPL | https | https-gpl | 声音的 | 视频 | 满的 | 全GPL | |
|---|---|---|---|---|---|---|---|---|
| 外部库 | - | vid.stab x264 x265 xvidcore | GMP Gnutls | GMP Gnutls vid.stab x264 x265 xvidcore | 瘸 libilbc libvorbis opencore-amr 作品 闪耀 soxr Speex Twolame vo-amrwbenc | dav1d fontconfig freetype Fribidi Kvazaar 利巴斯 Libiconv libtheora libvpx libwebp 活泼 Zimg | dav1d fontconfig freetype Fribidi GMP Gnutls Kvazaar 瘸 利巴斯 Libiconv libilbc libtheora libvorbis libvpx libwebp libxml2 opencore-amr 作品 闪耀 活泼 soxr Speex Twolame vo-amrwbenc Zimg | dav1d fontconfig freetype Fribidi GMP Gnutls Kvazaar 瘸 利巴斯 Libiconv libilbc libtheora libvorbis libvpx libwebp libxml2 opencore-amr 作品 闪耀 活泼 soxr Speex Twolame vid.stab vo-amrwbenc x264 x265 xvidcore Zimg |
| Android系统库 | Zlib MediaCodec | |||||||
| iOS系统库 | BZIP2 Audiotoolbox avfoundation ICONV 录像带 Zlib | |||||||
| MacOS系统库 | BZIP2 Audiotoolbox avfoundation 核心图像 ICONV OPENCL OpenGL 录像带 Zlib | |||||||
| TVOS系统库 | BZIP2 Audiotoolbox ICONV 录像带 Zlib | |||||||
tvOS上没有AVFoundationiOS和tvOS的LTS版本上不可用VideoToolboxv4.5.1以来, zimg得到了支持生成的FFmpegKit二进制文件使用与上游FFmpeg项目相同的主要版本和次要版本编号。版本字符串中的第三个也是最后一个数字(如果存在)是FFmpegKit的特定的。它显示了来自同一FFmpeg发行分支的不同版本。
版本字符串中的dev部分指示FFmpeg源代码是从FFmpeg master Branch克隆的,并且使用git describe --tags命令获得了FFmpeg的确切版本编号。
| 平台 | FFMPEGKIT版本 | FFMPEG版本 | 发布日期 |
|---|---|---|---|
| 扑 | 6.0.3 | 6.0 | 2023年9月19日 |
| 反应天然 | 6.0.2 | 6.0 | 2023年9月19日 |
| 扑 | 6.0.2 | 6.0 | 9月3日,2023年 |
| 反应天然 | 6.0.1 | 6.0 | 9月3日,2023年 |
| 扑 | 6.0.1 | 6.0 | 9月3日,2023年 |
| 反应天然 | 6.0.0 | 6.0 | 2023年8月27日 |
| 扑 | 6.0.0 | 6.0 | 2023年8月27日 |
| 安卓 苹果 | 6.0 | 6.0 | 2023年8月21日 |
| 反应天然 | 5.1.0 | 5.1.2 | 2022年10月2日 |
| 扑 | 5.1.0 | 5.1.2 | 2022年10月2日 |
| 安卓 苹果 | 5.1 | 5.1.2 | 9月29日,2022年 |
| 反应天然 | 4.5.2 | 4.5-DEV-3393 | 2022年5月25日 |
| 扑 | 4.5.1 | 4.5-DEV-3393 | 2022年1月2日 |
| 反应天然 | 4.5.1 | 4.5-DEV-3393 | 2022年1月2日 |
| 安卓 | 4.5.1 | 4.5-DEV-3393 | 2022年1月1日 |
| 苹果 | 4.5.1 | 4.5-DEV-3393 | 2021年12月30日 |
| 扑 | 4.5.0 | 4.5-DEV-2008 | 2021年10月5日 |
| 反应天然 | 4.5.0 | 4.5-DEV-2008 | 2021年10月1日 |
| 安卓 苹果 | 4.5 | 4.5-DEV-2008 | 2021年9月18日 |
| 安卓 苹果 | 4.4 | 4.4-DEV-3015 | 3月3日,2021年 |
FFmpegKit二进制文件发表在两个发行版本中: Main Release和LTS Release 。
主要版本包括库的完整功能,并支持最新的SDK/API功能。
定制LTS版本以支持更广泛的设备。它们是使用较旧的API/SDK版本构建的,因此某些功能在其上不可用。
该表显示了两个变体之间的差异。
| 主要版本 | LTS发布 | |
|---|---|---|
| Android API级别 | 24 | 16 |
| Android相机访问 | 是的 | - |
| Android体系结构 | ARM-V7A-NEON ARM64-V8A x86 X86-64 | ARM-V7A ARM-V7A-NEON ARM64-V8A x86 X86-64 |
| iOS Min SDK | 12.1 | 10 |
| iOS videotoolbox | 是的 | - |
| iOS avoundation | 是的 | - |
| iOS体系结构 | ARM64 ARM64-Simulator ARM64-MAC催化剂 X86-64 X86-64-MAC - 催化剂 | ARMV7 ARM64 I386 X86-64 |
| iOS捆绑格式 | XCFrameWorks | 框架 |
| MAC催化剂最小版本 | 14.0 | - |
| MacOS Min SDK | 10.15 | 10.12 |
| macOS avoundation | 是的 | - |
| MacOS体系结构 | ARM64 X86-64 | X86-64 |
| MACOS捆绑格式 | XCFrameWorks | 框架 |
| TVOS Min SDK | 11.0 | 10.0 |
| TVOS录像带 | 是的 | - |
| TVOS架构 | ARM64 X86-64 ARM64-Simulator | ARM64 X86-64 |
| TVOS捆绑包格式 | XCFrameWorks | 框架 |
Wiki下提供了更详细的文档。
您可以通过运行在FFMPEGKIT测试项目下创建的测试应用程序在应用程序中如何使用FFmpegKit 。
所有应用程序都是相同的,并且支持命令执行,视频编码,访问HTTPS URL,编码音频,燃烧字幕,视频稳定,管道操作和并发命令执行。
仅FFmpegKit库仅根据LGPL v3.0许可。
FFmpegKit捆绑包( .aar档案, frameworks , xcframeworks ),其中包括FFmpegKit和FFmpeg库,也是LGPL v3.0的许可。但是,如果使用可选的--enable-gpl标志或带有-gpl Postfix的预构建二进制文件构建源代码,则FFmpegKit束将受到GPL v3.0约束。因为, FFmpeg在这些捆绑包中的GPL v3.0下获得许可。这使整个捆绑包有效地受到GPL v3.0影响。
FFmpegKit构建脚本总是使用--enable-version3选项配置FFmpeg 。永远不要启用非免费库。因此, FFmpegKit创建的FFmpeg库默认为LGPL v3.0 。只有在提供--enable-gpl时,它们才会受到GPL v3.0约束。这就是如何编译带有-gpl后缀的预构建二进制文件的方式。
请参阅许可证以查看所有图书馆的许可。商标列出了FFmpegKit文档中使用的商标。
在他们的文档中并未清楚地解释,但是据信FFmpeg , kvazaar , x264和x265包括遵守软件专利的算法。如果您居住在一个可以专利的软件算法的国家 /地区,那么您可能需要向专利持有人支付特许权使用费。不过,我们不是律师,因此我们建议您首先寻求法律建议。参见FFMPEG专利迷你FAQ。
openh264清楚地指出,它使用了专利算法。因此,如果您使用openh264构建ffmpeg-kit并分发该库,那么您将支付MPEG LA许可费。有关详细信息,请参阅OpenH264常见问题解答页面。
1 FFmpeg是Fabrice Bellard的商标。 FFmpegKit是一个独立的项目,不隶属于FFmpeg商标持有人。
请参阅我们的贡献指南。