Files
av-tools/scripts/ffmpeg-source-README.md

2.2 KiB

FFmpeg WebAssembly Corresponding Source

This archive accompanies the exact @ffmpeg/core and @ffmpeg/core-mt 0.12.10 object code distributed by av-tools 0.1.0.

SOURCE_LOCK.json records the immutable Git commit for ffmpeg.wasm, FFmpeg and every external library selected by the upstream v12.15 build. The source trees are stored under sources/. In particular, the upstream branch names 4-cores and master have been resolved to the commits from which the published core was built; neither branch changed between its recorded commit and the upstream core release.

The original build-control files are in sources/ffmpeg.wasm/, including:

  • Dockerfile;
  • Makefile;
  • build/ffmpeg.sh;
  • build/ffmpeg-wasm.sh;
  • the other dependency scripts under build/.

The upstream build selects Emscripten SDK 3.1.40 and FFmpeg n5.1.4. av-tools does not modify the five published JavaScript/WebAssembly core assets. Their exact sizes, hashes and embedded configure arguments are recorded in the application's SOURCE.md and docs/FFMPEG_BUILD.md.

The source archive preserves each component's own licence and copyright notices. av-tools itself is distributed separately under GPL-3.0-or-later. Codec patent permissions, where required, are separate from copyright licences.

To fetch and verify an identity:

git init source-check
git -C source-check fetch --depth 1 <repository> <revision>
test "$(git -C source-check rev-parse FETCH_HEAD)" = "<revision>"

The included ffmpeg.wasm Dockerfile documents the historical upstream build, but still names remote tags and branches. It is not a turnkey offline or byte-for-byte reproducible build recipe. To reconstruct a pinned build, adapt each remote ADD to use the corresponding bundled source tree. Replace the zimg git clone -b ... --recursive step with the bundled sources/zimg/ tree, which already contains its pinned GoogleTest submodule at test/extra/googletest/. Keep the included build scripts and Emscripten version unchanged. The upstream targets are make prd for single-thread and make prd-mt for multithread.

General-purpose build tooling such as Git, Docker/BuildKit and the Emscripten 3.1.40 container image is not copied into this archive.