2009-11-29 8 views
12

Sono sempre stato curioso di software di conversione audio, ma non ho mai visto una spiegazione adeguata dal punto di vista dei principianti su come scrivere un semplice programma che converta ad esempio, un file mp3 in un wav. Non sto chiedendo alcuno dei complessi algoritmi coinvolti, solo un piccolo esempio usando una semplice libreria. Cercando sul SO, mi si avvicinò con diversi nomi, tra cui:Guida assoluta ai principianti per lavorare con l'audio in C/C++?

  • Lame
  • La Sintesi Toolkit
  • OpenAL
  • DirectSound

Ma io sono in grado di trovare un esempio semplice di una di queste librerie. Di solito non mi dispiace guadare tonnellate di codice, ma qui non ho assolutamente alcuna conoscenza dell'argomento e quindi mi sento sempre come se fossi al buio.

Chiunque ha un semplice esempio/tutorial sulla conversione di un file audio utilizzando una di queste librerie? La mia domanda è specificamente rivolta a C/C++ perché quelle sono le due lingue che sto attualmente imparando e quindi mi piacerebbe continuare a concentrarmi su di esse.

Modifica: Una cosa che ho dimenticato di menzionare: Sono su un sistema * NIX.

+0

È una domanda molto difficile, perché di solito non si parla di audio in modo astratto, si desidera riprodurlo, e questo dipenderà dall'API del sistema operativo. L'API deve essere scritta per gestire il lavello della cucina. –

risposta

3

Grazie a tutti per le risposte! Li ho messi insieme per creare una piccola utility che converta un file AIFF/WAV/etc in un file mp3. Sembra che ci sia un certo interesse per questa domanda, ecco che cosa ho fatto, passo dopo passo:

Fase 1: Scaricare e installare la libreria libsndfile come suggerito da James Morris. Questa libreria è molto facile da usare - la sua unica limitazione è che non funzionerà con i file mp3.

Passaggio 2: Guardare all'interno della cartella "esempi" fornita con libsndfile e trovare generate.c. Questo dà un buon esempio di conversione di qualsiasi file non mp3 in vari formati di file. Dà anche un assaggio del potere dietro libsndfile.

Fase 3: codice Prendendo in prestito da generate.c, ho creato un file C che solo converte un file audio in un file wav. Qui è il mio codice: http://pastie.org/719546

Fase 4: Scaricare e installare il LAME encoder. Questo installerà sia la libreria libmp3lame che l'utility leda della riga di comando.

Fase 5: Ora è possibile sfogliare API LAME o semplicemente forchetta & exec un processo per LAME per convertire il file wav in un file mp3.

Passaggio 6: Tira fuori lo champagne e il caviale!

Se c'è un modo migliore (sono sicuro che ci sia) per farlo, per favore fatemelo sapere. Personalmente non ho mai visto una tabella di marcia passo passo come questa, quindi ho pensato che l'avrei messa lì fuori.

0

Controllare libmad http://mad.sourceforge.net "M" peg "A" udio "D" libreria ecoder ", dovrebbe fornire un buon esempio. Anche per una facile gestione audio multipiattaforma, controllare SDL http://www.libsdl.org/. Spero che questo aiuti.

+0

Ho ottenuto questo lavoro ma l'esempio crea file .PCM, che non riesco a capire come giocare. Domande correlate su superuser.com qui: http://superuser.com/questions/76665/playing-a-pcm-file-on-a-unix-system –

+0

Aggiornamento: posso importare i file PCM in Audacity andando a Project > Importa dati grezzi. –

1

Se siete curiosi di conoscere DSP e computer, date un'occhiata al Synthesis Toolkit. È dolce. È progettato per l'apprendimento. Gli esempi e le esercitazioni che hanno sul loro sito Web sono semplici e approfonditi. Tenete a mente, i ragazzi che lo hanno scritto, lo hanno scritto in modo da poter creare modelli acustici di strumenti reali. Di conseguenza, hanno incluso alcuni strumenti che sono semplicemente stravaganti, ma divertenti. Vi fornirà una comprensione fondamentale dell'elaborazione del suono PCM. E probabilmente sarai in grado di mettere insieme qualche piccolo divertente rumore di rumori mentre sei lì.

https://ccrma.stanford.edu/software/stk/

2

per la conversione tra vari formati (ad eccezione MP3) controllare libsndfile http://mega-nerd.com/libsndfile/

Libsndfile è una libreria progettata per consentire la lettura e la scrittura di molti diversi formati di file suono campionato (come ad come MS Windows WAV e il formato Apple/SGI AIFF) attraverso un'interfaccia libreria standard .

Durante le operazioni di lettura e scrittura, formati vengono convertiti senza soluzione di continuità tra il formato del programma applicativo ha richiesto o fornito e formato dei dati del file.Il programmatore applicazione può rimanere beatamente inconsapevoli di questioni come file di endian-ness e formattare i dati

E 'anche semplice da usare, con l'API seguendo lo stile dei nomi delle funzioni della libreria standard C:

http://mega-nerd.com/libsndfile/api.html

E gli esempi sono inclusi nella distribuzione di origine.

Per l'output audio effettivo, sarà necessaria un'altra libreria, SDL come già detto potrebbe essere un buon punto di partenza. Mentre SDL può anche leggere/scrivere file audio, libsndfile è di gran lunga superiore.

Problemi correlati