録画したTSファイル、
Blu-rayレコーダーで再生できる形にしませんか?

bdav は、PT3 などで録画した MPEG2-TS を家庭用 Blu-ray レコーダー/プレイヤー互換の BDAV 形式に変換する Linux 用のフリーコマンド。Wine 不要、再エンコード不要。コマンド 2 つで、録りためたアニメがディスクに焼ける形になります。

🆓 無料・オープンソース (MIT) 🐧 Linux / macOS 対応 🍷 Wine・外部バイナリ不要 🎞 再エンコードなし = 無劣化
# インストールから BDAV 作成まで、たったこれだけ
$ uv tool install --from git+https://github.com/sorshi/bdav bdav
$ bdav author --input-dir /mnt/rec/7749 --output /work/disc1

こんな経験、ありませんか?

😩 録画がHDDに溜まる一方… PT3 や foltia ANIME LOCKER で録りためた TS ファイル。ディスクに残したいのに、Linux でオーサリングする手軽な方法がない。
🍷 Wine + Windowsソフトはもう疲れた BDAV を作るためだけに Wine で Windows 用ツールを動かす環境構築。アップデートのたびに壊れて、メンテが苦行に。
✍️ タイトル入力が面倒すぎる 1クールぶん12話、各話のサブタイトルを手で入力…。話数が多いほど気が遠くなる作業です。

bdav が全部解決します

BD-RE Part 3 (BDAV) 規格を Python 標準ライブラリだけでネイティブ実装。だからシンプルで壊れにくい。

🐧

Linux だけで完結

Wine もサードパーティ製バイナリも不要。公開規格 BD-RE Part 3 (BDAV) のネイティブ実装で、Python 標準ライブラリのみで動作します。macOS でも動きます。

🎞

無劣化・音声もそのまま

ffmpeg や tsMuxeR による再多重化・再エンコードは行いません。放送そのままの画質で、ステレオ/サラウンド/二カ国語といった音声構成も正しく保持されます。

📝

サブタイトル自動取得

アニメ番組表データベース「しょぼいカレンダー」と連携し、各話のサブタイトルを自動で解決。「#1 はじまりの章」のような番組名を手入力なしで付けられます。

🤖

foltia ANIME LOCKER 連携

foltia 形式のファイル名 ({TID}-{話数}-…) からタイトルと話数を自動抽出。CMカット情報を元にしたチャプターの自動生成にも対応します。

プレビューしてから安心実行

「プレビュー → 確認 → ビルド」の2段階フロー。プラン(JSON)を編集してタイトルを微調整することも、CI/自動化向けの一発実行もできます。

📺

実機再生確認済み

出力した BDAV ファイルツリーを BD-R/BD-RE に書き込めば、家庭用 Blu-ray レコーダー/プレイヤーでそのまま再生できます。

使い方は3ステップ

録画ディレクトリを指定してプランを作り、確認して、ビルドするだけ。

1

プランを作成 — サブタイトルは自動取得

録画ファイルのあるディレクトリを指定すると、しょぼいカレンダーから各話のサブタイトルを取得したプラン(JSON)が生成されます。

$ bdav plan --input-dir /mnt/ts/7749/ --plan ./7749.plan.json
2

プランを確認・編集(任意)

生成された JSON にはタイトル・話数・チャプターなどが入っています。「#1 レプリカは、夢を見ない。」のように整形済み。気になる箇所があればテキストエディタで直せます。

"formatted_title": "#1 レプリカは、夢を見ない。",
"channel_name": "AT-X",
"rec_time": "2026-04-07T23:30:00"
3

ビルド — BDAV ツリーが完成

あとは出力を待つだけ。できあがった BDAV ディレクトリを UDF 2.5 で BD-R/BD-RE に書き込めば、レコーダーで再生できます。

$ bdav build --plan 7749.plan.json --output /mnt/ts/bdav/
# 急いでいるなら、プレビュー付きワンショット実行でもOK
$ bdav author --input-dir /mnt/foltia/7749 --output /work/disc1 \
    --channel-name BS11 --channel-number 211

# 何が起きるか見るだけ (dry-run)
$ bdav author --input-dir /mnt/foltia/7749 --dry-run

インストール

依存ライブラリはゼロ。uv か pipx なら、システムの Python を汚さずに1行で入ります。

# A. uv (推奨)
$ curl -LsSf https://astral.sh/uv/install.sh | sh
$ uv tool install --from git+https://github.com/sorshi/bdav bdav

# B. pipx
$ pipx install git+https://github.com/sorshi/bdav

# C. pip + venv
$ git clone https://github.com/sorshi/bdav.git && cd bdav
$ python3 -m venv .venv && source .venv/bin/activate
$ pip install -e .

対応環境

OS最小バージョン備考
Debian10 (buster) 以降Debian 12 推奨 / glibc 2.28+
Ubuntu18.04 LTS 以降24.04 LTS 推奨 / glibc 2.27+
RHEL / AlmaLinux / Rocky8 以降glibc 2.28+
macOS12 Monterey (Intel) / 11 (Apple Silicon)純 Python のため動作
WindowsWSL2ネイティブ動作は未確認
入力形式処理
.m2ts (192バイトTS)そのまま STREAM/ に配置 (6144バイト境界に整列)
.ts / .m2t (188バイトTS)PCR から到着時刻を補間し、192バイト M2TS にラップ

よくある質問

無料で使えますか?
はい。MIT ライセンスのオープンソースソフトウェアで、無料で利用できます。ソースコードは GitHub で公開されています。BD-RE Part 3 (BDAV) の独立実装であり、サードパーティのバイナリやコードを含みません。
画質は落ちませんか?
落ちません。再エンコードや再多重化を行わず、放送の MPEG2-TS ストリームをそのまま BDAV コンテナに収めます。ステレオ/サラウンド/二カ国語などの音声構成も実ストリームの解析に基づいて正しく記録されます。
作った BDAV はどうやってディスクに焼くのですか?
bdav が出力するのは BDAV ファイルツリー (BDAV/ ディレクトリ) です。これを UDF 2.5 で BD-R/BD-RE に書き込んでください。ImgBurn などの書き込みソフトが利用できます。書き込んだディスクは家庭用 Blu-ray レコーダー/プレイヤーで再生できます。
アニメ以外の録画にも使えますか?
使えます。しょぼいカレンダー連携や foltia ファイル名の自動解析はアニメ向けの便利機能ですが、--input--title でファイルごとにタイトルを手動指定すれば、任意の MPEG2-TS 録画をオーサリングできます。
しょぼいカレンダーに繋がらないときは?
--no-api フラグを付けると外部 API への問い合わせをスキップして動作します。タイトルは手動指定またはプラン JSON の編集で設定できます。
チャプターは付けられますか?
はい。デフォルトで一定間隔のチャプターが打たれるほか、foltia ANIME LOCKER の CM カット情報からチャプターを自動生成することもできます。プラン JSON で任意の位置を指定することも可能です。

さあ、録りためた作品をディスクに残そう

インストールは1行。今日からあなたの Linux マシンが BDAV オーサリング環境になります。