DÉTERMINER LA DURÉE D'UN FICHIER AVI

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 - 26 sept. 2007 à 23:03
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014 - 28 sept. 2007 à 21:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44212-determiner-la-duree-d-un-fichier-avi

cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
28 sept. 2007 à 21:03
Sa s'améliore sans cesse :) Dernier petit tip, au lieu de perror("probleme") tu devrait plutot passer un pointeur vers un int en argument que tu change selon que la fonction a échoué ou non et vérifier que la lecture s'est faite correctement. Sinon sa de plus en plus propre :P
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
27 sept. 2007 à 23:33
for(i=0;i<32;i++) fgetc(test);
for(i=0;i<12;i++) fgetc(test);

Inutile de lire des caractères que l'on n'utilise pas (et encore plus de les lire un par un)

À remplacer par fseek
Digaboy Messages postés 6 Date d'inscription mardi 7 août 2007 Statut Membre Dernière intervention 27 septembre 2007
27 sept. 2007 à 19:51
merci bien à toi pour cette aide, je ne savais pas que l'on pouvait récupérer 4 bytes d'un coup.
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
27 sept. 2007 à 17:46
Oui c'est juste le 256*i que je trouvais bizarre pas le test.
Autre chose : tu pourrais récupérer directement un int32 au lieu d'additionner les char, du genre fread(&final_time,4,1,file)
Digaboy Messages postés 6 Date d'inscription mardi 7 août 2007 Statut Membre Dernière intervention 27 septembre 2007
27 sept. 2007 à 10:53
Merci pour ces conseils

((256*i ==0) ? 1 : 256*i) ceci me permet de décaler la valeur de 0, 8, 16 ou 24 bits. Mais la première valeur ne doit pas être décalé donc lorsque i==0 je dois conserver la valeur de valeur[i] en la multipliant par 1 au lieu de valeur[i]*256*i car ceci est égal à 0.

mais je pense que je vais, comme tu me l'a conseillé, mettre tout en dur dans mon code.
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
26 sept. 2007 à 23:03
Tu peux remplacer for(i=0;i<56;i++) getc(...);
par fread(pBuffer,1,56,pFile);

et (256*i==0)? par (!i)? (je comprends pas pourquoi t'as mis ca en fait)

de plus comme tous tes calculs sont statiques tu pourrais les écrire directement sans boucle for.
Rejoignez-nous