ダリジャ動画編集スイート (darija-video-editing)
モロッコ・ダリジャ語(الدارجة المغربية) で収録された高ビットレートのモバイルカメラ映像(MotionCam Pro / Android / Open Gate)を Storyteller FilmCraft で編集するための包括的なパイプラインです。
ダリジャ語モバイル動画制作における4つの重要な課題を解決します:
- MTPバス停止・切断問題:チャンク単位のバイト追記再開機能による堅牢な逐次ファイル取得。
- マシン再生ラグとディスク肥大化:超コンパクト960×720イントラフレンドリープロキシ(
-bf 0、-tune fastdecode)で138+ fpsのデコード速度を実現し、96%以上のディスク削減。 - FilmCraftの言語ミスマッチ:英語デフォルトの文字起こしを
faster-whisper(--language ar)に置き換え、LinuxのARG_MAX制限を回避するためstdin経由で安全にワードタイムスタンプをストリーミング注入。 - YouTube成長の相乗効果:長尺動画のストーリーテリングを優先し、その後高リテンションの9:16縦型Shortsを生成し、YouTubeの「関連動画」ファネルで直接リンク。
5フェーズ運用プロトコル
[スマートフォン (MTP)] ──> フェーズ1: mtp_ingest.py ──> [生映像]
│
├──> フェーズ2: generate_proxies.py ──> [960×720 プロキシ (~1.5GB)]
│
├──> フェーズ3: darija_transcribe.py ──> [ワードタイムスタンプ]
│
└──> フェーズ4: filmcraft_pipeline.py ──> [LongForm_Fisik101.fcproj]
│
(承認済みマスターカット)
│
フェーズ5: 9:16 Shorts ファネル
フェーズ1: モバイル&MTP堅牢取り込み
モバイルカメラ映像(例:MotionCam Pro 4K/UHD オープンゲート)はUSB経由で40~100GBのファイルを生成します。標準のGVFS/MTP GUIコピーでは長時間転送中にクラッシュやフリーズが発生します。
堅牢な逐次取り込みツールを実行します:
python3 scripts/mtp_ingest.py \
--dst "/path/to/project/raw_footage" \
--pattern "*.mov" \
--date "YYMMDD"
- スマートチャンク再開:10GBのファイルの転送が途中で中断された場合、既存のバイト数を読み取り、そのオフセットから残りのチャンクを追記します。最初から再ダウンロードする必要はありません。
- 逐次スレッド処理:単一ファイル転送を強制し、MTPプロトコルのパイプ衝突を防止します。
フェーズ2: 超軽量編集プロキシ(ディスク&CPUに優しい)
生の4000×3008映像は標準的なCPUでリアルタイム再生を下回ります(約18 fps)。このプロキシはインスタントでゼロラグのタイムラインスクラブを実現し、元のディスク容量の4%未満に抑えます:
python3 scripts/generate_proxies.py \
--input "/path/to/project/raw_footage" \
--output-dir "/path/to/project/proxies" \
--width 960 \
--crf 24
- 仕様:
- スケール:
960×720(正確な4:3)または960×540(16:9)。 - Bフレームなし(
-bf 0)& GOP 60:予測的なインターフレームデコード遅延なしでインスタントフレームシーク。 - Fastdecodeチューニング(
-tune fastdecode):高複雑度のCABACとインループデブロッキングを無効化。FilmCraftで138+ fpsでデコード。 - オーディオパススルー(
-c:a copy):元の48kHzステレオオーディオをビット単位でロスレスコピー。Track A1でクリーンな波形とダイアログ同期を維持。 - ディスク容量: 1時間以上の4K映像で合計約1.5GB(96%以上の容量節約)。
- スケール:
フェーズ3: モロッコ・ダリジャ語音声認識とFilmCraftネイティブ注入
FilmCraftのネイティブ自動文字起こしはデフォルトで英語("defaultLanguage": "en")になります。ダリジャ語文字起こしエンジンを使用して単語レベルのタイムスタンプを抽出します:
uv run --python 3.12 --with "faster-whisper" --with "av<14" python3 \
scripts/darija_transcribe.py \
--input "/path/to/clip.mov" \
--output "/path/to/transcripts/clip.json" \
--model small \
--language ar
安全なstdin文字起こし注入(ARG_MAX回避)
長いクリップ(5分以上)は数千のタイムスタンプ付き単語を生成します。これらをコマンドライン文字列で渡すとOSError: [Errno 7] Argument list too longが発生します。
filmcraft-cli run - を使用してJSONコマンドペイロードをstdin経由で必ずストリーミング送信します:
import json, subprocess
TICKS_PER_SEC = 254016000000
cmd_obj = {
"id": "transcript.set",
"params": {
"item": item_id,
"transcript": {
"language": "ar",
"speakers": [{"name": "スピーカー 1"}],
"words": [
{
"text": w["word"],
"start": int(round(w["start"] * TICKS_PER_SEC)),
"end": int(round(w["end"] * TICKS_PER_SEC)),
"speaker": 0
}
for w in words_data
]
}
}
}
subprocess.run(
["filmcraft-cli", "--project", "project.fcproj", "--save", "run", "-"],
input=json.dumps(cmd_obj) + "\n",
text=True
)
フェーズ4: 長尺タイムラインマスターアセンブリ
単一のコマンドスイートでFilmCraftプロジェクト全体とタイムラインをオーケストレーションします:
# 1. マスター4Kシーケンスを初期化(V1-V3, A1-A3)
python3 scripts/filmcraft_pipeline.py init \
--project "/path/to/LongForm_Fisik101.fcproj" \
--sequence-name "マスターアセンブリ" \
--width 3840 --height 2160 --fps 24.0
# 2. すべての生映像を一括インポート
python3 scripts/filmcraft_pipeline.py import \
--project "/path/to/LongForm_Fisik101.fcproj" \
--media "/path/to/raw_footage"
# 3. クリップを時系列でTrack V1 / A1に配置
python3 scripts/filmcraft_pipeline.py assemble \
--project "/path/to/LongForm_Fisik101.fcproj"
# 4. すべてのアイテムに生成済みプロキシをアタッチ
python3 scripts/filmcraft_pipeline.py attach-proxies \
--project "/path/to/LongForm_Fisik101.fcproj" \
--proxies-dir "/path/to/proxies"
# 5. すべてのアイテムにダリジャ語文字起こしを注入
python3 scripts/filmcraft_pipeline.py attach-transcripts \
--project "/path/to/LongForm_Fisik101.fcproj" \
--transcripts-dir "/path/to/transcripts"
グローバル設定
起動時にFilmCraftが自動的にプロキシ再生にデフォルト設定されるよう、~/.local/share/filmcraft/preferences.json を確認します:
"enableProxies": true
フェーズ5: YouTube成長とShortsスピンオフファネル(@fisik101)
長尺マスターカットが完成し承認されたら:
- 戦略的な投稿間隔:
- 長尺動画: 週1~2本(アップロード間隔は48~72時間空け、BrowseおよびSuggestedアルゴリズムがインデックスできるようにする)。
- Shorts: 1日あたり2~3本、3~4時間間隔で投稿(例:13:00、17:00、21:00 GMT+1)。
- 関連動画ファネル:
- 長尺マスターから抽出した各Shortsについて、YouTube Studioの「関連動画」リンクを元の長尺動画に設定します。
- 高ボリュームのShorts視聴を直接長尺動画の視聴時間とチャンネル登録者に変換します。
- Short用キャンバスとスタイリング:
- 9:16縦型キャンバス(1080×1920)。
- マイク/胸元のセーフゾーン(
margin_v: ~420px)に高コントラストの動的キャプション。 - フック→ストーリー→ペイオフ構造(無音部分が0.4秒を超える場合は80msの子音保護バッファで削除)。