检测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-4video文件

或者,如果您使用的是Unix / Linux,则可以从程序中解析文件(1)的输出。

编辑:

您不需要扫描整个文件来识别它,签名就可以了,但是,如果必须,请注意MP4是其他格式的容器 ,这意味着您可能需要了解MP4和其他格式此处还包含一些信息: http : //en.wikipedia.org/wiki/MPEG-4_Part_14

我会用像libffmpeg这样的东西代替。

  • ISO基本媒体文件格式是免费提供的,MP4文件格式是“基本媒体格式”的扩展,对于大多数情况,它足以理解“基本媒体格式”。 尝试谷歌将返回一个标准。

  • 要检测文件是否为MP4,您需要读取前8个字节,其中包含(前4个字节大小的ATOM和接下来的4个字节“FTYP”)。 之后它包含了主要品牌和兼容品 – 如果它们中的任何一个是ISOM,它绝对是一个MP4文件。所以你只需要解析最初的几个字节来配置MP4文件。

您还可以查看“mp4v2-1.9.1”代码以了解MP4格式。

这是一种容器格式。 规范就在这里 。

即使掌握了规范,您也需要做很多工作来支持容器在程序中的所有function; 设定现实要求。