J'ai un peu avancer, et compris que le Header d'un streamAudio etait du
type WAVEFORMATEX, à l'excution de ce code, un fichier d'une taille
relativement petite (devrai etre autour des 3mo et ne fait que 293 ko)
mais d'une durée correcte, je n'ai pas trouvé d'information sur la
taille des frames de son :
Code :
void Add_Audio(char * Name,PAVISTREAM audio)
{
PAVIFILE avi_file;
AVIFileInit();
AVIFileOpen(&avi_file, Name, OF_WRITE | OF_CREATE, NULL);
//AVISTREAMINFO
AVISTREAMINFO avi_stream_info;
int a=AVIStreamInfo(audio, &avi_stream_info, sizeof(AVISTREAMINFO));
//WAVEFORMATEX
WAVEFORMATEX wave;
LONG lStreamSize = sizeof(wave);
AVIStreamReadFormat(audio, 0, &wave, &lStreamSize);
//Nouveau stream
PAVISTREAM newstream;
AVIFileCreateStream(avi_file, &newstream, &avi_stream_info);
AVIStreamSetFormat(newstream, 0, &wave, sizeof(wave));
int size=wave.cbSize; // Quel est la taille d'une frame son ?
unsigned char * trame=new unsigned char[size];
//Copie byte par byte
for(int i=AVIStreamStart(audio);i<AVIStreamEnd(audio);i++)
{
AVIStreamRead(audio,i,1,trame,size,NULL,NULL);
AVIStreamWrite(newstream,i,1,trame,size, AVIIF_KEYFRAME, NULL, NULL);
}
AVIStreamRelease(audio);
AVIStreamRelease(newstream);
AVIFileRelease(avi_file);
}
"int size=wave.cbSize;" j'ai de serieux doutes sur cette taille, car elle est égale à 12 quand je debug, ce qui me parai peu...
|