FFmpeg core 0.12.10 — corresponding source collection Prepared 2026-10-04 from the ffmpeg.wasm v12.15 build recipe. Scope This folder provides 24 complete official source archives: the ffmpeg.wasm release tree, FFmpeg and every external component listed in the release Dockerfile, Emscripten 3.1.40, its required SDL2 port, and all five declared Git submodules of the collected trees. The upstream archive bytes have not been modified. Large archives are split into consecutive byte ranges, not repacked or stripped. Total original archive bytes: 118,518,062 (118.52 MB; 113.03 MiB). None of the source files or test fixtures inside an archive were omitted. The deployed core is GPL-2.0-or-later, with the external libraries' own notices retained. THIRD_PARTY_LICENSE_TEXTS.txt contains the previously collected license texts; SDL2-LICENSE.txt supplies the additional zlib-style SDL notice. Every source archive also preserves its own license/copyright files. Source, binaries and these notices should be served together. See manifest.json for every file hash, original archive hash, upstream URL and component relationship. Reassembly and verification Every deployed file is smaller than 20,000,000 bytes. The largest parts are exactly 19,000,000 bytes. All other original archives are supplied intact. 1. Download every file in this folder while preserving the relative paths (including build-recipe/). 2. Verify downloads on macOS: shasum -a 256 -c SHA256SUMS Linux equivalent: sha256sum -c SHA256SUMS 3. Reassemble and verify all archives without extraction: python3 restore-sources.py ../encoder-source-restored 4. To additionally extract every source tree and restore all pinned submodule directories, use Python3.12 or newer: python3 restore-sources.py ../encoder-source-restored --extract Choose a new/empty destination outside this downloaded folder. The script checks each supplied part and the complete reconstructed archive before use. Restored source trees are under encoder-source-restored/trees/. The script does not build or execute any upstream source. Reassembled archives can exceed the hosting limit; keep those in your local destination rather than re-uploading them. Manual reassembly (if preferred) cat harfbuzz-5.2.0.tar.gz.part001 harfbuzz-5.2.0.tar.gz.part002 > harfbuzz-5.2.0.tar.gz cat emscripten-3.1.40.tar.gz.part001 emscripten-3.1.40.tar.gz.part002 > emscripten-3.1.40.tar.gz Compare the resulting SHA-256 hashes with manifest.json. Extract ordinary .tar.gz files with tar and the SDL2 .zip with unzip. Populate the five submodule paths exactly as recorded in submodule-pins.json; the restoration script automates this step. Build recipe and provenance Release: https://github.com/ffmpegwasm/ffmpeg.wasm/releases/tag/v12.15 Release commit: 71aa99d37c02a7b4c435275ca9ef50e612f6efa1 The full source tree contains Dockerfile, Makefile, build/*, src/bind and the patched src/fftools. Convenient identical copies of Dockerfile, Makefile, LICENSE, .gitmodules and all build/* files are included under build-recipe/. Official build guide: https://ffmpegwasm.netlify.app/docs/contribution/core/ The single-thread production target in that release is make prd (make build-st EXTRA_CFLAGS='-O3 -msimd128'), using emscripten/emsdk:3.1.40. The unmodified Dockerfile obtains external repositories and apt build tools over the network. These preserved source snapshots allow the exact archived code to be inspected or used in an adapted local-source build; this collection is not a preinstalled compiler/toolchain image or an offline Docker build environment. No binary rebuild was performed. Upstream Dockerfile uses the x264 4-cores and LAME master refs. This collection pins their resolved commits shown below; their latest commits predate the release. Source/version matching has been checked against the recipe and installed binary version/configuration, but byte-for-byte build reproducibility is not claimed. SDL2 was found through -sUSE_SDL=2 in build/ffmpeg-wasm.sh. Emscripten3.1.40 tools/ports/sdl2.py pins release-2.24.2.zip, and this exact ZIP was verified against that port's full SHA-512. SDL2 is included even though the earlier Dockerfile-only component manifest omitted it. Installed original core identity (before transport gzip) @ffmpeg/core 0.12.10 ESM ffmpeg-core.wasm: 32,232,419 bytes SHA-256: 9f57947a5bd530d8f00c5b3f2cb2a3492faa7e5d823315342d6a8656d0a6b7b7 @ffmpeg/core 0.12.10 ESM ffmpeg-core.js: 111,804 bytes SHA-256: 67a48f11645f85439f3fde4f2119042c16b374b910206b7a7a24f342e28dcae3 Original binary embeds FFmpeg5.1.4 and the --enable-gpl single-thread configuration recorded in build-recipe/Dockerfile and build/ffmpeg.sh. Serving gzip-compressed bytes is transport repackaging, not a change to the source; any application-specific loader modifications should be recorded separately. Download status All24 archives downloaded and passed archive-integrity checks. All declared submodule revisions were resolved and downloaded; no recursively declared submodules remained in those five child archives. No failed or missing source download is known in this collection. Standard build-tool distribution (Docker, Debian packages, compiler toolchain binaries) is outside this source-asset set. Archive inventory FFmpeg Ref: n5.1.4 Archive bytes: 14,419,343 SHA-256: 6ed8ba17d513955cd9a03d0d87195b8eac3d148dcb61ef30ebddf1a3cd718de8 Files: ffmpeg-n5.1.4.tar.gz Source: https://github.com/FFmpeg/FFmpeg/tree/n5.1.4 Official archive: https://github.com/FFmpeg/FFmpeg/archive/n5.1.4.tar.gz x264 Ref: 33cac6b77d5b9259c552156013a817ab23119612 Archive bytes: 942,903 SHA-256: 75434a5a1f2d7d4314821c6054dd300731d69e2fa73314ba4a5ec9df38d4ec80 Files: x264-33cac6b77d5b9259c552156013a817ab23119612.tar.gz Source: https://github.com/ffmpegwasm/x264/tree/33cac6b77d5b9259c552156013a817ab23119612 Official archive: https://github.com/ffmpegwasm/x264/archive/33cac6b77d5b9259c552156013a817ab23119612.tar.gz x265 Ref: 3.4 Archive bytes: 1,530,201 SHA-256: abd37f4ab99570fcf2272c47239653204b0854ea5ef19df3729112aaa1f6f311 Files: x265-3.4.tar.gz Source: https://github.com/ffmpegwasm/x265/tree/3.4 Official archive: https://github.com/ffmpegwasm/x265/archive/3.4.tar.gz libvpx Ref: v1.13.1 Archive bytes: 5,515,662 SHA-256: 00dae80465567272abd077f59355f95ac91d7809a2d3006f9ace2637dd429d14 Files: libvpx-v1.13.1.tar.gz Source: https://github.com/ffmpegwasm/libvpx/tree/v1.13.1 Official archive: https://github.com/ffmpegwasm/libvpx/archive/v1.13.1.tar.gz lame Ref: 2badea1974ae36cb8312afe99cff1e6b3b5decee Archive bytes: 1,525,181 SHA-256: 0d97ba0776988f5730e0ce1fa936e7c5d6836c757993ba55073513fe89cf410a Files: lame-2badea1974ae36cb8312afe99cff1e6b3b5decee.tar.gz Source: https://github.com/ffmpegwasm/lame/tree/2badea1974ae36cb8312afe99cff1e6b3b5decee Official archive: https://github.com/ffmpegwasm/lame/archive/2badea1974ae36cb8312afe99cff1e6b3b5decee.tar.gz ogg Ref: v1.3.4 Archive bytes: 255,906 SHA-256: 17e130f823c497ae6be169838389b502a2e8789bad208bb6e39db4618f1f4ece Files: ogg-v1.3.4.tar.gz Source: https://github.com/ffmpegwasm/Ogg/tree/v1.3.4 Official archive: https://github.com/ffmpegwasm/Ogg/archive/v1.3.4.tar.gz theora Ref: v1.1.1 Archive bytes: 1,132,902 SHA-256: 1d5c3b25bbced448f3e741c42df6796e3d5e57136a74bcd68262318290ec2982 Files: theora-v1.1.1.tar.gz Source: https://github.com/ffmpegwasm/theora/tree/v1.1.1 Official archive: https://github.com/ffmpegwasm/theora/archive/v1.1.1.tar.gz opus Ref: v1.3.1 Archive bytes: 828,897 SHA-256: 4834a8944c33a7ecab5cad9454eeabe4680ca1842cb8f5a2437572dbf636de8f Files: opus-v1.3.1.tar.gz Source: https://github.com/ffmpegwasm/opus/tree/v1.3.1 Official archive: https://github.com/ffmpegwasm/opus/archive/v1.3.1.tar.gz vorbis Ref: v1.3.3 Archive bytes: 1,324,249 SHA-256: 3dbb847196087dfabc54f24930191ff50f19868f34458c0f5d6f9789eeb675ff Files: vorbis-v1.3.3.tar.gz Source: https://github.com/ffmpegwasm/vorbis/tree/v1.3.3 Official archive: https://github.com/ffmpegwasm/vorbis/archive/v1.3.3.tar.gz zlib Ref: v1.2.11 Archive bytes: 644,492 SHA-256: 629380c90a77b964d896ed37163f5c3a34f6e6d897311f1df2a7016355c45eff Files: zlib-v1.2.11.tar.gz Source: https://github.com/ffmpegwasm/zlib/tree/v1.2.11 Official archive: https://github.com/ffmpegwasm/zlib/archive/v1.2.11.tar.gz libwebp Ref: v1.3.2 Archive bytes: 3,685,345 SHA-256: c2c2f521fa468e3c5949ab698c2da410f5dce1c5e99f5ad9e70e0e8446b86505 Files: libwebp-v1.3.2.tar.gz Source: https://github.com/ffmpegwasm/libwebp/tree/v1.3.2 Official archive: https://github.com/ffmpegwasm/libwebp/archive/v1.3.2.tar.gz freetype2 Ref: VER-2-10-4 Archive bytes: 2,093,212 SHA-256: b1708021058e573847bcf626f81eac02e4fe47a093a98260c1c73c6492b14db0 Files: freetype2-VER-2-10-4.tar.gz Source: https://github.com/ffmpegwasm/freetype2/tree/VER-2-10-4 Official archive: https://github.com/ffmpegwasm/freetype2/archive/VER-2-10-4.tar.gz fribidi Ref: v1.0.9 Archive bytes: 2,088,184 SHA-256: ef6f940d04213a0fb91a0177b2b57df2031bf3a7e2cd0ee2c6877a160fc206df Files: fribidi-v1.0.9.tar.gz Source: https://github.com/fribidi/fribidi/tree/v1.0.9 Official archive: https://github.com/fribidi/fribidi/archive/v1.0.9.tar.gz harfbuzz Ref: 5.2.0 Archive bytes: 32,956,027 SHA-256: a9fd9869efeec4cd6ab34527ed1e82df65be39cbfdb750d02dfa66148eac4c04 Files: harfbuzz-5.2.0.tar.gz.part001, harfbuzz-5.2.0.tar.gz.part002 Source: https://github.com/harfbuzz/harfbuzz/tree/5.2.0 Official archive: https://github.com/harfbuzz/harfbuzz/archive/5.2.0.tar.gz libass Ref: 0.15.0 Archive bytes: 243,154 SHA-256: 232b1339c633e6a93c153cac7a483e536944921605f35fcbaedc661c62fb49ec Files: libass-0.15.0.tar.gz Source: https://github.com/libass/libass/tree/0.15.0 Official archive: https://github.com/libass/libass/archive/0.15.0.tar.gz zimg Ref: release-3.0.5 Archive bytes: 326,694 SHA-256: a9a0226bf85e0d83c41a8ebe4e3e690e1348682f6a2a7838f1b8cbff1b799bcf Files: zimg-release-3.0.5.tar.gz Source: https://github.com/sekrit-twc/zimg/tree/release-3.0.5 Official archive: https://github.com/sekrit-twc/zimg/archive/release-3.0.5.tar.gz emscripten Ref: 3.1.40 Archive bytes: 28,780,461 SHA-256: eb74cea5feb8881c28e9bb5a6798e7f4e59686e60d8a1bac39e9063a451210e5 Files: emscripten-3.1.40.tar.gz.part001, emscripten-3.1.40.tar.gz.part002 Source: https://github.com/emscripten-core/emscripten/tree/3.1.40 Official archive: https://github.com/emscripten-core/emscripten/archive/3.1.40.tar.gz ffmpeg.wasm Ref: 71aa99d37c02a7b4c435275ca9ef50e612f6efa1 Archive bytes: 1,329,368 SHA-256: 53c5842f160cece0e39345876f9483b56aa84b966637ff6f624353a0fa884219 Files: ffmpeg.wasm-71aa99d37c02a7b4c435275ca9ef50e612f6efa1.tar.gz Source: https://github.com/ffmpegwasm/ffmpeg.wasm/tree/71aa99d37c02a7b4c435275ca9ef50e612f6efa1 Official archive: https://github.com/ffmpegwasm/ffmpeg.wasm/archive/71aa99d37c02a7b4c435275ca9ef50e612f6efa1.tar.gz zimg--test-extra-googletest Ref: 703bd9caab50b139428cea1aaff9974ebee5742e Archive bytes: 905,359 SHA-256: d17b1b83a57b3933565a6d0616fe261107326d47de20288d0949ed038e1c342d Files: zimg--test-extra-googletest-703bd9caab50b139428cea1aaff9974ebee5742e.tar.gz Source: https://github.com/google/googletest/tree/703bd9caab50b139428cea1aaff9974ebee5742e Official archive: https://github.com/google/googletest/archive/703bd9caab50b139428cea1aaff9974ebee5742e.tar.gz Restore within zimg: test/extra/googletest emscripten--test-third_party-googletest Ref: 4fb7039fda3f6588c7ca9664176f8c9e0a023b4a Archive bytes: 865,076 SHA-256: dd38fde91beb130658ea7d7139c3ebcb958a860fdaf7931ae0c7ac6406a59df2 Files: emscripten--test-third_party-googletest-4fb7039fda3f6588c7ca9664176f8c9e0a023b4a.tar.gz Source: https://github.com/google/googletest/tree/4fb7039fda3f6588c7ca9664176f8c9e0a023b4a Official archive: https://github.com/google/googletest/archive/4fb7039fda3f6588c7ca9664176f8c9e0a023b4a.tar.gz Restore within emscripten: test/third_party/googletest emscripten--test-third_party-posixtestsuite Ref: 869e266b090a8d44e51bb040904c942556b1e4ab Archive bytes: 933,724 SHA-256: ecab26113642757be2e032eb180864296b59ac8bd37bc1195af701bc3312a64c Files: emscripten--test-third_party-posixtestsuite-869e266b090a8d44e51bb040904c942556b1e4ab.tar.gz Source: https://github.com/emscripten-core/posixtestsuite/tree/869e266b090a8d44e51bb040904c942556b1e4ab Official archive: https://github.com/emscripten-core/posixtestsuite/archive/869e266b090a8d44e51bb040904c942556b1e4ab.tar.gz Restore within emscripten: test/third_party/posixtestsuite emscripten--test-third_party-wasi-test-suite Ref: ac9371207fc61972a21d7d086074ca690a99d14d Archive bytes: 3,198,335 SHA-256: ff828004a19da3e8034fff789624a9881d50a9ef004ae5c0baddb3270a4e28a7 Files: emscripten--test-third_party-wasi-test-suite-ac9371207fc61972a21d7d086074ca690a99d14d.tar.gz Source: https://github.com/khronosproject/wasi-test-suite/tree/ac9371207fc61972a21d7d086074ca690a99d14d Official archive: https://github.com/khronosproject/wasi-test-suite/archive/ac9371207fc61972a21d7d086074ca690a99d14d.tar.gz Restore within emscripten: test/third_party/wasi-test-suite ffmpeg.wasm--testdata Ref: c81125391a0ada7599edc6bff2da51c1a3ed38d0 Archive bytes: 3,953,399 SHA-256: 8c976891290f497c6e58b6e4d5791702dd43f71ad29defbe9ad0e3cb4821c270 Files: ffmpeg.wasm--testdata-c81125391a0ada7599edc6bff2da51c1a3ed38d0.tar.gz Source: https://github.com/ffmpegwasm/testdata/tree/c81125391a0ada7599edc6bff2da51c1a3ed38d0 Official archive: https://github.com/ffmpegwasm/testdata/archive/c81125391a0ada7599edc6bff2da51c1a3ed38d0.tar.gz Restore within ffmpeg.wasm: testdata sdl2 Ref: release-2.24.2 Archive bytes: 9,039,988 SHA-256: dc33dfdb24c28b757f32345ea8eca67a6030c9dcb084ae8c78bc27a21e737ada Files: sdl2-release-2.24.2.zip Source: https://github.com/libsdl-org/SDL/tree/release-2.24.2 Official archive: https://github.com/libsdl-org/SDL/archive/release-2.24.2.zip