Bonjour a tous ! :)
Je cherche désespérément de faire marcher mon programme de tchat vocal !
Enfaite, j’appelle la fonction FMOD_System_RecordStart dans l'application cliente et j'envoie mon pointeur sound (qui contient le son) dans l'application serveur mais je ne parvient pas a les lires (je n'entends aucun son !) :/
J'ai fais le teste de ne rien envoyer et d'écouter ce que j'ai obtenu dans l'application cliente et on entend bien le son !
Je pense avoir fait l'erreur au niveau de l'écoute dans l'application serveur ! :/
Voici les sources :
Client :
FMOD_SYSTEM *system = 0;
FMOD_SOUND *sound = 0;
FMOD_CREATESOUNDEXINFO exinfo;
int recorddriver, numdrivers;
char conti = 'O';
FMOD_System_Create(&system);
FMOD_System_SetOutput(system, FMOD_OUTPUTTYPE_DSOUND);
FMOD_System_SetDriver(system, 0);
FMOD_System_GetRecordNumDrivers(system, &numdrivers);
recorddriver = 0;
FMOD_System_Init(system, 32, FMOD_INIT_NORMAL, NULL);
memset(&exinfo, 0, sizeof(FMOD_CREATESOUNDEXINFO));
exinfo.cbsize = sizeof(FMOD_CREATESOUNDEXINFO);
exinfo.numchannels = 1;
exinfo.format = FMOD_SOUND_FORMAT_PCM16;
exinfo.defaultfrequency = 44100;
exinfo.length = exinfo.defaultfrequency * sizeof(short) * exinfo.numchannels * 20;
FMOD_System_CreateSound(system, 0, FMOD_2D | FMOD_SOFTWARE | FMOD_OPENUSER, &exinfo, &sound);
FMOD_System_RecordStart(system, recorddriver, sound, 0);
while(conti == 'O')
{
if((recv(sock, &conti, sizeof(conti), 0)) == SOCKET_ERROR)
break;
else if(conti == 'N')
break;
if((send(sock, &sound, sizeof(sound), 0)) == SOCKET_ERROR)
break;
Sleep(2);
}
printf("Record stop !\n");
FMOD_System_RecordStop(system, recorddriver);
FMOD_Sound_Release(sound);
FMOD_System_Release(system);
FMOD_System_Close(system);
Serveur :
FMOD_SYSTEM *system = 0;
FMOD_SOUND *sound = 0;
FMOD_System_Create(&system);
FMOD_System_SetOutput(system, FMOD_OUTPUTTYPE_DSOUND);
FMOD_System_SetDriver(system, 0);
FMOD_System_Init(system, 32, FMOD_INIT_NORMAL, NULL);
FMOD_System_CreateSound(system, 0, FMOD_2D | FMOD_SOFTWARE | FMOD_OPENUSER, 0, &sound);
char key;
char conti = 'O';
printf("Ecoute du client en cours...\n(Appuyer a tout moment sur une touche pour arreter)\n");
while(!kbhit())
{
if(send(sock_client[clientChoisie].csock, &conti, sizeof(conti), 0) == SOCKET_ERROR)
{
printf("Impossible de continuer l'enregistrement !\n");
coContiuner = 'N';
break;
}
if(recv(sock_client[clientChoisie].csock, &sound, sizeof(sound), 0) == SOCKET_ERROR)
{
printf("Impossible de recevoir l'enregistrement !\n");
coContiuner = 'N';
break;
}
FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, sound, 0, NULL);
Sleep(2);
}
Merci d'avance pour votre possibles aide avenir !
Cordialement. :)
Afficher la suite