結論から
- MP4は音声・映像などのメディア情報を格納するマルチメディアコンテナで、拡張子だけでは内部の圧縮方式や再生互換性を判断できません。
- 再生するにはメディアアプリでMP4を開き、失敗した場合は内部の音声・映像への対応を確認します。変換用のHandBrakeは一般的なMP4・M4V動画を入力できますが、DRM付き動画には対応しません。MacのQuickTime 7では、HandBrake出力のチャプターやAC3音声を利用するために.m4vが必要です。QuickTime XとiOSにはこの拡張子制限がありませんが、すべての圧縮方式への対応を意味しません。[HandBrakeの入力形式](https://handbrake.fr/docs/en/1.11.0/technical/source-formats.html)、[HandBrakeのコンテナ](https://handbrake.fr/docs/en/1.7.0/technical/containers.html)
- 出所不明のMP4は慎重に扱ってください。RFC 4337は、不正な構造のメディアストリームがデコーダーを過負荷にしたり、クラッシュさせたりする危険を説明しています。MP4はMPEG-JやECMAScriptなどのプログラム内容にも対応しますが、すべてのファイルに含まれるわけではありません。MPEG-Jの実行制限もデコーダーのリスクを解消しません。[RFC 4337のセキュリティ事項](https://www.rfc-editor.org/rfc/rfc4337.html#section-4)
MP4ファイルの開き方・M4Vとの違い・変換
MP4はISO/IEC 14496-14で定義されています。米国議会図書館はMPEG-4 File Format, Version 2をISO Base Media File Formatのサブタイプとしています。異なる方式で圧縮された音声・映像、対話的なシーン情報、メタデータ、ファイル外のメディアストリームへの参照を格納できます。[米国議会図書館](https://www.loc.gov/preservation/digital/formats/fdd/fdd000155)、[RFC 4337](https://www.rfc-editor.org/rfc/rfc4337.html)
ストリームを別のコンテナへコピーする処理と再エンコードは異なります。FFmpegのstreamcopyはデコードや再エンコードを行わず、コピーする音声・映像の品質を維持します。ただし、変換先に必要な情報が不足すると変換に失敗する場合があります。再エンコードでは品質が低下することがあり、MP4への変換が自動的に無劣化になるわけではありません。[FFmpegのstreamcopy](https://www.ffmpeg.org/ffmpeg.html#Streamcopy)、[FFmpegのトランスコード](https://www.ffmpeg.org/ffmpeg.html#Transcoding)
開き方
再生するにはメディアアプリでMP4を開き、失敗した場合は内部の音声・映像への対応を確認します。変換用のHandBrakeは一般的なMP4・M4V動画を入力できますが、DRM付き動画には対応しません。MacのQuickTime 7では、HandBrake出力のチャプターやAC3音声を利用するために.m4vが必要です。QuickTime XとiOSにはこの拡張子制限がありませんが、すべての圧縮方式への対応を意味しません。[HandBrakeの入力形式](https://handbrake.fr/docs/en/1.11.0/technical/source-formats.html)、[HandBrakeのコンテナ](https://handbrake.fr/docs/en/1.7.0/technical/containers.html)
再生するにはメディアアプリでMP4を開き、失敗した場合は内部の音声・映像への対応を確認します。変換用のHandBrakeは一般的なMP4・M4V動画を入力できますが、DRM付き動画には対応しません。MacのQuickTime 7では、HandBrake出力のチャプターやAC3音声を利用するために.m4vが必要です。QuickTime XとiOSにはこの拡張子制限がありませんが、すべての圧縮方式への対応を意味しません。[HandBrakeの入力形式](https://handbrake.fr/docs/en/1.11.0/technical/source-formats.html)、[HandBrakeのコンテナ](https://handbrake.fr/docs/en/1.7.0/technical/containers.html)
ストリームを別のコンテナへコピーする処理と再エンコードは異なります。FFmpegのstreamcopyはデコードや再エンコードを行わず、コピーする音声・映像の品質を維持します。ただし、変換先に必要な情報が不足すると変換に失敗する場合があります。再エンコードでは品質が低下することがあり、MP4への変換が自動的に無劣化になるわけではありません。[FFmpegのstreamcopy](https://www.ffmpeg.org/ffmpeg.html#Streamcopy)、[FFmpegのトランスコード](https://www.ffmpeg.org/ffmpeg.html#Transcoding)
安全チェック
出所不明のMP4は慎重に扱ってください。RFC 4337は、不正な構造のメディアストリームがデコーダーを過負荷にしたり、クラッシュさせたりする危険を説明しています。MP4はMPEG-JやECMAScriptなどのプログラム内容にも対応しますが、すべてのファイルに含まれるわけではありません。MPEG-Jの実行制限もデコーダーのリスクを解消しません。[RFC 4337のセキュリティ事項](https://www.rfc-editor.org/rfc/rfc4337.html#section-4)
送り主が分からない、拡張子が二重になっている、中身が拡張子と合わない——一つでも当てはまるなら、開く前に確かめてください。
変換するときは
ストリームを別のコンテナへコピーする処理と再エンコードは異なります。FFmpegのstreamcopyはデコードや再エンコードを行わず、コピーする音声・映像の品質を維持します。ただし、変換先に必要な情報が不足すると変換に失敗する場合があります。再エンコードでは品質が低下することがあり、MP4への変換が自動的に無劣化になるわけではありません。[FFmpegのstreamcopy](https://www.ffmpeg.org/ffmpeg.html#Streamcopy)、[FFmpegのトランスコード](https://www.ffmpeg.org/ffmpeg.html#Transcoding)
元ファイルではなくコピーを変換し、変換後に画質・メタデータ・レイアウトを元と見比べてください。
よくある質問
MP4ファイルとは何で、何に使いますか?
MP4はISO/IEC 14496-14で定義されたマルチメディアコンテナです。音声、映像、メタデータ、対話的なシーン情報、外部ストリームへの参照を格納できます。MP4はコンテナの名称であり、一つの圧縮方式を指すものではありません。
WindowsでMP4ファイルを開く方法は?
再生には利用中のメディアアプリでMP4を開きます。失敗する場合は内部の音声・映像への対応を確認してください。変換には、HandBrakeがインストールされていれば動画を入力ソースとして選択できます。一般的なMP4・M4V動画に対応しますが、DRM付き動画は対象外です。
MacのQuickTimeでMP4ファイルを開く方法は?
QuickTimeでファイルを開いてみてください。HandBrakeで作成したチャプターやAC3音声付きのファイルでは、QuickTime 7とそれに基づくアプリでこれらの機能を使うために.m4vが必要です。QuickTime Xにはこの拡張子制限がありません。内部の全ストリームへの対応を保証する説明ではありません。
iPhoneでMP4ファイルを再生する方法は?
iPhoneで利用しているメディアアプリからファイルを開きます。HandBrakeの説明では、iOSには同ソフトの出力に含まれるチャプターやAC3音声についてQuickTime 7の.m4v拡張子制限がありません。再生できない場合は内部の圧縮方式とアプリの対応を確認してください。
MP4とM4Vの違いは何で、どちらの拡張子を使えばよいですか?
HandBrakeの出力ではMP4とM4Vの違いは拡張子だけです。AC3音声のパススルー、SRT字幕、チャプターを有効にするとM4Vが選ばれる場合があります。QuickTime 7の記載された制限が当てはまる場合は.m4vを使います。名前の変更だけでは再エンコードされません。
MP4動画が再生できない、またはHandBrakeで開けない原因は?
MP4という拡張子だけでは内部ストリームへの対応は判断できません。アプリがその圧縮方式に対応するか確認してください。HandBrakeは一般的なMP4・M4Vに対応しますが、DRM付き動画には対応せず、コピー保護も回避しません。開けないという結果だけで破損とは断定できません。
MP4を別の形式へ変換すると画質は低下しますか?
処理方法によります。FFmpegのstreamcopyは圧縮済みストリームをデコード・再エンコードせずコピーするため、その品質を維持します。トランスコードではデコード後に再度エンコードするため、品質が低下する場合があります。出力がMP4であることは無劣化の保証ではありません。
FFmpegでMP4コンテナを無劣化で変換する方法は?
変換先のコンテナが元のストリームを格納できる場合にstreamcopyを使います。FFmpegでは-c copyでストリームコピーを選択します。コピーした音声・映像は再エンコードされませんが、すべてのコンテナ機能の維持を保証しません。変換先に必要な情報が不足すると失敗する場合があります。
MP4ファイルのMIMEタイプは何ですか?
一般的な音声・映像にはvideo/mp4、視覚的な表示がない音声にはaudio/mp4、音声も視覚的な表示もないMPEG-JやMPEG-7などの内容にはapplication/mp4を使います。適切なMIMEタイプは内容によって決まります。
出所不明のMP4ファイルを開く際の安全性とリスクは?
RFC 4337は、不正な構造のストリームが受信側やデコーダーを過負荷にし、クラッシュさせる危険を示しています。MP4にプログラムが含まれる場合もありますが、すべてのファイルに含まれるわけではありません。MPEG-Jの制限もデコーダーのリスクをなくしません。拡張子や正常な再生だけでは安全性を確認できません。
関連する形式
参考資料
MPEG-4 File Format, Version 2 · 美国国会图书馆数字格式保存资料
RFC 4337: MIME Type Registration for MPEG-4 · IETF 标准轨 RFC / RFC Editor
HandBrake Documentation — Container formats · HandBrake 官方文档
HandBrake Documentation — Supported source formats · HandBrake 官方文档
FFmpeg Documentation — Streamcopy and Transcoding · FFmpeg 官方文档