FFmpegKit GitHub release CocoaPods

FFmpegKit 是一套用于在 iOSmacOStvOSxrOSvisionOS 应用程序中使用 FFmpeg 的工具集合。

它包含构建 FFmpeg 原生库的脚本,以及在 macOS 上的三个可执行产品 ffplay/ffmpeg/ffprobe

特性

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/kingslay/FFmpegKit.git", .branch("main"))
]

构建脚本

swift package --disable-sandbox BuildFFmpeg

在代码中运行 ffmpeg ffprobe (LGPL 版本的特性)

var arguments = ["ffmpeg", "-i", "file1.mp4", "-c:v", "mpeg4", "file2.mp4"]
var argv = arguments.map {
    UnsafeMutablePointer(mutating: ($0 as NSString).utf8String)
}
ffmpeg_execute(Int32(arguments.count), &argv)

arguments = ["ffprobe", "-h"]
argv = arguments.map {
    UnsafeMutablePointer(mutating: ($0 as NSString).utf8String)
}
ffprobe_execute(Int32(arguments.count), &argv)

可执行产品

swift run ffplay
swift run ffmpeg
swift run ffprobe

帮助

swift package BuildFFmpeg -h
        Usage: swift package BuildFFmpeg [OPTION]...
        Default Build: swift package --disable-sandbox BuildFFmpeg enable-libshaderc enable-vulkan enable-lcms2 enable-libdav1d enable-libplacebo enable-gmp enable-nettle enable-gnutls enbale-readline enable-libsmbclient enable-libsrt enable-libzvbi enable-libfreetype enable-libfribidi enable-libharfbuzz enable-libass enable-FFmpeg enable-libmpv

        Options:
            h, -h, --help       display this help and exit
            notRecompile        If there is a library, then there is no need to recompile
            gitCloneAll         git clone not add --depth 1
            enable-debug,       build ffmpeg with debug information
            platforms=xros      deployment platform: macos,ios,isimulator,tvos,tvsimulator,xros,xrsimulator,maccatalyst,watchos,watchsimulator
            --xx                add ffmpeg Configuers

        Libraries:
            enable-libshaderc   build with libshaderc
            enable-vulkan       depend enable-libshaderc
            enable-libdav1d     build with libdav1d
            enable-libplacebo   depend enable-libshaderc enable-vulkan enable-lcms2 enable-libdav1d
            enable-nettle       depend enable-gmp
            enable-gnutls       depend enable-gmp enable-nettle
            enable-libsmbclient depend enable-gmp enable-nettle enable-gnutls enbale-readline
            enable-libsrt       depend enable-openssl or enable-gnutls
            enable-libfreetype  build with libfreetype
            enable-libharfbuzz  depend enable-libfreetype
            enable-libass       depend enable-libfreetype enable-libfribidi enable-libharfbuzz
            enable-libzvbi      build with libzvbi
            enable-FFmpeg       build with FFmpeg
            enable-libmpv       depend enable-libass enable-FFmpeg
            enable-openssl      build with openssl [no]

许可

由于 FFmpegKit 默认包含 libsmbclient,并且在编译 FFmepg 和 mpv 时开启了 GPL,因此 FFmpegKit 使用 GPL 许可。

此外,还有一个采用 LGPL 许可的付费版本(请联系我们)。