Smart Chrome ビデオダウンローダー&トリマー
概要
Smart Chrome Video Downloader Trimmer は、Manifest V3 に準拠した Chrome 拡張機能で、訪れたページ内の再生可能なビデオを漏れなく検出し、ユーザが選択した区間をフレーム精度でトリミングしてダウンロードできるツールです。拡張はブラウザ側でストリーム候補(HTMLMediaElement、MSE 断片、埋め込み URL など)を発見し、Native Messaging を介してローカルの yt-dlp と FFmpeg を呼び出してダウンロードとトリミングを行います。断片化された HLS/DASH のようなストリームにも対応し、UI で直感的に切り取り範囲を指定できます。
リポジトリの統計情報
- スター数: 1
- フォーク数: 0
- ウォッチャー数: 1
- コミット数: 11
- ファイル数: 4
- メインの言語: JavaScript
主な特徴
- ページ上の再生可能ビデオを網羅的に検出(隠れた要素や断片化ストリームを含む)
- GUI 上でのトリミング操作により、フレーム単位で切り出し範囲を指定可能
- FFmpeg のストリームコピーを使った高速なトリミング(再エンコード不要)
- yt-dlp を用いた堅牢なダウンロード、Chrome Native Messaging でネイティブ呼び出し
技術的なポイント
(700字程度)
本プロジェクトは「ブラウザ拡張(Manifest V3)」と「ネイティブホスト」の二層構成が核です。拡張側はページ上の HTMLMediaElement や Media Source Extensions(MSE)を監視して、再生可能なソース URL やバッファ情報、断片(segment)への参照を収集します。断片化された HLS/DASH のようなストリームは単一の MP4/TS ファイルとして存在しないため、yt-dlp を使ってストリーム全体をフェッチし、ローカルで一時保存/パイプ処理するアプローチを採っています。
トリミングは FFmpeg の「ストリームコピー(-c copy)」を中心に行うことで、再エンコードを回避し高速かつ無劣化での切り出しを実現します。ただしストリームコピーでのシークはキーフレームの粒度に依存するため、フレーム単位の精度を保証するには FFmpeg のオプションや前処理(デマルチプレックスや索引作成)を工夫する必要があります。README では「frame-accurate」と謳われていますが、実装上は FFmpeg のシーク位置やコンテナ形式の特性を踏まえた調整を行っている可能性が高いです。
Manifest V3 の制約(サービスワーカー背景、ネイティブ接続の安全性)に対応するため、拡張からは Chrome Native Messaging を通じてホストアプリ(host ディレクトリ)を呼び出します。これにより拡張単体では実行できない yt-dlp / ffmpeg といったネイティブバイナリを利用可能にしています。ホスト側のインストール手順(Install.bat)が同梱されており、Windows 環境での登録やパス設定を自動化する補助が用意されています。セキュリティ面では、Native Messaging のマニフェスト登録や許可プロンプトが必要なため、ユーザ側での同意とインストール作業が重要です。
全体として、Web 層の検出ロジックとネイティブツールをつなぐブリッジ実装が本プロジェクトの肝であり、断片化ストリーム対応・高速トリミング・堅牢なダウンロードを同時に満たす設計になっています。
プロジェクトの構成
主要なファイルとディレクトリ:
- Extension: dir
- Install.bat: file
- README.md: file
- host: dir
まとめ
ブラウザとネイティブツールを組み合わせ、断片化ストリームの正確なトリミングとダウンロードを可能にする実用的な拡張です。