iPhoneの動画をPCにコピーすると、「このファイルは再生できません」と出ることがあります。原因は、iPhoneが標準で使うHEVC(H.265)入りのMOVです。Windows標準アプリやX(旧Twitter)、一部のDiscordクライアントでは扱えないことがあります。FFmpegなら、MP4に替えて hvc1 タグを付けるコマンド1つで、画質を落とさずに入れ物とタグの問題を解消できます。HEVCそのものを再生できない環境向けには、H.264に変換します。

1. なぜiPhoneのMOVは再生できないのか

iOS 11以降のiPhoneは、標準で HEVC (H.265) の映像を MOV で保存します。問題は2つあります。

問題A: コンテナ(MOV)の互換性

MOVはApple独自のコンテナ(映像と音声の入れ物)です。構造はMP4とほぼ同じですが、古いプレーヤーや編集ソフトの一部は読み込めません。

問題B: hev1 vs hvc1 タグ

H.265の映像には、hev1 か hvc1 のタグ(形式を示す目印)が付きます。

タグ 特徴 対応環境
hev1 デコーダパラメータがビットストリーム内 Apple製品(QuickTime・iOS・Safari)で再生できないことがある
hvc1 デコーダパラメータがコンテナのサンプル記述内 Appleが推奨するタグ。QuickTime・iOS・Safariで再生できる

iPhoneは hvc1 で書き出すので、通常は問題ありません。ただ、他社の編集ソフトを通すと hev1 に変わり、QuickTimeやiPhone・SafariなどのApple製品で再生できなくなることがあります。FFmpegで hvc1 を付け直せば直ります(FFmpeg wiki H.265)。

2. 最速・無劣化:リムックス + hvc1 タグ付与

中身はそのまま、入れ物だけMP4に替えます(リムックス)。数秒で終わり、画質も元のままです。

ffmpeg -i iphone.mov -c copy -tag:v hvc1 -movflags +faststart iphone.mp4
  • -c copy … 再エンコードせずコピー
  • -tag:v hvc1 … 映像タグを hvc1 に強制(QuickTime互換)
  • -movflags +faststart … 再生用の索引(moov)を先頭に移す(Webで、読み込みの途中から再生を始められる)

映像はHEVCのままです。macOSのQuickTimeなどHEVCに対応した環境では再生できますが、HEVCの拡張機能を入れていないWindowsの標準アプリでは再生できません(第6章の問題1)。その場合は、次の第3章のようにH.264に変換します。

3. 互換性最優先:H.264に再エンコード

Windows 8のころのPC、一部のAndroid、古いスマートTVなどは、HEVCそのものを再生できません。H.264に変換すれば、ほぼどの環境でも再生できます。同じ画質で比べると、H.264はHEVCよりファイルが大きくなります。

ffmpeg -i iphone.mov \
  -c:v libx264 -crf 20 -preset medium -pix_fmt yuv420p \
  -c:a aac -b:a 192k \
  -movflags +faststart \
  iphone_h264.mp4
  • -crf 20 … 画質。小さいほど高画質(一般用途は18〜23)
  • -preset medium … 速度とサイズのバランス
  • -pix_fmt yuv420p … 多くの機器が再生できる8bitの形式にする(付けないと、10bitのHDR動画は10bitのH.264になり、再生できない機器が多い)
  • -c:a aac -b:a 192k … 音声はAAC(iPhoneの音声は元からAACのことが多い)

iPhoneの4K HDR動画は、SDRへの変換も必要なことがあります(HDR → SDR トーンマッピング)。

縦動画を横動画にしたくない場合

iPhoneの縦動画は、回転メタデータ(縦に表示する指示)で縦に見えています。FFmpegは再エンコードのとき、この情報に合わせて映像そのものを縦向きに回し、回転メタデータは外します。縦向きを保つのに、特別なオプションは要りません。

# 回転メタデータに合わせて、映像が自動で縦向きになる
ffmpeg -i iphone_vertical.mov \
  -c:v libx264 -crf 20 -preset medium -pix_fmt yuv420p \
  -c:a aac -b:a 192k \
  -movflags +faststart \
  iphone_vertical.mp4

ここに transpose などの回転フィルタを足すと、二重に回転して横向きになります。詳しくは動画の回転ガイドを参照してください。

4. フォルダ一括変換(バッチ処理)

bash / macOS / Linux

# カレントディレクトリの *.mov をすべて MP4 に詰め替え(HEVC には hvc1 タグを付ける)
for f in *.[mM][oO][vV]; do
  [ -f "$f" ] || continue
  codec=$(ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of csv=p=0 "$f")
  if [ "$codec" = "hevc" ]; then
    ffmpeg -i "$f" -c copy -tag:v hvc1 -movflags +faststart "${f%.*}.mp4"
  else
    ffmpeg -i "$f" -c copy -movflags +faststart "${f%.*}.mp4"
  fi
done

Windows バッチファイル(.bat)

次の内容を iphone_to_mp4.bat として保存し、MOVファイルをドラッグ&ドロップします(複数可)。

@echo off
setlocal enabledelayedexpansion
if "%~1"=="" (
  echo 使い方: MOVファイルをこの.batにドラッグしてください
  pause & exit /b 1
)
:loop
if "%~1"=="" goto end
set "tag="
for /f %%c in ('ffprobe -v error -select_streams v:0 -show_entries stream^=codec_name -of csv^=p^=0 "%~1"') do if "%%c"=="hevc" set "tag=-tag:v hvc1"
ffmpeg -i "%~1" -c copy !tag! -movflags +faststart "%~dpn1.mp4"
shift
goto loop
:end
echo 変換完了!
pause

FFmpegの入れ方はWindows/macOS/Linux別のインストール手順にあります。

5. iPhone側で H.264 録画に切り替える

iPhoneの設定で、最初からH.264で撮ることもできます。

設定手順(iOS 17以降):

  1. 設定 > カメラ > フォーマット
  2. 「互換性優先(H.264)」を選択

以後の録画は H.264 になります(ファイルはMOVのままです。Apple公式:HEVCの使用)。ただし、4K 60fps や HDR の撮影には HEVC が必須なので、この設定では使えません。

撮影済みのHEVC動画は変換が必要です。

6. トラブルシューティング

問題1: -tag:v hvc1 を付けたのにWindowsで再生できない

原因: WindowsにはHEVCのコーデックが標準で入っていません。
解決策: Microsoft Store で HEVC Video Extensions(約120円の有料拡張)を入れるか、H.264 に再エンコードします。

問題2: 音声が出ない

原因: 音声の形式が、再生するプレーヤーに対応していないことがあります。
解決策:

ffmpeg -i iphone.mov -c:v copy -tag:v hvc1 -c:a aac -b:a 192k -movflags +faststart output.mp4

映像はそのまま、音声だけAACにします。たいていこれで直ります。映像がH.264のときは -tag:v hvc1 を外します。

問題3: ライブフォト(動画付き写真)のMOVを変換したい

原因: Live Photo のMOVは1〜3秒の短い動画で、静止画(HEIC。「互換性優先」ならJPEG)とセットです。
解決策: 普通の動画と同じコマンドで変換できます:

ffmpeg -i IMG_1234.MOV -c copy -tag:v hvc1 IMG_1234.mp4

「互換性優先」で撮ったH.264の動画なら、-tag:v hvc1 を外します。

問題4: X(Twitter)にアップすると音ズレする

原因: iPhoneの動画は、VFR(可変フレームレート)のことがあります。タイムスタンプが正しければVFRでも音と映像はずれませんが、タイムスタンプを正しく扱わないソフトではずれることがあります。
解決策: まず、元の動画で音ズレがないことを確かめます。元の動画が正常なら、CFR(固定フレームレート)に変換してからアップしてみます:

ffmpeg -i iphone.mov -c:v libx264 -crf 20 -pix_fmt yuv420p -r 30 -c:a aac -b:a 192k -movflags +faststart output.mp4

-r 30 で30fpsに固定します(詳しくはVFRからCFRへの変換)。

問題5: スローモーション動画が普通の速度になる

原因: iPhoneのスローモーションは、240fpsなどで普通に録画した動画を、写真アプリがゆっくり再生して見せています。ほかのプレーヤーは、録画したときの速さのまま再生します。
解決策: 自分で減速させます(例:240fpsの映像を30fpsで再生して、1/8の速さに):

ffmpeg -i slowmo.mov -filter:v "setpts=8*PTS" -r 30 -c:a copy output.mp4

setpts=8*PTS で再生速度が1/8になります。音声も合わせるなら、-c:a copy の代わりに -filter:a "atempo=0.5,atempo=0.5,atempo=0.5" -c:a aac を使います(atempo は1回で0.5倍までなので、3回つなげて1/8にします)。

FAQ

Q1. .MOV と .mp4 の違いは何ですか?
A. どちらも構造がほぼ同じコンテナです。.mov はAppleのQuickTime形式、.mp4 はISO標準(MPEG-4 Part 14)です。中身のコーデック(H.264、H.265)が同じなら、コンテナを替えるだけで変換できます。

Q2. リムックスだけでファイルサイズは変わりますか?
A. ほぼ変わりません。映像と音声のデータはそのままで、変わるのはヘッダの大きさだけです。

Q3. Apple純正アプリで変換できますか?
A. macOSの「QuickTime Player」で「ファイル > 書き出す」を選ぶと、H.264に変換できます(解像度は4K・1080p・720p・480pから選べます)。ただし、書き出されるのはMOVで、MP4にはできません。Finderでも、動画を選んで「サービス > 選択したビデオファイルをエンコード」で変換できます。細かく設定したいなら、FFmpegのほうが柔軟です。

Q4. -tag:v hvc1 を H.264 動画につけてもいいですか?
A. 付けません。-tag:v hvc1 はH.265専用で、H.264に付けると Tag hvc1 incompatible with output codec id '27' (avc1) というエラーになります。H.264のMP4には標準で avc1 タグが付くので、何も足す必要はありません。

Q5. 4K HDRのiPhone動画を普通のPCで見るには?
A. iPhoneのHDR動画は、Dolby Vision(HLG方式のHEVC 10bit)で記録されています。HDRに対応していない環境では、明るさや色が正しく表示されないことがあります。トーンマッピング(明るさをSDRの範囲に収める変換)が必要です:

ffmpeg -i iphone_4k_hdr.mov \
  -vf "zscale=t=linear:npl=100,tonemap=hable:desat=0,zscale=p=bt709:t=bt709:m=bt709,format=yuv420p" \
  -c:v libx264 -crf 20 -c:a aac -b:a 192k output_sdr.mp4

詳しくはHDR → SDR トーンマッピングを参照してください。

関連記事