【MP4】古い端末で再生できない動画を修正する

こんにちは、フリーランスエンジニアの太田雅昭です。

動画がiPad mini 4 シミュレータで再生できない

ある動画が、iPad mini 4 シミュレータでのSafariで再生できない問題がありました。拾い物のフリー動画でテスト用なのですが、サイト内で形式が統一されていなかったらしく、再生できるものとできないものとがありました。

確認する

今回ffmpegを使用します。Macでは以下のようにしてインストールできます。

brew install ffmpeg

続いて、ファイル情報を確認してみます。

ffprobe video.mp4

すると動画情報が表示されます。今回問題だったのは以下の部分でした。

Video: h264 (High) (avc1 / 0x31637661)

ChatGPT大先生によると、以下のようです。なおこの時はMP4Boxでの結果を使っているため、ffmpegとは若干形式が違います。

AVC/H.264 プロファイルとレベル

再生不可能ファイル:Profile High @ Level 4.1
再生可能ファイル:Profile Main @ Level 4.2
影響: Highプロファイルは一部のデバイスでサポートされていない場合があるため、Mainプロファイルの方が互換性が高い場合があります。

よくわかりませんが、MP4にはプロファイルというものがあり、それが互換性に影響しているようです。

修正する

ChatGPT大先生の言に従って、HighプロファイルをMainプロファイルに変更します。以下のコードで可能です。

ffmpeg -i video.mp4 -c:v libx264 -profile:v main -level 4.2 -preset fast -crf 23 new_video.mp4 

わけわからないですが、とにかく確認してみます。先ほどと同様にffprobeを実行します。

Video: h264 (Main) (avc1 / 0x31637661)

無事Mainプロファイルに変更できました。iPad mini 4シミュレータのSafariでも再生が確認できました。