Accueil > Forum > > > > AVI to BMP to AVI
AVI to BMP to AVI
mercredi 11 mai 2005 à 07:42:00 |
AVI to BMP to AVI

phipedro
|
Voilà je suis étudiant en électronique(école d'ingé) et je suis en stage en Chine. Je dois créer une application qui permettrai de compter des personnes voir de les reconnaitre à l'aide d'une caméra. La carte est faite elle travaille avec un DSP de TI série 6000. Il faut maintenant que j'écrive le code en C++ sous VC++ 6. Dans un premier temps, je voudrais partir d'une video AVI la transformer en image BMP puis transformer les images BMP en AVI mais pour l'instant, je n'arrive pas à retransformer les bmp pour avoir le même fichier qu'avant et lorsque je copie les BMP sur mon disque, elles sont décallés et elles ont un pb de couleur aidez moi svp et soyez indulgent d'habitude je programme en C sous UNIX........
merci
Voici le code il ne prend en compte que les 14 premières streams et je ne sais pas pourquoi mais après ilne veut pas faire le "AVICreateStream". En plus je ne peux pas lire le fichier créer!! int AVIExtraction(char* Name) { AVIFileInit();/*initialisation*/ PAVIFILE avi; /*openning and test of the avi file*/ int r=AVIFileOpen(&avi, Name, OF_READ, NULL); if(r!=AVIERR_OK) { if(avi!=NULL) AVIFileRelease(avi); puts("error in openning avi file"); return -1; }
/*copy of the information*/ AVIFILEINFO info; AVIFileInfo(avi, &info, sizeof(AVIFILEINFO)); /*getting and test of the stream for a video*/ PAVISTREAM avistream; r=AVIFileGetStream(avi, &avistream, streamtypeVIDEO, 0); if(r!=AVIERR_OK) { if(avistream!=NULL) AVIStreamRelease(avistream); AVIFileExit(); puts("error in getting the stream of the avi file"); return -1; }
/*creation of bitmap pictures*/ int NFrames=AVIStreamLength(avistream);/*number of frame*/ int FirstFrame=AVIStreamStart(avistream);/*First Frame*/
BITMAPINFOHEADER BInfo; ZeroMemory(&BInfo, sizeof(BITMAPINFOHEADER));/*restoring*/
BInfo.biBitCount = 12; /*24 bit per pixel*/ BInfo.biCompression = 0; /*BI_RGB;*/ BInfo.biHeight = info.dwHeight; BInfo.biWidth = info.dwLength; BInfo.biPlanes = 1; BInfo.biSize = sizeof(BInfo);
/*prepare to decopress*/ PGETFRAME frame; frame=AVIStreamGetFrameOpen(avistream, NULL); if(frame==NULL) { puts("error in the preparation"); return -1; } PAVIFILE newavi; /*openning and test of the avi file*/ r=AVIFileOpen(&newavi, "test.avi",OF_WRITE | OF_CREATE, NULL); if(r!=0) { if(newavi!=NULL) AVIFileRelease(newavi); puts("error in openning avi file2"); return -1; } /*get the frames*/ int i,j=0; for (i=FirstFrame; i<NFrames; i++) { j= i-FirstFrame; puts("hello1"); int* pDIB =(int*) AVIStreamGetFrame(frame, j); r=AVICreation(BInfo,pDIB, newavi);puts("hello2"); if(r==FALSE) { puts("error in the avi movie creation loop"); printf("number of created stream : %d\n",j); return -1; } } AVIStreamGetFrameClose(frame);
/*close the stream */
if (avistream!=NULL) AVIStreamRelease(avistream);
AVIFileExit(); puts(" the extraction is finshed"); return NFrames; }
BOOL AVICreation(BITMAPINFOHEADER bih, int* pDIB,PAVIFILE newavi) {
int r; /*copy of the information*/ AVISTREAMINFO streaminfo; ZeroMemory(&streaminfo, sizeof(AVISTREAMINFO));/*restoring*/
streaminfo.fccType = streamtypeVIDEO; streaminfo.fccHandler =0;//mmioFOURCC('M','P','G','4'); streaminfo.dwScale = 1; streaminfo.dwRate =30; streaminfo.dwSuggestedBufferSize =0; streaminfo.dwQuality =1000; streaminfo.rcFrame.right =bih.biWidth; streaminfo.rcFrame.bottom =bih.biHeight;
/*creation of the new stream*/ PAVISTREAM avistream; r=AVIFileCreateStream(newavi,&avistream, &streaminfo); if (r!=0) { puts("error in the creation of the new stream"); AVIFileRelease (newavi); AVIFileExit (); return FALSE; }
/*format of the stream*/ AVIStreamSetFormat(avistream, 0, &bih, sizeof(bih)); if (r!=0) { puts("error in the setting of the stream format"); AVIStreamClose(avistream); AVIFileRelease (newavi); AVIFileExit (); return FALSE; }
/*stream writing */ AVIStreamWrite(avistream,0,30,pDIB,bih.biSizeImage,AVIIF_KEYFRAME,NULL,NULL); puts("hello"); AVIFileRelease (newavi); return TRUE; }
|
|
mercredi 11 mai 2005 à 16:33:57 |
Re : AVI to BMP to AVI

buno
|
Salut, J'ai pas tout regardé en détails mais voici deux remarques. 1ère remarque: pour récupérer les frames d'un AVI, je ne fais pas comme toi. En fait, je les prends une par une, comme ceci:
AVIStreamRead(_AVIStreamVideo, FrameNum, 1, _ImageRaw, _BitmapFormatRaw->bmiHeader.biSizeImage, &_BytesReadNb, NULL) sachant que:
_ImageRaw=new unsigned char[_BitmapFormatRaw->bmiHeader.biSizeImage]2nd remarque: j'écris également les frames une par une dans le fichier AVI, comme ceci:
AVIStreamWrite(_AVIStreamVideo, _FrameGet, 1, (LPBYTE)_DIB, _BI->bmiHeader.biSizeImage, AVIIF_KEYFRAME, NULL, NULL); Sachant que toi, tu en écris plusieurs d'un coup, tu ne devrais pas indiquer comme taille de buffer: 30*bih.biSizeImage ?? Buno ---------------------------------------- L'urgent est fait, l'impossible reste à faire. Pour les miracles, prévoir un délai...
|
|
mercredi 11 mai 2005 à 17:53:39 |
Re : AVI to BMP to AVI

buno
|
Remarques complémentaires:
/*creation of bitmap pictures*/ int NFrames=AVIStreamLength(avistream);/*number of frame*/ int FirstFrame=AVIStreamStart(avistream);/*First Frame*/
BITMAPINFOHEADER BInfo; ZeroMemory(&BInfo, sizeof(BITMAPINFOHEADER));/*restoring*/
BInfo.biBitCount = 24; /*24 bit per pixel*/ BInfo.biCompression = 0; /*BI_RGB;*/ BInfo.biHeight = info.dwHeight; BInfo.biWidth = info.dwWidth; BInfo.biPlanes = 1; BInfo.biSize = sizeof(BInfo); De plus, y'a un truc que je comprend pas: quand tu récupères les frames de file1, tu crée à chaque fois un AVI de 30 frames??? Essaie d'utiliser AVIStreamWrite(...) et tiens moi au courant de l'avancée des choses. @+ Buno ---------------------------------------- L'urgent est fait, l'impossible reste à faire. Pour les miracles, prévoir un délai...
|
|
jeudi 12 mai 2005 à 08:38:12 |
Re : AVI to BMP to AVI

phipedro
|
merci de ton aide. j' ai essayé AVIStreamRead et depuis au moins je crée un fichier AVI lisible(c déjà ça  ) mais il ne comporte qu'une image. De plus cette image est un mix de 6 images du fichier AVI du départ mais tournées à l'envers!!!!!! Autre soucis: au bout de 14 streams la fonction AVIFileCreateStream me renvoi AVIERR_UNSUPPORTED ! Autrement concernant tes autres remarques, j'ai modifié le BITMAPINFOHEADER et j'utilise déjà la fonction AVIStreamWrite(...) pour écrire le nouveau AVI(dernière partie de la fonction AVICreation(...)).
|
|
jeudi 12 mai 2005 à 08:52:39 |
Re : AVI to BMP to AVI

phipedro
|
Au fait j'ai aussi changé les arguments de mon AVIStreamWrite j'ai maintenant: AVIStreamWrite(avistream,j,1,pDIB,bih.biSizeImage,AVIIF_KEYFRAME,NULL,NULL); ce qui me permet de ne pas réécrire à chaque fois sur la même image et de n'écrire qu'une seule frameà la fois...... (pDIB étant maintenant un char* comme ton _ImageRaw)
|
|
jeudi 12 mai 2005 à 09:18:13 |
Re : AVI to BMP to AVI

buno
|
c'est bizarre ton 14 quand même... euh, un truc con, t'as bien vérifié qur ton AVI de départ était bon? Est-ce que ton fichier de départ est compressé? Cela expliquerais le mélange de plusieurs images. Si oui, il faut que, une fois les frames récupérées, tu les décompresse avec ICDecompress(...) ou un truc du genre...
Buno ---------------------------------------- L'urgent est fait, l'impossible reste à faire. Pour les miracles, prévoir un délai...
|
|
jeudi 12 mai 2005 à 17:13:49 |
Re : AVI to BMP to AVI

phipedro
|
oui j'ai bien vérifié le fichier de départ et il est OK. Pour la compression il faut que je regarde. Autrement, ce qui est bizard c'est qu'1 fois sur 4 AVIStreamRead(...)ne lit rien ( BytReadNb=0). De plus, à la 14ème stream le pb vient de AVIFileCreateStream qui me renvoi un truc qui n'a aucun rapport : AVIERR_UNSUPPORTED Il y a peut être un rapport avec le fait que le fichier de départ serais compressé. Je vérifie ça.
|
|
samedi 14 mai 2005 à 11:10:10 |
Re : AVI to BMP to AVI

phipedro
|
Je deviens fou. J'ai décompressé l'avi et ça ne marche tjrs pas ! Pour ce qui est du problème des 6 BMP en une je pense savoir d'où ça vient : le partie video de l'avi de base et codée en 12bits et non en 24. Mais lorsque je prends BInfo.biBitCount =12, la video crée esr noir. Autrement, j'ai toujours l'erreur AVIERR_UNSUPPORTED renvoyé par AVIFileCreateStream au bout de la 14ème frame. Merci pour ton aide moi ça fait 10 jours que j'y suis et franchement 
|
|
Cette discussion est classée dans : puts, of, avi, streaminfo, avistream
Répondre à ce message
Sujets en rapport avec ce message
Encodage AVI [ par Shadiest ]
J'aimerais encoder un fichier AVI en y ajoutant des images, j'utilise la classe Image et j'arrive déjà à récupérer des BMP à partir d'une vidéo (voir
Copier StreamAudio d'un AVI to AVI [ par Shadiest ]
Ayant directement accés aux streams d'un fichier AVI, j'aimerai copier l'audio dans un autre AVI, le problème a déjà été rencontré ici mais n'a pas
Votre avi sur un de mes projets. [ par bilaloch ]
Bonjour,Desolé si l'endroit n'est pas vraiment fait pour ca mais il me semble que c'est celui qui va le mieux avec mon message... Voila, c'est juste p
lecture d'une vidéo AVI dans une appli MFC [ par seb2086 ]
Bonjour à tous,Je voudrait pouvoir lancer automatiquement la lecture d'une vidéo à l'aide du contrôle Activex Windows MEDIA PLAYER lorsque la fenêtre
Affichage des trames d'un fichier avi [ par martin7 ]
Bonjour à tous,je veux faire une appli de traitement d'image avec visual+MFC pour des videos AVI.Je suis debutant en C++, je cherche donc des sources
Problème avec un programme de combat style RPG [URGENT] [ par john_cc ]
Bonjour,Je débute en C, c'est un de mes premiers codes.Je suis en train d'écrire un simulation de combat RPG en C, joueur contre IA.J'ai le bogue suiv
Probleme pour AVI => BMP [ par Detonator17 ]
Salut à tous,J'ai comme but de recuperer 1 image BITMAP (BMP) à un endroit précis d'un fichier video AVI en 640*480 sur le disque dur.Je ne sais pas c
sauvegarde d'une window avi en .bmp [ par Ravaner ]
Bjr à tous,Je déveleppais en C++ sous 98 et à mon grand regret je viens de passer sous XP et 70 % de mes progs ne tournent plus. Entre autres, une sau
Capture video DV vers AVI [ par francois33 ]
Bonjour Je cherche a faire la capture d'une video provenant d'une camera DV et a l'enregistrer sous forme de fichier AVI
syntax error at end of input [ par azerty53 ]
Bonsoir à la communauté cppfrancej'ai un probleme sur mon code que je n'arrive pas du tout a résoudre et ca fait deja un certain temps que je suis des
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|