概要
- YouTube動画 を利用したファイル保存・復元技術の解説
- CLI/GUI 両対応、暗号化・冗長化・バッチ処理など多機能
- FFV1/MKV 形式のロスレス動画へのエンコード・デコード
- libsodium によるオプション暗号化
- クロスプラットフォーム なビルド・動作環境
YouTube動画ストレージ技術 概要
- 任意のファイルを FFV1コーデック(MKVコンテナ) のロスレス動画へエンコードし、YouTube等の動画プラットフォームに保存する技術
- 動画から 元ファイルを完全復元 可能なデコード機能
- コマンドラインインターフェース(CLI) と グラフィカルユーザーインターフェース(GUI) を提供
- Wirehair fountain codes による冗長化・修復機能
- libsodium(XChaCha20-Poly1305) によるパスワード付き暗号化オプション
- バッチ処理 やリアルタイム進捗表示、ログ出力などのGUI機能
- マルチスレッド によるUIレスポンス維持
必要要件・インストール方法
- CMake 3.22 以上、 C++23 対応コンパイラ
- FFmpeg, libsodium, OpenMP, Qt6(Core/Widgets) の開発パッケージ
- 主要OS (Ubuntu/Debian, Fedora/CentOS, Arch Linux, macOS, Windows)ごとのパッケージ例を明記
- Ubuntu例:
sudo apt install cmake build-essential qt6-base-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libswresample-dev libsodium-dev libomp-dev ffmpeg
- macOS例:
brew install cmake qt@6 ffmpeg libsodium libomp
- Windows例:
vcpkg install ffmpeg libsodium openmp qt6
- Ubuntu例:
- Qt Online Installer や vcpkg 経由での依存解決も可能
ビルド手順
- 任意ディレクトリで
mkdir buildcmake -B buildcmake --build build
- media_storage (CLI)と media_storage_gui (GUI)の2つの実行ファイル生成
使い方(CLI)
- ファイルを動画へエンコード:
./media_storage encode --input <file> --output <video> [--encrypt --password <pwd>]
- 動画からファイルへデコード:
./media_storage decode --input <video> --output <file>
使い方(GUI)
- シングルファイル操作
- 「Input File」でエンコード対象ファイル選択
- 「Output File」で保存先動画ファイル指定
- 「Encode to Video」または「Decode from Video」で処理開始
- バッチ処理
- 「Add Files」で複数ファイル追加
- 出力ディレクトリ指定、「Batch Encode All」で一括エンコード
- 進捗監視・ログ閲覧
- 進捗バー、ステータス表示、詳細ログパネル
技術詳細
- エンコード: ファイル分割→fountain codes冗長化→動画フレーム埋め込み
- デコード: 動画フレームからパケット抽出→元ファイル再構築
- 動画仕様: FFV1コーデック(MKV)、4K(3840x2160)・30FPS
- 暗号化: XChaCha20-Poly1305 (libsodium)によるオプション暗号化
トラブルシューティング
- Qt6/FFmpeg/libsodium/OpenMP 未検出→対応パッケージインストール確認
- 入力ファイルが開けない →パス・権限確認
- エンコード失敗 →出力先ディスク容量確認
- デコード失敗 →入力動画が有効なエンコード動画か確認
- FFV1 on mp4失敗 →FFmpeg 8以上必須。未満の場合はMKV利用推奨
ライセンス
- GNU General Public License v3 またはそれ以降
- 無償利用・改変・再配布 可能
関連リンク
- 解説動画: YouTube
- Hacker Newsスレッド: YC Hacker News
- CI/CD Pipeline: 最新ビルド成果物のダウンロード可能