Обнаруживать файлы mp4

Я должен разработать модуль, который обнаруживает файлы mp4 . Если вы получите какой-либо случайный файл в качестве ввода, и он должен определить, является ли он файлом mp4 или нет. Где я могу найти спецификацию заголовков для файла mp4? Пробовал поиск в Интернете, но не смог найти ничего, кроме подписи. Любые другие советы относительно программирования на C для модуля?

вы можете проверить расширение или подпись файла ( магический номер )

http://www.garykessler.net/library/file_sigs.html

http://en.wikipedia.org/wiki/List_of_file_signatures

00 00 00 18 66 74 79 70 33 67 70 35 …. ftyp 3gp5 видеофайлы MPEG-4

Или, если вы работаете в Unix / Linux, вы можете проанализировать вывод файла (1) из вашей программы.

Редактировать:

Вам не нужно сканировать весь файл, чтобы определить его, но подпись будет, однако, если вам нужно, обратите внимание, что MP4 является контейнером для других форматов, что означает, что вам, вероятно, нужно будет узнать о MP4 и других форматах содержит также информацию: http://en.wikipedia.org/wiki/MPEG-4_Part_14

Вместо этого я бы использовал что-то вроде libffmpeg .

  • Формат файла базы данных ISO свободно доступен, а формат файла MP4 является расширением «Base media format», для большинства случаев его достаточно для понимания «Формат базового носителя». попробуйте google вернет стандарт.

  • Чтобы определить, является ли файл MP4, вам необходимо прочитать первые 8 байтов, которые содержат (первые 4 байта размер ATOM и следующие 4 байта «FTYP»). после этого он содержит majorbrand и compatiblebrans – если какой-либо из них ISOM, это, безусловно, файл MP4. Вам нужно проанализировать только начальные несколько байтов, чтобы confiem MP4-файл.

Вы также можете посмотреть код «mp4v2-1.9.1», чтобы понять формат MP4.

Это формат контейнера. Спецификация здесь .

Даже со спецификацией в руке у вас будет много работы, чтобы поддерживать весь контейнер, который может представлять в вашей программе; Установите реалистичные требования.