# 動画系ツールの FFmpeg core 対応ソース

このディレクトリには、`/app/video-converter/ffmpeg-core.js` と `ffmpeg-core.wasm` のビルド情報とライセンス文を置いています。動画変換・圧縮ツール、MP4→連番画像ツール、連番画像→動画ツールが、日本語版・英語版とも同じ配布ファイルを使用します。ライセンスの案内はサイトの `/open-source-licenses.html` にあります。

## LGPL 構成の FFmpeg core

- FFmpeg: [FFmpeg n5.1.4](https://github.com/FFmpeg/FFmpeg/tree/4729204c17f756e186d622060088371d10b34f7e)。ソース書庫は `/app/audio-codec-comparison/source/FFmpeg-n5.1.4.tar.gz` を共用。FFmpeg のライセンスは LGPL 2.1 以降。
- ffmpeg.wasm バインディング: [v12.15](https://github.com/ffmpegwasm/ffmpeg.wasm/tree/71aa99d37c02a7b4c435275ca9ef50e612f6efa1)。書庫は `/app/audio-codec-comparison/source/ffmpeg-wasm-v12.15.tar.gz`、ライセンス文は同ディレクトリの `FFMPEG-WASM-LICENSE.txt`（MIT）。
- zlib 1.3.2: 書庫は `/app/audio-codec-comparison/source/libav-zlib-1.3.2.tar.gz`。PNG・APNG の入出力に使用。ライセンス文は `ZLIB-LICENSE.txt`。
- OpenH264 2.3.1: [cisco/openh264 v2.3.1](https://github.com/cisco/openh264/tree/v2.3.1)。H.264 エンコードに使用（デコーダーは無効化し、FFmpeg 標準のデコーダーを使用）。BSD 2-Clause、ライセンス文は `OPENH264-LICENSE.txt`。Cisco 配布のバイナリではなくソースからビルドしたものです。
- libwebp 1.3.2: [公式リリース書庫](https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.3.2.tar.gz)。WebP 出力に使用。BSD 3-Clause、ライセンス文は `LIBWEBP-COPYING.txt` と `LIBWEBP-PATENTS.txt`。
- Emscripten: 3.1.40。ツールチェーンの[ソース](https://github.com/emscripten-core/emscripten/tree/3.1.40)と `/app/audio-codec-comparison/source/EMSCRIPTEN-LICENSE.txt` を参照。

FFmpeg は `--enable-zlib --enable-libwebp --enable-libopenh264 --disable-decoder=libopenh264 --disable-gpl --disable-nonfree --disable-postproc` で構成しました。生成した `config.h` は `CONFIG_GPL=0`、`CONFIG_NONFREE=0`、`FFMPEG_LICENSE="LGPL version 2.1 or later"` です。x264、x265、libfdk_aac は組み込んでいません。H.264 は OpenH264、AAC は FFmpeg 標準のエンコーダーを使用します。

リンク時に `-sSTACK_SIZE=5MB` を指定しています。Emscripten 3.1.40 の既定スタック（64KB）では MJPEG エンコーダー（JPEG 出力）がスタックを超過してメモリを破壊するため、この指定は外さないでください。

OpenH264 と libwebp の書庫は容量の都合で同梱していません。ビルドスクリプトが上記 URL から取得し、`SHA256SUMS` と同じハッシュで検証します。取得済みの書庫を使う場合は `SOURCE_CACHE` にそのディレクトリを指定します。

```sh
EMSDK_ENV=/path/to/emsdk_env.sh bash app/video-converter/build-lgpl-core.sh /path/to/output
```

ビルド時の一時ディレクトリのパスによりバイナリのハッシュは変わることがあります。現在の配布ファイルと使用した書庫の SHA-256 は `SHA256SUMS` に記録しています。
