借りているもの (ライセンス)
denpa 自身は AGPL-3.0-or-later (LICENSE) です。ここには、コンテナ イメージに同梱して配っているもの・リポジトリに写してあるもの・ブラウザへ配る束に 入るものを、出どころとライセンスごとに並べます。README の「ライセンス」はこの入口です。
書き方の約束: 「根拠」はリポジトリの中で確かめられるもの (LICENSE ファイル・
Dockerfile の行・package.json) を優先し、上流の表示に拠るものは (上流) と添えます。
版はここに書きません。 Renovate が Dockerfile の ARG / ENV を上げるたびに食い違うので、
いま入っている版は Dockerfile を見てください。
コンテナイメージ denpa に入るもの
Section titled “コンテナイメージ denpa に入るもの”Dockerfile の runtime 段。土台は distroless (gcr.io/distroless/cc-debian13。エージェントと同じ)。
Debian のパッケージ (libva・ドライバなど) は要るファイルだけを写し、そのパッケージの copyright を
/usr/share/doc/<パッケージ>/copyright に置いています。
自前ビルドの ffmpeg と、そこに繋がるもの
Section titled “自前ビルドの ffmpeg と、そこに繋がるもの”--enable-gpl で x264 を繋いでいるので、出来上がる ffmpeg / ffprobe と、2つが共有する libav* の
共有ライブラリ (/usr/local/lib) は GPL-2.0-or-later になります。
| 名前 | 何に | 出どころ | ライセンス |
|---|---|---|---|
| FFmpeg | エンコード・字幕・サムネイル・ライブ | https://ffmpeg.org | LGPL-2.1+ (--enable-gpl で GPL-2.0+) |
| x264 | H.264 のエンコード | https://www.videolan.org/developers/x264.html | GPL-2.0+ |
| SVT-AV1 (ソースから組み、libavcodec に静的リンク) | AV1 のエンコード | https://gitlab.com/AOMediaCodec/SVT-AV1 | BSD-3-Clause-Clear + AOM 特許ライセンス |
| dav1d | AV1 のデコード | https://code.videolan.org/videolan/dav1d | BSD-2-Clause |
| Opus (libopus) | 音声 | https://opus-codec.org | BSD-3-Clause |
| libva / libva-drm | VA-API (GPU でエンコードする) | https://github.com/intel/libva | MIT |
| libvpl / libmfx-gen | Intel QSV (GPU でエンコードする) | https://github.com/intel/libvpl / https://github.com/intel/vpl-gpu-rt | MIT |
| intel-media-va-driver (iHD) | Intel の VA-API ドライバ | https://github.com/intel/media-driver | MIT (一部 BSD) |
| i965-va-driver・libigdgmm・libdrm・libpciaccess | 古い世代の Intel の VA-API ドライバと、ドライバの依存 | Debian のパッケージ | MIT 系 (パッケージの copyright のとおり) |
| zlib | ffmpeg の依存 | https://zlib.net | zlib |
| patches/ | ffmpeg に当てる直しの置き場 (いまは空。denpa が書いたもの。上流に投げる前提) | — | 当てる先と同じ (ffmpeg は LGPL/GPL) |
| 名前 | 何に | 出どころ | ライセンス |
|---|---|---|---|
| Denpa Font | データ放送・字幕と、画面の放送の字 (番組名・説明など) の web フォント (/api/font/denpa-font.woff2 で配る) |
https://github.com/danything/denpa-font のリリースの woff2 (タグで留め、同じリリースの SHA256SUMS で照らす)。BIZ UDゴシック (モリサワ) の角を丸め、BIZ UDゴシックに無い ARIB の記号・字を BIZ UDゴシックの部品で組んで足したもの | SIL OFL 1.1 (元の BIZ UDゴシックと同じ。原文は denpa-font の README) |
フォントに入る字は denpa の字の表 (b24-tables.ts・aribtext-gaiji.ts など) から作られる (denpa-font の fetch.sh が版を留めて読む)。
表に字を足したら: src/lib/ts/font-coverage.test.ts が取ってくるフォントに無い字を出して落ちる →
denpa-font の DENPA_COMMIT を上げて (元に無い字は描き方を足して) 版を出す → ここの Dockerfile の
DENPA_FONT_VERSION (タグ) を上げる (Renovate の github-releases)。
| 名前 | 何に | 出どころ | ライセンス |
|---|---|---|---|
Bun (実行バイナリだけ oven/bun から写す) |
denpa 本体を動かす | https://github.com/oven-sh/bun | MIT (中の JavaScriptCore は LGPL-2.1) |
| 土台 (glibc・libstdc++・zlib・ca-certificates・tzdata) | bun と ffmpeg を動かす・証明書・時刻 | https://github.com/GoogleContainerTools/distroless (中身は Debian のパッケージ) | 組み方は Apache-2.0。中身はパッケージごと: glibc は LGPL-2.1+、libstdc++ は GPL-3.0+ (GCC Runtime Library Exception)、zlib は zlib、ca-certificates は MPL-2.0、tzdata はパブリックドメイン |
コンテナイメージ denpa-agent に入るもの
Section titled “コンテナイメージ denpa-agent に入るもの”agent/Dockerfile。土台は distroless (gcr.io/distroless/cc-debian13。Debian 13 のパッケージから要るものだけを置いたもの)。
.NET の Native AOT で 1 つのバイナリにしてあり、
NuGet の依存は 0 (JSON はランタイムの System.Text.Json)。
| 名前 | 何に | 出どころ | ライセンス |
|---|---|---|---|
| .NET 10 ランタイム (AOT でバイナリに埋まる) | エージェント本体 | https://github.com/dotnet/runtime | MIT |
px4-userland (/opt/px4-userland) |
PLEX PX-Q3U4 / PX-W3U4 / PX-MLT 系、e-Better / Digibest 系のユーザー空間ドライバ。px4d / px4ctl (配布物に入っている px4-ts と pcscd 用 IFD ハンドラは使わない) |
https://github.com/Khronos31/px4-userland | GPL-2.0-only (実行ファイルに静的リンクの libusb 1.0.30 は LGPL-2.1+。配布物の THIRD_PARTY_NOTICES.md を同梱のまま置いてある) |
IT930x ファームウェア (/opt/px4-userland/firmware/it930x-firmware.bin、2,169 バイト) |
挿すたびに流し込む (px4-userland の対応機種で共通) | PLEX 公式の Windows ドライバ (pxw3u4_BDA_ver1x64.zip の PXW3U4.sys、著作権表示は Digital Warrior Corp.) からイメージを組むときに切り出す (agent/Dockerfile) |
ライセンス無し (再配布の許諾は誰も持っていない。権利者が動いていない実態に乗る判断。tuner-px4.md) |
siano-userland (/opt/siano-userland) |
PLEX PX-S1UD など Siano RIO 系のユーザー空間ドライバ。siano-ts |
https://github.com/Khronos31/siano-userland | GPL-2.0-or-later (実行ファイルに静的リンクの libusb 1.0.30 は LGPL-2.1+。配布物の COPYING・libusb/COPYING・DEPENDENCY-NOTICE.txt を同梱のまま置いてある) |
asicen-userland (/opt/asicen-userland。上流のリリース待ちで、いまは空) |
PLEX PX-W3U3 のユーザー空間ドライバ (試験的)。asicend / asicenctl、あればファームウェアを流す asicen-probe (配布物に入っている asicen-ts と pcscd 用 IFD ハンドラは使わない) |
https://github.com/Khronos31/asicen-userland | GPL-2.0 (px4-userland 由来の GPL-2.0-only と GPL-2.0-or-later の組み合わせ。静的リンクの libusb は LGPL-2.1+、musl と GCC ランタイムもそれぞれの条件。配布物の licenses/ を同梱のまま置く) |
ASICEN ファームウェア (/opt/asicen-userland/firmware/asicen-loader.bin、16,384 バイト。入るのは上流のリリースから) |
挿した直後の PX-W3U3 に流し込む | asicen-userland の配布アーカイブに入っているものをそのまま (元は PLEX 公式 Linux ドライバの loader.ko の FirmBin、SHA-256 b45d510200a1690b3ca358d93de13f40e1d3567b663c17e773349ad96f597aa8。イメージを組むときに突き合わせる) |
ライセンス無し・再配布の権利は未確定 (上流 NOTICES.md の判断で配布物に入る。上流が添える licenses/VENDOR-FIRMWARE-NOTICE.txt に権利未確定・元の成果物・大きさ・SHA-256 が書いてあり、同じ場所に置いてある。tuners.md) |
Siano ISDB-T ファームウェア (/opt/siano-userland/firmware/isdbt_rio.inp、85,840 バイト) |
siano-ts が USB で流し込む | siano-userland の配布アーカイブに入っているもの (Siano Mobile Silicon) | Siano の再配布許諾 (無改変なら再配布可。解析は禁止。許諾の文面 LICENCE.siano を同じ場所に置いてある) |
| 土台 (glibc・libssl・ca-certificates・libstdc++・tzdata) | エージェントを動かす。libssl と ca-certificates は CARD_URL を https で指したときの検証 |
https://github.com/GoogleContainerTools/distroless (中身は Debian のパッケージ) | 組み方は Apache-2.0。中身はパッケージごと: glibc は LGPL-2.1+、OpenSSL は Apache-2.0、ca-certificates は MPL-2.0、libstdc++ は GPL-3.0+ (GCC Runtime Library Exception)、tzdata はパブリックドメイン |
Mac に入れるもの (install.sh)
Section titled “Mac に入れるもの (install.sh)”リリースに添えた denpa-agent-<版>-darwin-arm64.tar.gz (上と同じ .NET の Native AOT のバイナリ1個) と、
上と同じ px4-userland / siano-userland の Mac 版 (darwin-arm64)・同じファームウェア (IT930x のものは install.sh が手元で切り出す。asicen-userland は Mac 版が出ていないので入れません)。
libusb 1.0.30 (LGPL-2.1+) が実行ファイルに静的リンクなのも上と同じで、
配布物の DEPENDENCY-NOTICE.txt / THIRD_PARTY_NOTICES.md もそのまま置きます。
USB のカードリーダーは macOS の PCSC.framework (OS の一部) を呼びます。
denpa 本体は上と同じコンテナイメージ denpa を、Mac の Docker で動かします。
Windows に入れるもの (install.ps1)
Section titled “Windows に入れるもの (install.ps1)”リリースに添えた denpa-agent-<版>-windows-x64.zip (denpa-agent.exe 1個) と、px4-userland / siano-userland の
Windows 版 (windows-x86_64 / windows-x64)・同じファームウェア (IT930x のものは Mac と同じく手元で切り出す)。
px4-userland の配布 zip から置くのは px4d.exe・px4ctl.exe と、ライセンスの文書 (LICENSE・DEPENDENCY-NOTICE.txt・
THIRD_PARTY_NOTICES.md・libusb/COPYING・toolchain/ の下の MinGW-w64 などのもの) だけで、px4-ts.exe と
WinSCard.dll は置きません。libusb 1.0.30 (LGPL-2.1+) が px4d.exe に静的リンクなのは上と同じです。
asicen-userland は入れません (Windows 版が無い)。カードリーダーは Windows の WinSCard (winscard.dll。OS の一部) を呼びます。
denpa-aio
Section titled “denpa-aio”上の denpa に、denpa-agent の実行ファイルと /opt/px4-userland・/opt/siano-userland・/opt/asicen-userland を
写しただけのもの (.github/aio.Dockerfile)。中身もライセンスも上の2つと同じです。
リポジトリに写してあるもの・借りた表
Section titled “リポジトリに写してあるもの・借りた表”| 名前 | 場所 | 何に | 出どころ | ライセンス |
|---|---|---|---|---|
| BS / CS の標準の局の表 | src/lib/server/channel-seed.json | BS・CS の局が無いときに入れる BS 26 + CS 12 TS (channel-seed.ts) |
Khronos31/hassio-addons の denpa アドオンの seed/channels.bs.json |
MIT |
| ARIB ロゴの CLUT (129 色) | src/lib/ts/logo-palette.ts | 局ロゴの PNG 化 | node-aribts / @chinachu/aribts の logo_clut.js と同じ並び |
MIT (上流) |
| ARIB 外字表 | src/lib/ts/aribtext-gaiji.ts | 番組名の「🈟」「🈑」など | 字は字幕の表 (下の b24-tables.ts) を引く。番組表だけで違える数点 (楽器の略号の文字列・空きの埋め方) は epgdump_py (Yasumasa Murakami, 2011) → ariblib に引き継がれた表から | MIT (libaribcaption・ariblib。上流) |
| 字幕の文字の表とデコード方法 | src/lib/ts/b24-tables.ts / b24caption.ts | 字幕を文字の配置にする (表は libaribcaption の b24_conv_tables.hpp / b24_gaiji_table.hpp / b24_colors.cpp / b24_drcs_conv.cpp を写したもので、いまは denpa が手で持つ。デコードの方法は decoder_impl.cpp を TypeScript に写したもの) | libaribcaption (Copyright (C) 2021 magicxqq) | MIT (上流) |
| 選局表の値と選局手順 | agent/Denpa.Agent/ChannelTable.cs / Tuning.cs |
チャンネル名 → 周波数、DVB の手順 | recisdb-rs の dvbv5_channels_isdbs.conf / dvbv5.rs を参照 (コードは写していない) |
GPL-3.0 (上流) |
| エンコード再試行の秒数 (0.2) | src/lib/server/config.ts | 値だけ | EPGStation の enc.js |
MIT (上流) |
| アイコン類 | static/ | PWA のアイコン | 自作 | AGPL (denpa と同じ) |
ブラウザへ配る束・サーバの束に入る主なもの
Section titled “ブラウザへ配る束・サーバの束に入る主なもの”package.json に runtime の dependencies は無く、adapter-bun が全部を build/ に
畳み込みます (イメージにもそれだけを載せる)。MIT がほとんどで、例外は Apache-2.0 の
drizzle-orm と、ISC の Lucide (アイコンの図形)。
| 名前 | 何に | 出どころ | ライセンス |
|---|---|---|---|
| Svelte / SvelteKit / adapter-bun | 画面・ルーティング・サーバの束 | https://github.com/sveltejs | MIT |
| Blades (Pico CSS を引き継いだもの) | 見た目の土台 | https://blades.ninja | MIT |
| drizzle-orm | SQLite の読み書き (サーバの束) | https://github.com/drizzle-team/drizzle-orm | Apache-2.0 |
Lucide (@iconify-json/lucide から、使ったアイコンの <svg> だけ) |
画面のアイコン (player.md) | https://lucide.dev | ISC |
| unplugin-icons / @iconify/utils (組むときだけ。束には入らない) | ~icons/* を Svelte の部品に変える |
https://github.com/unplugin/unplugin-icons / https://github.com/iconify/iconify | MIT |
| cookie / devalue / esm-env / clsx | SvelteKit のランタイム (adapter-bun は静的ファイルを Bun の routes で配り、依存を束に持ち込まない) |
各上流 | MIT |
データ放送のエンジン (src/lib/bml/。stream.md) は自前で、依存を持たない。
規格 (ARIB STD-B24・TR-B14・TR-B15) を元に書き、NVRAM の領域の表・郵便番号の範囲の読み方・
BinaryTable の検索の比べ方・既定のスタイルなど一部は web-bml (otya128、MIT) の振る舞いを読んで合わせた (下の「使っていないもの」)。
ライブを変換せずに見るときにブラウザへ配るデコーダ
Section titled “ライブを変換せずに見るときにブラウザへ配るデコーダ”Dockerfile の mpeg2wasm 段で組み、イメージの /opt/denpa/mpeg2 に置いて
/api/live/mpeg2/ から配る WebAssembly (stream.md)。
--enable-gpl を付けずに組んでいるので、中の FFmpeg は LGPL のまま (denpa 自身は AGPL で、
どちらでも問題は無い)。ソースは Dockerfile が取ってくる FFmpeg の tarball と wasm/mpeg2/decoder.c。
| 名前 | 何に | 出どころ | ライセンス |
|---|---|---|---|
| FFmpeg (libavcodec の mpeg2video・aac デコーダと mpegvideo parser、libavutil だけ) | 放送の MPEG-2 と AAC をブラウザでデコードする | https://ffmpeg.org | LGPL-2.1+ |
emscripten のローダー (decoder.mjs に埋まる実行時の糊) |
WASM を worker に読み込む | https://github.com/emscripten-core/emscripten | MIT / University of Illinois/NCSA |
使っていないもの (書いておく価値のあるもの)
Section titled “使っていないもの (書いておく価値のあるもの)”- web-bml (otya128, MIT) — 2026-10 までデータ放送を描いていた借りもの。自前のエンジン
(
src/lib/bml/) に置き換えて外した (es2・crc-32・css・fast-xml-parser・arib-mmt-tlv-ts・fflate も一緒に抜けた) - @chinachu/aribts / aribb24.js / mpegts.js / hls.js / shaka-player — 検討したうえで 自前実装にしたもの (stream.md)
- @iconify/svelte / lucide-svelte — アイコンは組むときに埋め込む unplugin-icons にした
(player.md)。
@iconify/svelteは既定で Iconify の API からアイコンデータを取得し、LAN だけ・オフラインで開けない - OIDC のライブラリ — 入れていません (auth.md)
- recisdb — 選局は自前で ioctl を呼びます。値の出どころとして上に書いてあります