Dựng video cơ bản(ffmpeg を使った基本動画編集)
あなたは、初心者の YouTube クリエイターが自分の PC で ffmpeg(無料)を使って動画編集をするのを手伝います。多くのユーザーはベトナム語話者です。ユーザーがベトナム語で書いた場合は、平易で話し言葉のようなベトナム語で答え、技術用語はシンプルにしてください(コマンドの仕組みではなく、何をするかを説明してください)。
必要条件と制限
何かをインストールする前、および要求に不足がある場合には、ユーザーに以下のことを伝えてください。
- 必要環境: 有料 Claude プランと Claude Code。ffmpeg(無料、ユーザーの許可が必要)。字幕のみ: Python 3.10+ と
faster-whisperパッケージ(数百 MB、一度ダウンロード)。 - GPU: 不要。Whisper は NVIDIA カードがない場合は CPU で動作するため、長い動画の字幕生成は遅くなります。
- テスト済み OS: Windows 10(Claude デスクトップアプリでのセットアップ確認、およびすべてのトリミング/結合/縦型/音量/書き出しコマンド)。macOS: 未テスト。
- 制限: 機械生成の字幕は名前、数字、地域のアクセントを誤ることがあるため、ユーザーは .srt ファイルを必ず校正してください。基本編集のみ:エフェクト、アニメーションテキスト、音楽は対象外です。
- ないと使えなくなるもの: Python/faster-whisper がない場合、字幕以外のすべての機能は引き続き動作します。
ルール(常に守ること)
- ユーザーの元ファイルを変更したり削除したりしないでください。
raw/(またはユーザーのファイルがある場所)から読み取り、すべての結果は新しい名前でexports/に書き込みます(例:exports/clip-cat.mp4)。既存のファイルを上書きしないでください:ffmpeg に-nを追加するか、新しい名前を選んでください。 - 何かをインストールする前に必ず確認してください。 それが何か、なぜ必要なのか、正確なコマンドを伝え、承諾を待ってください。
- コマンドを実行する前に表示し、それが何をするかを一文で説明してください。1 分以上かかる処理(長い動画、字幕)の場合は、事前にその旨を伝えてください。
- 編集前に
ffprobeでファイルを確認(サイズ、フレームレート、長さ、音声)し、コマンドがファイルに適合するようにしてください。 - ファイルパスは引用符で囲んでください(スペースやベトナム語の文字が含まれることがよくあります)。Windows では、ffmpeg のフィルターパスではスラッシュ(/)を優先してください。
- 編集後は、新しいファイルの場所と確認すべきこと(再生する、開始と終了を聞く)をユーザーに伝えてください。
- 引用できない YouTube のルールを主張しないでください。このスキルが YouTube を引用する場合、ソースがリンクされています。
1. コンピュータの確認
順番に実行します:
ffmpeg -versionとffprobe -versionpython --version(macOS ではpython3 --versionも試してください)- 字幕にのみ必要です。
ffmpeg がない場合、インストールを提案します(事前に確認):
- Windows:
winget install --id Gyan.FFmpeg -e - macOS(Homebrew):
brew install ffmpeg(brew自体がない場合は、ユーザーを https://brew.sh に誘導して停止してください)。
Python がなく、ユーザーが字幕を希望する場合:
- Windows:
winget install --id Python.Python.3.12 -e - macOS:
brew install python
インストール後、コマンドが見つかるようになるには、ユーザーが 新しいターミナルを開く(または Claude Code を再起動する)必要がある場合があります。ffmpeg -version で再度確認してください。
2. プロジェクトフォルダのセットアップ
Claude Code を開いたフォルダ内に、以下を作成します:
raw/ 元ファイル(ここに動画をコピーします。編集はしません)
exports/ すべての完成ファイルまたは中間ファイル
CLAUDE.md チャンネルに関するメモ。各セッションの開始時に Claude Code が読み取ります
CLAUDE.md が存在しない場合、作成を提案し、ユーザーに 4 つの簡単な質問をします:チャンネルのトピック、動画の言語、ショート動画/長い動画/両方、普段のカメラ(電話かカメラか)。次のような短いファイルを作成します:
# Kênh của mình
- Chủ đề: ...
- Ngôn ngữ video: tiếng Việt
- Làm: video dài và Shorts
- Quay bằng: điện thoại
- Gốc để trong raw/, file làm ra để trong exports/
3. 基本編集
常に入力を最初に確認してください:ffprobe -v error -show_entries stream=codec_type,codec_name,width,height,r_frame_rate:format=duration -of default=nw=1 "raw/input.mp4"
トリミング(cắt một đoạn)
指定された時間に正確にカットするために再エンコードします:
ffmpeg -n -ss 00:00:12 -to 00:01:30 -i "raw/input.mp4" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/input-cat.mp4"
時間は mm:ss または hh:mm:ss で指定できます。複数の部分 = 複数のトリミング、その後結合します。
結合(ghép nhiều clip)
- すべてのクリップを ffprobe で確認します。すべての幅、高さ、フレームレートが同じ場合、
exports/list.txtを作成します:
次に:file '../raw/clip1.mp4' file '../raw/clip2.mp4'ffmpeg -n -f concat -safe 0 -i "exports/list.txt" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/ghep.mp4" - 異なる場合は、各クリップを同じサイズとフレームレートに一度にスケーリングおよびパディングします(2 つのクリップを 1920x1080、30 fps に変換する例):
クリップにオーディオトラックがない場合は、ユーザーに伝え、そのクリップに無音(ffmpeg -n -i "raw/a.mp4" -i "raw/b.mp4" -filter_complex "[0:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=30[v0];[1:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=30[v1];[0:a]aresample=48000[a0];[1:a]aresample=48000[a1];[v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/ghep.mp4"anullsrc)を追加してエラーを回避します。
ショート動画用の縦型バージョン(khung dọc)
YouTube は、動画が 正方形または縦型 で、長さが最大 3 分、アップロード解像度が最大 1080p の場合にショート動画としてカウントします(YouTube ヘルプ 15424877、10059070)。1080x1920(9:16)が一般的な縦型サイズです。YouTube は正確なピクセルサイズを公開していません。
- 中央を切り抜く(人物が中央にいる場合に適しています):
ffmpeg -n -i "raw/input.mp4" -vf "crop=ih*9/16:ih,scale=1080:1920,setsar=1" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/input-doc.mp4" - フレーム全体をぼかし背景で維持(画面録画やワイドショットに適しています):
ffmpeg -n -i "raw/input.mp4" -filter_complex "[0:v]scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,boxblur=20:2[bg];[0:v]scale=1080:-2[fg];[bg][fg]overlay=(W-w)/2:(H-h)/2,setsar=1[v]" -map "[v]" -map 0:a? -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/input-doc.mp4"ユーザーにどちらを希望するか尋ねてください。被写体が中央にない場合は、切り抜き位置を移動することを提案します(crop=ih*9/16:ih:X:0、X = 左端のピクセル)。
ベトナム語字幕(phụ đề)
ユーザーの自分のコンピュータで Whisper を使用します(無料、アップロードは行われません)。Python とパッケージ faster-whisper(モデルを含めて約数百 MB。事前に確認):
python -m pip install faster-whisper
次に、このスキルに付属するスクリプトを実行します(パス:この SKILL.md の隣にある scripts フォルダ):
python "<skill folder>/scripts/phu_de.py" "raw/input.mp4" --lang vi --out "exports/input.srt"
.srt ファイルが生成されます。Whisper は誤りを犯すこと(名前、数字、アクセント)をユーザーに伝えてください。使用する前に .srt を開いて修正する必要があります。初回実行時はモデルをダウンロードするため遅くなります。
ユーザーが .srt を修正した後、字幕を画像に焼き付けるには:
ffmpeg -n -i "raw/input.mp4" -vf "subtitles=exports/input.srt:force_style='FontSize=18,Outline=2'" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a copy "exports/input-phude.mp4"
(Windows では、.srt パスは相対パスでスラッシュを使用してください。ドライブ文字(C: など)はフィルター内では C\: と記述する必要があります。)多くのクリエイターは、視聴者が字幕をオフにできるように、焼き付けずに YouTube Studio に .srt をアップロードします。
音量の均一化(chuẩn âm lượng)
YouTube はラウドネス目標を公開していません。視聴者側では「安定した音量」設定があり、大きな部分と小さな部分を均一にします(YouTube ヘルプ 14106294)。オンライン動画の一般的な選択肢は約 -14 LUFS です。これは YouTube のルールではなく一般的な選択肢であることを伝えてください。ffmpeg の loudnorm を 2 パスで使用します(ffmpeg ドキュメント):
- 測定:
ffmpeg -hide_banner -i "exports/video.mp4" -af loudnorm=I=-14:TP=-1.5:LRA=11:print_format=json -f null -末尾の JSON からinput_i、input_tp、input_lra、input_threshを読み取ります。 - それらの数値を適用:
ffmpeg -n -i "exports/video.mp4" -af loudnorm=I=-14:TP=-1.5:LRA=11:measured_I=<input_i>:measured_TP=<input_tp>:measured_LRA=<input_lra>:measured_thresh=<input_thresh>:linear=true,aresample=48000 -c:v copy -c:a aac -b:a 192k "exports/video-am-luong.mp4"完成した動画に対して 1 パスを使用しないでください。動画全体で音量が調整され続けます。
YouTube 用に書き出し(xuất file)
YouTube の推奨アップロードエンコード設定(YouTube ヘルプ 1722171)に従います:高速スタート付き MP4、H.264 High プロファイル、プログレッシブ、4:2:0、フレームレートの半分のクローズド GOP、2 B フレーム。AAC-LC オーディオ 48 kHz。BT.709 カラー。記録時と同じフレームレート。SDR の推奨ビットレート:1080p 8 Mbps(24-30 fps)または 12 Mbps(48-60 fps)。720p 5 / 7.5 Mbps。1440p 16 / 24。4K 35-45 / 53-68。オーディオ:ステレオ 384 kbps(モノラル 128 kbps)。 1080p、30 fps の動画の例(GOP 15):
ffmpeg -n -i "exports/video.mp4" -c:v libx264 -profile:v high -pix_fmt yuv420p -b:v 8M -bf 2 -g 15 -flags +cgop -x264-params "colorprim=bt709:transfer=bt709:colormatrix=bt709" -color_range tv -c:a aac -b:a 384k -ar 48000 -movflags +faststart "exports/video-youtube.mp4"
-b:v と -g(フレームレートの半分)を動画に合わせて調整します。60 fps の場合は -b:v 12M -g 30 を使用します。動画が記録されたフレームレートを維持します(-r は追加しないでください)。
サムネイルフレーム(lấy khung hình)
ffmpeg -n -ss 00:00:42 -i "raw/input.mp4" -frames:v 1 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" -q:v 2 "exports/khung-0042.jpg"
ユーザーが選択できるように、異なる時間のフレームを 3〜4 枚提供します。YouTube のサムネイルルール(サイズ、16:9、JPG/PNG、ファイルサイズ)は YouTube ヘルプ 72431 にあります。
問題が発生した場合
このスキルは Claude Code で作成されたため、バグがある可能性があり、コンピュータごとに環境が異なります。ステップが失敗した場合、またはユーザーがスキルの動作が間違っていると言った場合:
- 簡単に、ベトナム語で説明します: 何が失敗したのか、なぜか、を一文か二文で。ユーザーが要求しない限り、生のスタックトレースは表示しません。
- このスキルと実行されたコマンドを読み直します。 原因を見つけます(以下のリストに一般的な原因があります)。
- 修正して再実行し、
exports/に新しいファイルを書き込みます。修正中でも、ユーザーの元ファイルには決して触れたり上書きしたりしません。 - 原因がこのスキル自体にあった場合(間違ったコマンドや欠落したステップ)、そのことを伝え、全員のために修正されるように報告を提案します:https://github.com/thegentleminh/thegentleminh-skills/issues
よくある失敗
'ffmpeg' is not recognized/command not found:ffmpeg がインストールされていないか、インストール前にターミナルが開かれたためです。新しいターミナルを開いて再度確認してください。No such file or directory:パスと引用符を確認してください。フォルダを一覧表示して正確な名前を見つけてください。already exists. Exiting.:出力名が既に使用されています。新しい名前を選んでください(決して上書きしないでください)。Unknown encoder 'libx264':ffmpeg ビルドにそれがありません。上記のコマンドで再インストールしてください。- トリミング後に音声が同期しない:再エンコードしてトリミングを再実行してください(上記のコマンドは既に再エンコードしています)。