Final Cut Pro・画面収録・一眼カメラ・macOSなどから書き出される QuickTime の .mov ファイルは、.mp4 を前提とする編集ソフトやWebプレーヤー、メッセージアプリでそのまま扱えないことがあります。幸い、MOVとMP4はどちらも ISO base media file format をベースにした近い親戚です。多くのケースでFFmpegはコンテナを差し替えるだけで数秒・無劣化でMP4化できます。本記事では、コピーで済むケース・再エンコードが必要なケースの見分け方と、よくある落とし穴を解説します。所要時間:5分。
動作確認: FFmpeg 8.1
本記事は一般的なQuickTime MOVファイル向けです。iPhoneから直接書き出したファイル(HEVC映像+HDRや回転メタデータを含むことが多い)の場合は、専用のiPhoneのMOVをMP4に変換するガイドが詳しく扱っています。
この記事でわかること
- MOVとMP4がほぼ同じ形式である理由
- 最速・無劣化変換(
-c copy) - コピーで済むケースと再エンコードが必要なケースの違い
- ProRes / PCM 向けの再エンコードコマンド
-movflags +faststartが重要な理由- MOVの中身のコーデックを確認する方法
- トラブルシューティングとFAQ
1. MOVとMP4はほぼ同じもの
.mov も .mp4 もコンテナです。映像・音声・メタデータのストリームを包む入れ物で、どちらも ISO base media file format(atom/box構造)という同じ土台を共有しています。違いは主に拡張子と、いくつかのQuickTime固有機能だけです。
.mov(QuickTime) | .mp4(MPEG-4 Part 14) | |
|---|---|---|
| ベース形式 | ISO BMFF(QuickTime) | ISO BMFF |
| 代表的な映像 | H.264、HEVC、ProRes | H.264、HEVC、AV1 |
| 代表的な音声 | AAC、PCM、ALAC | AAC |
| 得意分野 | Apple環境 | 汎用 |
つまり、MOVの中身のストリームがすでにMP4互換(H.264またはHEVC映像+AAC音声)なら、再エンコードは不要。コンテナのラベルを貼り替えるだけで済みます。
2. 最速・無劣化変換
MOVの中身がH.264/HEVC映像+AAC音声なら、基本コマンドはこれだけです。
ffmpeg -i input.mov -c copy -movflags +faststart output.mp4
-c copy… 全ストリームをそのままコピー、再エンコードなし。数秒で完了、画質劣化ゼロ。-movflags +faststart… moovアトムを先頭に移動し、ダウンロード完了前に再生を開始できるようにする。
ビットストリームをそのままコピーするため、出力は元ファイルと映像・音声が1ビット単位で同一。変わるのはコンテナのラベルだけです。
3. コピーで済むケースと再エンコードが必要なケース
ストリームコピーが成功するのは、各ストリームのコーデックがMP4コンテナで許可されている場合だけです。次の表を判断の早見表にしてください。
| MOV内のコーデック | MP4へコピー可? | 対応 |
|---|---|---|
| H.264 (AVC) 映像 | 可 | -c copy |
| HEVC (H.265) 映像 | 可(-tag:v hvc1 を付与) | -c:v copy -tag:v hvc1 |
| ProRes 映像 | 不可 | 映像をH.264/HEVCに再エンコード |
| AAC 音声 | 可 | -c copy |
| ALAC(Apple Lossless) | 可(-c copy) | コピー可能。ただしWebや幅広いプレーヤー互換のためAACへの再エンコードを推奨 |
| PCM(非圧縮) | 不可 | 音声をAACに再エンコード |
FFmpegがコピーを拒否する場合、Could not find tag for codec ... in stream のようなメッセージが出ます。これがそのストリームを再エンコードすべきサインです。
4. 再エンコードコマンド(ProRes / PCM)
ProRes映像、あるいはプロ用途や画面収録でよく使われるPCM音声など、コーデックがMP4向きでない場合は、H.264+AACに再エンコードします。(ALACはMP4/M4Aに格納でき -c copy も可能ですが、一般的なプレーヤーやWebでの互換性のためAACへの再エンコードを推奨します。)
ffmpeg -i input.mov -c:v libx264 -crf 20 -c:a aac output.mp4
-c:v libx264… 映像をH.264にエンコード。MP4で最も広くサポートされるコーデック。-crf 20… 画質目標。小さいほど高画質・大きいファイル。視覚的にきれいな出力は18〜23が目安。-c:a aac… 音声をAACにエンコード。
再エンコードはロッシー(映像を一度デコードして再圧縮する)でコピーより遅いですが、どこでも再生できるファイルになります。Web再生用なら -movflags +faststart を追加:
ffmpeg -i input.mov -c:v libx264 -crf 20 -c:a aac -movflags +faststart output.mp4
必要な部分だけ再エンコードする
音声だけが非互換(ProResではないMOVにPCM音声)の場合、映像はコピーのまま音声だけ再エンコードすれば、フル再エンコードよりずっと高速です。
ffmpeg -i input.mov -c:v copy -c:a aac -b:a 192k -movflags +faststart output.mp4
5. faststartが重要な理由
FFmpegは既定で moovアトム(各フレームの位置をプレーヤーに教える索引)をファイルの末尾に書き込みます。ローカル再生ならこれで問題ありません。しかしWeb/ストリーミングでは再生開始が遅れます。プレーヤーは再生前にmoovアトムを見つける必要があり、そのために追加のHTTP範囲要求が発生することがあり、サーバーやプレーヤーによってはファイルの大部分または全体を取得し終えるまで再生が始まらないこともあります。
-movflags +faststart はmux終了時にもう一度パスを走らせ、moovアトムを先頭へ再配置するので、プログレッシブダウンロード中に再生を開始できます。Web向けファイルには必ず付けましょう。詳しくはmoovアトムのガイドを参照してください。
6. MOVの中身を確認する
コピーか再エンコードかを判断する前に、ffprobe で実際のコーデックを確認します。
ffprobe -v error -show_entries stream=index,codec_type,codec_name -of default=noprint_wrappers=1 input.mov
各ストリームの種類(映像/音声)とコーデック名が一覧表示されます。h264 + aac ならコピーで動作。alac もMP4/M4Aにコピーできますが、互換性を最大化するならAACへの再エンコードを推奨します。prores や pcm_s16le が見えたら、そのストリームは再エンコードを計画してください。
7. トラブルシューティング
エラー1: Could not find tag for codec prores in stream
原因: ProResはMP4コンテナに入れられない。
解決策: 映像を再エンコード:-c:v libx264 -crf 20。
エラー2: HEVCのMOVは変換できたがApple端末で再生できない
原因: FFmpegがHEVCを hev1 とタグ付けすることがあるが、Appleのプレーヤーは hvc1 を期待する。
解決策: コピー時にタグを付与:
ffmpeg -i input.mov -c:v copy -c:a copy -tag:v hvc1 -movflags +faststart output.mp4
エラー3: 出力MP4に音声がない
原因: ソースがMP4非対応のPCMを使っており、コピー時にストリームが破棄された。
解決策: 音声を再エンコード:-c:a aac -b:a 192k。
エラー4: Webサイトで映像がカクつく・バッファする
原因: moovアトムがファイル末尾にある。
解決策: -movflags +faststart を付けて再実行(コーデックが互換ならコピーのみのパスで十分)。
よくある質問
Q1. MOVをMP4に変換すると画質は落ちる?
A. -c copy を使う限り落ちません。ストリームを1ビット単位でコピーします。画質が変わるのは再エンコードした場合だけです(第4章)。
Q2. コピーで済むか再エンコードが必要か、どう判断する?
A. 第6章の ffprobe コマンドを実行します。H.264/HEVC映像+AAC(またはALAC)音声ならコピー可能。ProResとPCMは再エンコードが必要です。ALACはコピーできますが、互換性のためAACへの再エンコードを推奨します。
Q3. iPhoneのMOVですが、この記事で合っていますか? A. この方法でも動きますが、iPhoneの映像はHEVC・HDR・回転の癖があることが多いです。iPhoneのMOVをMP4に変換するガイドが専用に対応しています。
Q4. なぜコピーは再エンコードよりずっと速い? A. コピーは圧縮済みパケットを新しいコンテナへ移すだけ。再エンコードは全フレームをデコードして再圧縮するため、処理量が桁違いに多くなります。
Q5. コピー後にファイルサイズがほとんど変わりません。正常? A. 正常です。コピーは再圧縮しないので、サイズは元とほぼ同じ(コンテナのオーバーヘッド程度の差)になります。小さくしたい場合は再エンコードが必要です。動画圧縮ガイドを参照してください。
関連記事
Tested with FFmpeg 8.1 — verified with our command-check script 一次ソース: ffmpeg.org/ffmpeg.html / ffmpeg.org/ffmpeg-formats.html#mov