MP4 — это общее расширение файла для контейнера MPEG-4, включая все виды мультимедийного контента (видео, естественное и искусственное аудио, 2D- и 3D-графика, анимированные аватарки, элементы интерактивности и пр.), который может передаваться потоком через любое соединение или сеть (см. определение этого файлового формата как части MPEG-4). Полные спецификации этой и других частей стандарта доступны здесь.
MP4 базируется на файловом формате QuickTime MOV компании Apple. Документации для разработчиков («Inside QuickTime: QuickTime File Format» или «What's New in QuickTime 6») в формате PDF можно скачать тут:
http://developer.apple.com/documentation/QuickTime/RM/PDF.htm
Расширения *.m4a и *.m4p (или *.m4v) используются Apple для различия между айдиофайлами MP4, созданными с помощью iTunes (без Digital Rights Management), и приобретёнными через онлайн-магазин Music Service (с защищёнными авторскими правами).
В контексте сжатия аудио, под MP4 обычно подразумеваются аудиофайлы MPEG-4 AAC, которые по качеству такие же, как «старые» файлы MPEG-2 AAC, поскольку внутри они различаются лишь заголовками (если они были созданы одним и тем же кодером и с одинаковыми настройками, например PsyTEL AACEnc или плагином Nero's AAC). Но поскольку файл MP4 — это контейнер, он может содержать внутри поток MPEG-2 AAC или даже MP3 вместе, например, с видеопотоком MPEG-2. Разница в «объектных типах» всегда присутствует в заголовке файла MP4 (например заголовки ADTS и ADIF потока AAC). Посмотреть заголовки MP4 можно с помощью опции -list
программ mp4creator или mp4info.
Аудиофайлы MP4 способны воспроизводить все программные плееры MPEG-4 (Winamp и Foobar2000 с необходимыми плагинами, QuickTime 6, Windows Media Player с EnvivioTV или DirectShow-фильтром 3ivx и т.д.), поскольку после нескольких лет ожидания декодер AAC стал частью MPEG.
Тем не менее, сказанное выше подходит только для профилей Low Complexity / LC, так что если у вас есть файлы AAC (старые или новые), закодированные с другими профилями (Main, LTP или любым другим), декодеры их не узнают (например, QuickTime 6 отказывается их воспроизводить). Поэтому во избежание проблем с совместимостью не рекомендуется использовать другие профили.