video-editor について
video-editorは、動画編集や処理を行う人向けのFFmpeg解説スキルです。トランスコードや画質の問題に対応し、エンコード設定、色メタデータ、字幕、一般的なトラブルを扱います。
主な機能
- 01コンテナ・コーデック・エンコーダーの区別
- 02リマックスと再エンコードの案内
- 03CRF・プリセット・エンコード設定の調整
- 04色メタデータと字幕の処理
- 05再生・画質・同期のトラブル対応
- 06FFmpegコマンド例の提示
活用シーン
- 01動画コンテナやコーデックの変換
- 02画質とファイルサイズの調整
- 03エンコード後の色や音声同期の修正
- 04プラットフォームや機器向けの動画準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ckorhonen/ claude-skills --skill video-editorインストール後、Claude Code で/video-editorを入力して読み込まれたか確認します。
詳細
動画エディター - FFmpeg とエンコードのエキスパート
ffmpeg を使った動画編集、エンコード、処理に関する専門的なガイダンスです。このスキルでは、コンテナ形式、コーデック、エンコードのベストプラクティス、動画制作ワークフローにおける品質の最適化について説明します。
このスキルを使う場面
次のような場合にこのスキルを使います:
- 動画ファイルをエンコードまたはトランスコードする場合
- コンテナ形式(MKV、MP4 など)を相互に変換する場合
- 品質やファイルサイズに合わせてエンコード設定を最適化する場合
- 動画の品質に関する問題をトラブルシューティングする場合
- 色空間やカラーマトリクスを扱う場合
- 動画にハードサブまたはソフトサブを追加する場合
- 特定のプラットフォームやデバイス向けに動画を準備する場合
- 処理後に動画の見た目がおかしくなる理由を理解する場合
基本概念
コンテナとコーデックの違い
この違いは非常に重要です。 .mkv や .mp4 などのファイル拡張子は、すでに圧縮されたストリームを格納するコンテナ形式です。実際の圧縮は、H.264、H.265、VP9、AV1 などのコーデックによって行われます。
| 概念 | 内容 | 例 |
|---|---|---|
| コンテナ | 動画/音声/字幕ストリームを格納するラッパー | MKV、MP4、AVI、MOV、WebM |
| コーデック | 動画を圧縮/展開するアルゴリズム | H.264、H.265/HEVC、VP9、AV1 |
| エンコーダー | コーデックを実装するソフトウェア | x264、x265、libvpx、NVENC |
リマックスと再エンコードの違い
| 操作 | 内容 | 品質への影響 | 速度 |
|---|---|---|---|
| リマックス | 再圧縮せずにストリームを別のコンテナへ移動する | なし(可逆) | 非常に速い |
| 再エンコード | 動画をデコードし、新しい設定で再エンコードする | 必ず品質が低下する | 遅い |
経験則: コンテナ形式だけを変更したい場合は、リマックスします。どうしても必要な場合に限り、再エンコードしてください。
品質に関する原則
「品質」とは実際には何か
動画の品質は、出力がソースにどれだけ近いかを示します。処理を重ねるたびに、動画は元の状態からさらに離れていきます。品質を加える方法はありません。維持するか、失うかのどちらかです。
よくある誤解
| 誤解 | 実際 |
|---|---|
| 解像度が高いほど品質が良い | 解像度は単に寸法です。720p の動画のほうが 4K の動画よりきれいに見えることもあります |
| ビットレートが高いほど品質が良い | エンコーダーの効率のほうが重要です。同じ品質でも異なるファイルサイズにできます |
| H.265 は常に 50% 小さい | エンコーダーの設定によります。設定の悪い H.265 は H.264 よりも劣ることがあります |
| 品質を重視するならハードウェアエンコードで問題ない | ハードウェアエンコーダー(NVENC、QuickSync)は速度を優先し、品質を犠牲にします |
| AI アップスケーリングで品質が向上する | アップスケーリングでは、ソースになかった人工的なディテールが追加されます |
エンコード品質の優先順位
重要度の高い順:
- エンコーダーの設定(CRF、プリセット、チューニング)
- エンコーダーの選択(x264/x265 とハードウェアエンコーダーの比較)
- コーデック(H.265、H.264、VP9 の比較)
クイックリファレンス:FFmpeg コマンド
リマックス(コンテナを変更、品質劣化なし)
# MKV to MP4 (preserves all streams)
ffmpeg -i input.mkv -c copy output.mp4
# MP4 to MKV
ffmpeg -i input.mp4 -c copy output.mkv
基本的なエンコード
# Encode with x264, copy audio
ffmpeg -i input.mkv -c:a copy -c:v libx264 -preset slower -crf 20 output.mkv
# Encode with x265
ffmpeg -i input.mkv -c:a copy -c:v libx265 -preset slower -crf 22 output.mkv
品質重視のエンコード
# High-quality x264 for animation
ffmpeg -i input.mkv -c:a copy -c:v libx264 -preset slower -crf 18 \
-x264-params bframes=8 output.mkv
# High-quality x265
ffmpeg -i input.mkv -c:a copy -c:v libx265 -preset slower -crf 20 \
-x265-params bframes=8 output.mkv
エンコード設定の詳細
CRF(固定レート係数)
CRF は品質とファイルサイズのトレードオフを制御します。値が低いほど品質が高くなり、ファイルサイズが大きくなります。
| CRF の範囲 | 品質レベル | 主な用途 |
|---|---|---|
| 0 | 可逆圧縮 | アーカイブ、中間素材 |
| 15-18 | 見た目上は劣化なし | 高品質アーカイブ |
| 19-23 | 高品質 | 一般用途、ストリーミング |
| 24-28 | 中品質 | ウェブ、モバイル |
| 29+ | 低品質 | プレビュー、サムネイル |
注: CRF 値をエンコーダー間で直接比較することはできません。x265 の CRF 22 は、x264 の CRF 20 にほぼ相当します。
プリセット
プリセットは、エンコード速度と圧縮効率のバランスを調整します。
| プリセット | 速度 | ファイルサイズ | 使用する場面 |
|---|---|---|---|
| ultrafast | 最速 | 最大 | ライブストリーミング |
| fast | 高速 | 大きい | 手早いトランスコード |
| medium | 中程度 | 中程度 | デフォルト |
| slow | 低速 | 小さめ | 品質重視 |
| slower | 非常に低速 | さらに小さい | 品質重視で推奨 |
| veryslow | 極めて低速 | 最小 | 最大限の圧縮 |
推奨: 品質重視のエンコードにはslowerを使用してください。slowerとveryslowの差は、かかる時間を大幅に増やすほどではありません。
チューンオプション
| チューン | 最適な用途 |
|---|---|
| film | フィルムグレインのある実写映像 |
| animation | カートゥーン、アニメ、平坦な領域 |
| grain | フィルムグレインの保持 |
| stillimage | スライドショー、静止コンテンツ |
| fastdecode | 性能の低いデバイスでの再生 |
# Animation tuning
ffmpeg -i input.mkv -c:v libx264 -preset slower -crf 20 -tune animation output.mkv
コンテナごとの考慮事項
MKV(Matroska)
メリット:
- ほぼすべてのコーデックに対応
- 複数の音声/字幕トラックに対応
- チャプターマーカーに対応
- 可変フレームレートに対応
デメリット:
- 一部のデバイスやソフトウェアとの互換性が低い
- 対応していないストリーミングサービスがある
MP4
メリット:
- 幅広い互換性
- Web に適している
- あらゆる環境でハードウェアデコーダーに対応
デメリット:
- 字幕形式への対応が限られている
- コーデックの要件が厳しい
- 固定フレームレートが想定されている
編集ソフトウェア向けにMKVをMP4に変換する
編集ソフトウェアによっては、固定フレームレートのMP4が必要です。次の2パス方式を使用してください。
# Step 1: Initial remux with timescale adjustment
ffmpeg -i input.mkv -c copy -video_track_timescale 24000 intermediate.mp4
# Step 2: Fix timestamps
ffmpeg -i intermediate.mp4 -c copy \
-bsf:v "setts=dts=1001*round(DTS/1001):pts=1001*round(PTS/1001)" output.mp4
色空間と色管理
色メタデータについて
動画の色はYCbCr形式で保存され、次の情報を指定するメタデータが含まれます。
- カラーマトリックス: YCbCrをRGBに変換する方法(BT.709、BT.601)
- 色範囲: リミテッド(16-235)とフル(0-255)
- クロマ位置: 色のサンプルが配置される位置
よくある問題
| 症状 | 考えられる原因 |
|---|---|
| 色が白っぽく見える | 色範囲の誤り(リミテッドをフルとして扱っている) |
| 黒つぶれ/白飛び | 色範囲の誤り(フルをリミテッドとして扱っている) |
| 緑やピンクがかった色合い | カラーマトリックスの誤り |
| エンコード後に色が「おかしく」見える | 色メタデータの不一致 |
色情報の保持
# Explicitly preserve color metadata
ffmpeg -i input.mkv -c:v libx264 -preset slower -crf 20 \
-colorspace bt709 -color_primaries bt709 -color_trc bt709 output.mkv
字幕のハードサブ(映像への焼き込み)
FFmpegを使用する
# Hardsub from external subtitle file
ffmpeg -i input.mkv -vf "subtitles=subs.ass" -c:v libx264 -preset slower -crf 20 output.mkv
# Hardsub from embedded subtitle track
ffmpeg -i input.mkv -vf "subtitles=input.mkv:si=0" -c:v libx264 -preset slower -crf 20 output.mkv
mpvを使用する(複雑な字幕に適しています)
mpvは複雑なASS字幕(スタイル、位置指定)をより正確に処理します。
mpv --no-config input.mkv -o output.mkv \
--audio=no \
--ovc=libx264 \
--ovcopts=preset=slower,crf=20,bframes=8
避けるべきこと
ツール
| ツール | 問題点 |
|---|---|
| Handbrake | 設定が予測しにくく、重要なオプションが隠されている |
| オンラインコンバーター | 品質の低下、プライバシー上の懸念 |
| 「AIアップスケーラー」 | 偽のディテールを追加し、元の映像から遠ざかる |
| Windows組み込みツール | 品質が低く、オプションが限られている |
運用方法
| 運用方法 | 問題点 |
|---|---|
| 不要なシャープ化 | アーティファクトが発生し、元の映像から遠ざかる |
| 高解像度へのアップスケーリング | 実際のディテールは増えない |
| 複数回の再エンコード | 品質の低下が累積する |
| 品質重視でNVENCを使用する | ハードウェアエンコーダーは品質より速度を優先する |
| フレームレート補間 | アーティファクトを伴う偽のフレームが追加される |
推奨ツール
必須
| ツール | 用途 |
|---|---|
| ffmpeg | 動画処理の万能ツール |
| MediaInfo | 動画のプロパティとメタデータを確認 |
| mpv | 優れたメディアプレーヤー、エンコードにも対応 |
| MKVToolNix | MKVの多重化操作用GUI |
特化型
| ツール | 用途 |
|---|---|
| Aegisub | 字幕編集 |
| HandBrake | 簡単なトランスコード(注意して使用) |
| yt-dlp | オンライン動画のダウンロード |
トラブルシューティング
動画が再生されない
- 対象デバイスでコーデックがサポートされているか確認する
- 別のコンテナにリマックスしてみる
- ファイルが破損していないか確認する:
ffmpeg -v error -i file.mkv -f null -
エンコード後に色がおかしく見える
- 色のメタデータを比較します:
mediainfo input.mkvとmediainfo output.mkv - 色域を確認します(Limited と Full)
- 色行列を確認します(BT.709 と BT.601)
- ffmpeg コマンドで色のパラメーターを明示的に設定します
ファイルサイズが大きすぎる
- CRF を上げます(例:20 → 23)
- 圧縮率を高めるため、より遅いプリセットを使用します
- 効率を高めるため、x265 の使用を検討します
- 不必要にエンコードしていないか確認します(代わりにリマックスします)
エンコードに時間がかかりすぎる
- より速いプリセットを使用します(ただし、ファイルサイズは大きくなります)
- 用途に応じてハードウェアエンコードが許容できるか確認します
- ソースが不必要にデコードされていないことを確認します
音声と映像が同期しない
- まずソースファイルに同期の問題がないか確認します
- 音声の同期を補正するには、
-async 1を使用します - 再エンコードではなく、リマックスを試します
使用例
Blu-ray リップをアーカイブする
ffmpeg -i input.mkv -c:a copy -c:v libx265 -preset slower -crf 18 \
-x265-params bframes=8 output.mkv
YouTube へのアップロード用に準備する
ffmpeg -i input.mkv -c:a aac -b:a 384k -c:v libx264 -preset slower -crf 18 \
-profile:v high -level 4.2 -pix_fmt yuv420p output.mp4
クイックプレビュー/プロキシ
ffmpeg -i input.mkv -c:a aac -b:a 128k -c:v libx264 -preset fast -crf 28 \
-vf scale=640:-2 output.mp4
音声のみを抽出する
# Copy audio stream (no re-encoding)
ffmpeg -i input.mkv -vn -c:a copy output.mka
# Convert to MP3
ffmpeg -i input.mkv -vn -c:a libmp3lame -b:a 320k output.mp3
再エンコードせずにトリミングする
# Trim from 1:00 to 2:30
ffmpeg -i input.mkv -ss 00:01:00 -to 00:02:30 -c copy output.mkv