Je développe en C++ une application qui gère l'administration de fichiers
WAVE.
Je voudrais savoir comment récupérer les infos sur ces fichiers, notamment
la duree de la sequence audio.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
AMcD®
Nicolas ROBERT wrote:
Bonjour,
Je développe en C++ une application qui gère l'administration de fichiers WAVE. Je voudrais savoir comment récupérer les infos sur ces fichiers, notamment la duree de la sequence audio.
Quelqu'un a-t-il déjà été confronté au problème ?
Cdt nicolas
Si j'ai bonne mémoire, il te faut utiliser les fonction mmio par exemple, lire le .wav, extraire certaines donénes du header et calculer toi-même. Pour avoir des détails sur le format .wav (par exemple) :
La formule de calcul (trouvée en 5 secondes sur le net) :
NumberOfSamples:=(cbSize*8*nChannels) div nBitsPerSample; Length:=(NumberofSamples/nChannels)/nSamplesPerSec;
Maintenant il est possible qu'il existe une fonction DirectSound ou une autre qui le fasse directement, je n'en sais rien.
-- AMcD®
http://arnold.mcdonald.free.fr/
Nicolas ROBERT wrote:
Bonjour,
Je développe en C++ une application qui gère l'administration de
fichiers WAVE.
Je voudrais savoir comment récupérer les infos sur ces fichiers,
notamment la duree de la sequence audio.
Quelqu'un a-t-il déjà été confronté au problème ?
Cdt
nicolas
Si j'ai bonne mémoire, il te faut utiliser les fonction mmio par exemple,
lire le .wav, extraire certaines donénes du header et calculer toi-même.
Pour avoir des détails sur le format .wav (par exemple) :
Je développe en C++ une application qui gère l'administration de fichiers WAVE. Je voudrais savoir comment récupérer les infos sur ces fichiers, notamment la duree de la sequence audio.
Quelqu'un a-t-il déjà été confronté au problème ?
Cdt nicolas
Si j'ai bonne mémoire, il te faut utiliser les fonction mmio par exemple, lire le .wav, extraire certaines donénes du header et calculer toi-même. Pour avoir des détails sur le format .wav (par exemple) :
La formule de calcul (trouvée en 5 secondes sur le net) :
NumberOfSamples:=(cbSize*8*nChannels) div nBitsPerSample; Length:=(NumberofSamples/nChannels)/nSamplesPerSec;
Maintenant il est possible qu'il existe une fonction DirectSound ou une autre qui le fasse directement, je n'en sais rien.
-- AMcD®
http://arnold.mcdonald.free.fr/
Christian ASTOR
AMcD® wrote:
Si j'ai bonne mémoire, il te faut utiliser les fonction mmio par exemple, lire le .wav, extraire certaines donénes du header et calculer toi-même. Pour avoir des détails sur le format .wav (par exemple) :
Si j'ai bonne mémoire, il te faut utiliser les fonction mmio par exemple,
lire le .wav, extraire certaines donénes du header et calculer toi-même.
Pour avoir des détails sur le format .wav (par exemple) :
Si j'ai bonne mémoire, il te faut utiliser les fonction mmio par exemple, lire le .wav, extraire certaines donénes du header et calculer toi-même. Pour avoir des détails sur le format .wav (par exemple) :
Merci de vos réponses, la solution que j'ai retenu est celle avec DirectSound. J'ai télécharger DirectX9 SDK qui semble contenir les librairies nécessaires. Ma fonction ressemble à celle décrite sur la page de la msdn (cf lien):
pWav = new CWaveFile(); if (SUCCEEDED(pWav->Open(strFileName, NULL, WAVEFILE_READ))) { wfx = pWav->GetFormat(); dwSize = pWav->GetSize(); dwLen = (DWORD) (1000 * dwSize / wfx->nAvgBytesPerSec); pWav->Close(); } if (pWav) delete pWav; return dwLen; } La compilation de mon code génère 3 erreurs de linking: "LNK2001: unresolved external symbol _IID_IDirectSound3DListener" "LNK2001: unresolved external symbol _IID_IDirectSoundNotify" "LNK2001: unresolved external symbol _IID_IDirectSound3DBuffer"
J'ai réussi à identifier la déclaration de ces fonctions dans le fichier "dsound.h", mais l'ajout link avec dsound.lib (nécessaire pour enlever d'autres erreurs de link) ne change pas ce problème. Quelqu'un connait-il la bibliothèque à rajouter ?
Cdt nicolas
> > Maintenant il est possible qu'il existe une fonction DirectSound ou une
> autre qui le fasse directement, je n'en sais rien.
Merci de vos réponses, la solution que j'ai retenu est celle avec
DirectSound. J'ai télécharger DirectX9 SDK qui semble contenir les
librairies nécessaires. Ma fonction ressemble à celle décrite sur la page de
la msdn (cf lien):
pWav = new CWaveFile();
if (SUCCEEDED(pWav->Open(strFileName, NULL, WAVEFILE_READ)))
{
wfx = pWav->GetFormat();
dwSize = pWav->GetSize();
dwLen = (DWORD) (1000 * dwSize / wfx->nAvgBytesPerSec);
pWav->Close();
}
if (pWav) delete pWav;
return dwLen;
}
La compilation de mon code génère 3 erreurs de linking:
"LNK2001: unresolved external symbol _IID_IDirectSound3DListener"
"LNK2001: unresolved external symbol _IID_IDirectSoundNotify"
"LNK2001: unresolved external symbol _IID_IDirectSound3DBuffer"
J'ai réussi à identifier la déclaration de ces fonctions dans le fichier
"dsound.h", mais l'ajout link avec dsound.lib (nécessaire pour enlever
d'autres erreurs de link) ne change pas ce problème. Quelqu'un connait-il la
bibliothèque à rajouter ?
Merci de vos réponses, la solution que j'ai retenu est celle avec DirectSound. J'ai télécharger DirectX9 SDK qui semble contenir les librairies nécessaires. Ma fonction ressemble à celle décrite sur la page de la msdn (cf lien):
pWav = new CWaveFile(); if (SUCCEEDED(pWav->Open(strFileName, NULL, WAVEFILE_READ))) { wfx = pWav->GetFormat(); dwSize = pWav->GetSize(); dwLen = (DWORD) (1000 * dwSize / wfx->nAvgBytesPerSec); pWav->Close(); } if (pWav) delete pWav; return dwLen; } La compilation de mon code génère 3 erreurs de linking: "LNK2001: unresolved external symbol _IID_IDirectSound3DListener" "LNK2001: unresolved external symbol _IID_IDirectSoundNotify" "LNK2001: unresolved external symbol _IID_IDirectSound3DBuffer"
J'ai réussi à identifier la déclaration de ces fonctions dans le fichier "dsound.h", mais l'ajout link avec dsound.lib (nécessaire pour enlever d'autres erreurs de link) ne change pas ce problème. Quelqu'un connait-il la bibliothèque à rajouter ?
Cdt nicolas
Vincent Burel
"Nicolas ROBERT" wrote in message news:41596865$0$27443$
Merci de vos réponses, la solution que j'ai retenu est celle avec DirectSound.
très mauvais choix ! :-) bientot pour connaitre la taille d'un fichier faudra utiliser 256Mo de librarie et 4000 object en cascade... bref je me comprends :-)
La compilation de mon code génère 3 erreurs de linking: "LNK2001: unresolved external symbol _IID_IDirectSound3DListener" "LNK2001: unresolved external symbol _IID_IDirectSoundNotify" "LNK2001: unresolved external symbol _IID_IDirectSound3DBuffer"
J'ai réussi à identifier la déclaration de ces fonctions dans le fichier "dsound.h", mais l'ajout link avec dsound.lib (nécessaire pour enlever d'autres erreurs de link) ne change pas ce problème. Quelqu'un connait-il
la
bibliothèque à rajouter ?
comme leur nom l'indique, les IID ne sont pas des fonction mais des IID ! un IID c'est une constante de 16 octets qui contient un numéro unique (unique au monde , entendons nous bien) attaché à une Interface logicielle : (une interface logicielle , c'est un tableau de pointeur de fonction, de methodes en gros... c'est la vector table d'un object C++ ... bref étudiez COM pour les détails)
Ces IID sont généralement stockés dans une LIB (essayez DXGUID.LIB par exemple) mais parfois il se peut que vous n'ayez pas la lib contenant ces constantes (et d'ailleurs je trouve que ca sert un peu à rien ces lib de constantes... enfin bon, je me comprends). Dans ce cas il vous suffit d'aller faire un tour dans le HEADER contenant les IID et vous trouverez leur valeur (notée sous forme de commentaire au moins) et donc vous pourrez les définir vous-même qqc part dans votre soft...
VB
"Nicolas ROBERT" <nicolas.robert@prospective-software.fr> wrote in message
news:41596865$0$27443$8fcfb975@news.wanadoo.fr...
Merci de vos réponses, la solution que j'ai retenu est celle avec
DirectSound.
très mauvais choix ! :-) bientot pour connaitre la taille d'un fichier
faudra utiliser 256Mo de librarie et 4000 object en cascade... bref je me
comprends :-)
La compilation de mon code génère 3 erreurs de linking:
"LNK2001: unresolved external symbol _IID_IDirectSound3DListener"
"LNK2001: unresolved external symbol _IID_IDirectSoundNotify"
"LNK2001: unresolved external symbol _IID_IDirectSound3DBuffer"
J'ai réussi à identifier la déclaration de ces fonctions dans le fichier
"dsound.h", mais l'ajout link avec dsound.lib (nécessaire pour enlever
d'autres erreurs de link) ne change pas ce problème. Quelqu'un connait-il
la
bibliothèque à rajouter ?
comme leur nom l'indique, les IID ne sont pas des fonction mais des IID ! un
IID c'est une constante de 16 octets qui contient un numéro unique (unique
au monde , entendons nous bien) attaché à une Interface logicielle : (une
interface logicielle , c'est un tableau de pointeur de fonction, de methodes
en gros... c'est la vector table d'un object C++ ... bref étudiez COM pour
les détails)
Ces IID sont généralement stockés dans une LIB (essayez DXGUID.LIB par
exemple) mais parfois il se peut que vous n'ayez pas la lib contenant ces
constantes (et d'ailleurs je trouve que ca sert un peu à rien ces lib de
constantes... enfin bon, je me comprends). Dans ce cas il vous suffit
d'aller faire un tour dans le HEADER contenant les IID et vous trouverez
leur valeur (notée sous forme de commentaire au moins) et donc vous pourrez
les définir vous-même qqc part dans votre soft...
"Nicolas ROBERT" wrote in message news:41596865$0$27443$
Merci de vos réponses, la solution que j'ai retenu est celle avec DirectSound.
très mauvais choix ! :-) bientot pour connaitre la taille d'un fichier faudra utiliser 256Mo de librarie et 4000 object en cascade... bref je me comprends :-)
La compilation de mon code génère 3 erreurs de linking: "LNK2001: unresolved external symbol _IID_IDirectSound3DListener" "LNK2001: unresolved external symbol _IID_IDirectSoundNotify" "LNK2001: unresolved external symbol _IID_IDirectSound3DBuffer"
J'ai réussi à identifier la déclaration de ces fonctions dans le fichier "dsound.h", mais l'ajout link avec dsound.lib (nécessaire pour enlever d'autres erreurs de link) ne change pas ce problème. Quelqu'un connait-il
la
bibliothèque à rajouter ?
comme leur nom l'indique, les IID ne sont pas des fonction mais des IID ! un IID c'est une constante de 16 octets qui contient un numéro unique (unique au monde , entendons nous bien) attaché à une Interface logicielle : (une interface logicielle , c'est un tableau de pointeur de fonction, de methodes en gros... c'est la vector table d'un object C++ ... bref étudiez COM pour les détails)
Ces IID sont généralement stockés dans une LIB (essayez DXGUID.LIB par exemple) mais parfois il se peut que vous n'ayez pas la lib contenant ces constantes (et d'ailleurs je trouve que ca sert un peu à rien ces lib de constantes... enfin bon, je me comprends). Dans ce cas il vous suffit d'aller faire un tour dans le HEADER contenant les IID et vous trouverez leur valeur (notée sous forme de commentaire au moins) et donc vous pourrez les définir vous-même qqc part dans votre soft...