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に変換するガイドが詳しく扱っています。


この記事でわかること

  1. MOVとMP4がほぼ同じ形式である理由
  2. 最速・無劣化変換(-c copy
  3. コピーで済むケースと再エンコードが必要なケースの違い
  4. ProRes / PCM 向けの再エンコードコマンド
  5. -movflags +faststart が重要な理由
  6. MOVの中身のコーデックを確認する方法
  7. トラブルシューティングと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、ProResH.264、HEVC、AV1
代表的な音声AAC、PCM、ALACAAC
得意分野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

各ストリームの種類(映像/音声)とコーデック名が一覧表示されます。h264aac ならコピーで動作。alac もMP4/M4Aにコピーできますが、互換性を最大化するならAACへの再エンコードを推奨します。prorespcm_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