Kepler for iPhone, iPad and Mac: corresponding source for FFmpeg (edition 1) ============================================================================ Kepler for iPhone, iPad and Mac repackages Matroska films for Apple's player with FFmpeg, and converts the sound formats Apple's player cannot play (DTS, TrueHD, MP2, MP3) to E-AC-3. FFmpeg is licensed under the GNU Lesser General Public License, version 2.1 or later. This archive is the complete corresponding source for the FFmpeg code in the app, and everything needed to rebuild it. Applies to: Kepler for iPhone, iPad and Mac, version 1.0 and later builds, until a newer edition is published. What is in this archive ----------------------- ffmpeg-9.0.2.tar.xz FFmpeg 9.0.2, the release as published, unmodified. SHA-256 8c3850283eb25fa026482078a04051e0be17347b09ef81a0849bec15a96e002e Upstream: https://ffmpeg.org/releases/ffmpeg-9.0.2.tar.xz Licence: COPYING.LGPLv2.1 inside it (see LICENSE.md). build-ffmpeg.sh The script Kepler's own build uses to produce the app's FFmpeg: it checks the release above against its checksum, configures and compiles it for each platform, and links the result into one framework per platform. It names every option below. How the app's library was built ------------------------------- FFmpeg is compiled as static libraries (libavformat, libavcodec, libswresample, libavutil) and linked whole into FFmpeg.framework, a dynamic framework of its own inside the app, which the app loads at run time: Kepler.app/Frameworks/FFmpeg.framework on iPhone and iPad, and Kepler.app/Contents/Frameworks/FFmpeg.framework on the Mac. Xcode 26.2 (17C52), SDKs 26.2. Minimum versions: iOS 17.0, macOS 14.0, tvOS 17.0. Slices: iOS arm64; iOS Simulator and macOS arm64 and x86_64; tvOS arm64. configure options, for every slice (from build-ffmpeg.sh): --disable-everything --disable-programs --disable-doc --disable-debug --disable-autodetect --disable-network --disable-avdevice --disable-avfilter --disable-swscale --enable-static --disable-shared --enable-pic --enable-zlib --enable-swresample --enable-demuxer=matroska,mpegts --enable-muxer=mp4 --enable-parser=h264,hevc,aac,ac3,mpegaudio,dca,mlp --enable-decoder=dca,truehd,mlp,mp2,mp3 --enable-encoder=eac3 plus the per-slice --target-os=darwin, --arch, --cc and --sysroot options, and --disable-x86asm on x86_64. FFmpeg was configured without --enable-gpl and without --enable-nonfree; with these options its own config.h reports: FFMPEG_LICENSE "LGPL version 2.1 or later". Rebuilding it ------------- 1. Install Xcode with the iOS, macOS and tvOS platforms. 2. Put ffmpeg-9.0.2.tar.xz in a work folder and run: ./build-ffmpeg.sh /path/to/that/folder (the script uses the release it finds there instead of downloading it). 3. The frameworks are written to Vendor/FFmpeg.xcframework, one folder above the script. Questions --------- contact@keplerplayer.com https://keplerplayer.com/opensource