Je dois concevoir un module qui détecte les fichiers
4 Réponses :
Vous pouvez vérifier l'extension ou la signature du fichier ( numéro magique em>) p>
http://www.garykessler.net/library/file_sigs.html << / p>
http://en.wikipedia.org/wiki/list_of_file_signatures P>
00 00 00 18 66 74 79 70 33 67 70 35 .... Fichiers vidéo FTYP 3GP5 MPEG-4 P>
blockQuote>
ou si vous êtes sur Unix / Linux, vous pouvez analyser la sortie de fichier (1) de votre programme. P>
Vous n'avez pas besoin de numériser l'ensemble du fichier pour l'identifier, la signature fera toutefois, si vous devez, notez que MP4 est un conteneur em> pour d'autres formats, ce qui signifie que vous voulez Il faut probablement savoir sur MP4 et d'autres formats qu'il contient également, il y a des informations ici:
http://fr.wikipedia.org/wiki/mpeg-4_part_14 P>
J'utiliserais quelque chose comme libffmpeg pour le faire à la place. P>
Je veux aussi des informations sur les structures internes. Est-ce documenté n'importe où?
@Parthshah Si vous souhaitez simplement détecter le fichier, vous n'avez pas besoin de la spécification complète.
Oui je sais. Mon équipe insiste sur le fait que je numérise tout le dossier! Je vais devoir le faire.
Cette séquence n'est pas toujours correcte. Ici est meilleur * * * * 66 74 79 70. * signifie qu'il peut être n'importe quoi
Références Où avez-vous eu cette information?
C'est un format de conteneur. La spécification est ici . P>
Même avec la spécification à la main, vous auriez beaucoup de travail à faire pour supporter tout un conteneur pourriez-vous représenter dans votre programme; Définir des exigences réalistes. P>
Le format de fichier multimédia de base ISO est disponible gratuitement et le format de fichier MP4 est l'extension du "format de média de base", pour la plupart des cas suffisamment pour comprendre "format de média de base". Essayez que Google reviendra une norme. P> li>
Pour détecter si le fichier est MP4, vous devez lire les 8 premiers octets, qui contiennent (4 premiers octets la taille de l'atome et les 4 octets suivants "FTYP"). Après cela, il contient le Majorbrand et les CompatiblesBrottes - si l'un d'entre eux est ISOM, il s'agit d'un fichier MP4.So vous devez analyser que quelques octets initiaux au fichier Confiem MP4. P> LI> ul>
Vous pouvez également consulter le code "MP4v2-1.9.1" pour comprendre le format MP4. P>
Lire le fichier en tant que byte [] puis analyse MIME.
byte[] header = new byte[20]; System.arraycopy(fileBytes, 0, header, 0, Math.min(fileBytes.length, header.length)); int c1 = header[0] & 0xff; int c2 = header[1] & 0xff; int c3 = header[2] & 0xff; int c4 = header[3] & 0xff; int c5 = header[4] & 0xff; int c6 = header[5] & 0xff; int c7 = header[6] & 0xff; int c8 = header[7] & 0xff; int c9 = header[8] & 0xff; int c10 = header[9] & 0xff; int c11 = header[10] & 0xff; int c12 = header[11] & 0xff; int c13 = header[12] & 0xff; int c14 = header[13] & 0xff; int c15 = header[14] & 0xff; int c16 = header[15] & 0xff; int c17 = header[16] & 0xff; int c18 = header[17] & 0xff; int c19 = header[18] & 0xff; int c20 = header[19] & 0xff; if(c1 == 0x00 && c2 == 0x00 && c3 == 0x00)//c4 == 0x20 0x18 0x14 { if(c5 == 0x66 && c6 == 0x74 && c7 == 0x79 && c8 == 0x70)//ftyp { if(c9 == 0x69 && c10 == 0x73 && c11 == 0x6F && c12 == 0x6D)//isom return "video/mp4"; if(c9 == 0x4D && c10 == 0x53 && c11 == 0x4E && c12 == 0x56)//MSNV return "video/mp4"; if(c9 == 0x6D && c10 == 0x70 && c11 == 0x34 && c12 == 0x32)//mp42 return "video/m4v"; if(c9 == 0x4D && c10 == 0x34 && c11 == 0x56 && c12 == 0x20)//M4V return "video/m4v"; //flv-m4v if(c9 == 0x71 && c10 == 0x74 && c11 == 0x20 && c12 == 0x20)//qt return "video/mov"; if(c9 == 0x33 && c10 == 0x67 && c11 == 0x70 && c17 != 0x69 && c18 != 0x73) return "video/3gp";//3GG, 3GP, 3G2 } if(c5 == 0x6D && c6 == 0x6F && c7 == 0x6F && c8 == 0x76)//MOOV { return "video/mov"; } }
Système.arraycopy ??