Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - C++ - Incorporazione file audio
Forum - C/C++ - C++ - Incorporazione file audio

Avatar
mitor (Normal User)
Pro


Messaggi: 73
Iscritto: 01/08/2007

Segnala al moderatore
Postato alle 9:13
Giovedì, 18/12/2008
Ciao a tutti,
sto esplorando un pò il mondo del c++, momentaneamente sto utilizzando C++ Builder 2009
vorrei sapere se è possibile integrare un file audio nell'eseguibile, ed estrarlo...
in modo tale che il file audio, quando c'è la necessita che venga ascoltato, viene estratto e poi cancellato..per il codice di riproduzione del file audio, ho già provveduto...
mentre per incorporazione di un file audio e l'estrazione non ho trovato nulla sulla rete..

Se avete il codice necessario, oppure un qualsiasi riferimento che faccia al caso mio, postatelo :D

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6110
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 14:15
Giovedì, 18/12/2008
Inseriscilo all'interno dell'eseguibile come risorsa.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
mitor (Normal User)
Pro


Messaggi: 73
Iscritto: 01/08/2007

Segnala al moderatore
Postato alle 23:16
Giovedì, 18/12/2008
Testo quotato

Postato originariamente da pierotofy:

Inseriscilo all'interno dell'eseguibile come risorsa.


si fino a qui c'ero arrivato...ma per richiamarlo?:-|

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6110
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 10:09
Venerdì, 19/12/2008
Codice sorgente - presumibilmente Delphi

  1. { Funzione per suonare un suono del file .res }
  2. procedure PlayResSound(ResIndex: integer);
  3. begin
  4.   PlaySound(PChar(ResIndex),HInstance, snd_ASync or snd_Memory or snd_Resource);
  5. end;



Per il codice completo guarda il mio Multiplayer Poker: http://www.pierotofy.it/pages/sorgenti/browse/14637/

Moduli Constants.pas e LobbyClient.pas.

Ultima modifica effettuata da pierotofy il 19/12/2008 alle 10:09


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
mitor (Normal User)
Pro


Messaggi: 73
Iscritto: 01/08/2007

Segnala al moderatore
Postato alle 19:07
Venerdì, 19/12/2008
Testo quotato

Postato originariamente da pierotofy:

Codice sorgente - presumibilmente Delphi

  1. { Funzione per suonare un suono del file .res }
  2. procedure PlayResSound(ResIndex: integer);
  3. begin
  4.   PlaySound(PChar(ResIndex),HInstance, snd_ASync or snd_Memory or snd_Resource);
  5. end;



Per il codice completo guarda il mio Multiplayer Poker: http://www.pierotofy.it/pages/sorgenti/browse/14637/

Moduli Constants.pas e LobbyClient.pas.



Ho provato ad inserire il codice ma non viene riconosciuta buona parte..come se il compilatore non sappia che ci abbia messo dentro..ricordo che sto usando C++ Builder 2009 (CodeGear) per queste prove, per avviare un semplice file audio nella stessa directory uso:
Codice sorgente - presumibilmente Plain Text

  1. PlaySound("audio.wav",0,SND_FILENAME | SND_ASYNC | SND_LOOP);



Ho anche provato diverse alternative:
PlaySound("Resource_1", HInstance, SND_RESOURCE);
PlaySound("audio", HInstance, SND_RESOURCE);
PlaySound("audio.wav", HInstance, SND_RESOURCE);

ma nessuna di queste funziona....
ricordo anche che per inserire il file nelle risorse uso dal menu il tasto Resource.
mi viene chiesto anche di selezionare il tipo di risorsa e automaticamente mi imposta RCData.

essendo che ho sempre utilizzato file all'esterno per lavorare, sarebbe comodo integrarli tutti nell'eseguibile..in caso estrarli e poi eliminarli..oppure se possibile avviarli direttamente dalle risorse.


:-|

PM Quote
Avatar
mc (Normal User)
Rookie


Messaggi: 52
Iscritto: 04/12/2008

Segnala al moderatore
Postato alle 4:01
Sabato, 20/12/2008
Beh, che ci vuole a incorporarlo manualmente ?
Crei un nuovo file header, e ci scrivi:
Codice sorgente - presumibilmente C/C++

  1. //File Resource1.h
  2.  
  3. //Codice binario
  4. const char *resource1 = "\xBYTE1\xBYTE2"



Per estrarre il codice esadecimale fai un dump binario del file, oppure ti scrivi un programma addatto allo scopo, molto facile.
Anzi te lo posto:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <assert.h>
  4.  
  5. int main(int argc, char **argv){
  6.  
  7.    FILE *fp = fopen(argv[1], "rb");
  8.  
  9.    assert(fp != NULL);
  10.  
  11.    while(!feof(fp)
  12.      printf("\\x%X", fgetc(fp));
  13.  
  14.    putchar('\n');
  15.  
  16.    return 0;
  17.  
  18. }



Lo richiami da shell, e gli dai in pasto il tuo file audio. Copi l'output e lo metti come contenuto di resource1.
Poi includi il file resource1.h nel tuo progetto,
e per fare il play basta passare resource1 come parametro alla funzione PlaySound, naturalmente se supporta il play da buffer.

EybEyb.

PM Quote