Domanda

Ho file audio codificati G729. Devo convertirli a livello di codice in WAV PCM (16 bit 8 kHz mono) nel flusso di uno strumento che sta facendo anche altre cose. Ho un eseguibile che lo farà per me. Ma generare quel processo esterno ogni volta che mi converto è troppo pesante per le risorse. Soprattutto se ho bisogno che molti di loro vengano eseguiti in parallelo. Sto cercando una libreria o un codice .NET che mi permetta di chiamarlo all'interno del mio processo.

È stato utile?

Soluzione

Segui questo link: L'implementazione di VoiceAge Open G.729 . Forniscono inoltre decodificatore e codificatore g729 scritti in C.

Altri suggerimenti

Secondo Wikipedia, G.729 include numerosi brevetti ed è concesso in licenza da Sipra , quindi probabilmente hai vinto " ho molta fortuna a trovare un lobrary appropriato. A meno che tu non stia decodificando un gran numero di file molto piccoli, il costo di generare un nuovo processo non dovrebbe essere così grande rispetto al costo di fare la decodifica, quindi direi di usare l'eseguibile che hai.

Per quanto riguarda le risorse, sì, i processi di generazione richiedono molte più risorse rispetto all'utilizzo dei thread. Tuttavia, ciò non dovrebbe importare, a condizione che vengano generati solo molti processi quanti sono i core della macchina. Generare più processi semplicemente spreca risorse e non ti guadagna alcun parallelismo extra.

Wikipedia dice: " G.729 include brevetti di diverse società ed è concesso in licenza da Sipro ( http: // www .sipro.com / ). In un certo numero di paesi, l'uso di G.729 potrebbe richiedere un canone e / o un canone. & Quot;

Ma suppongo che tu l'abbia già considerato nella tua domanda.

Se devi assolutamente essere in fase di elaborazione, una soluzione (senza dire che è la migliore) potrebbe essere l'uso di LibAVCodec, che è sotto LGPL.

Un'implementazione di riferimento di libero utilizzo all'indirizzo: http://www.readytechnology.co.uk/open/ipp-codecs-g729-g723.1/

Nota i problemi di brevetto sollevati da altri, il fatto che l'implementazione di riferimento funziona solo su processori Intel e che devi pagare una commissione Intel per distribuire il codice usando la loro libreria IPP come parte di un prodotto commerciale.

Se disponi di un codec ACM sul tuo sistema per G729, puoi utilizzare NAudio per convertirlo a PCM. Prova a usare l'applicazione NAudioDemo inclusa in NAudio che ti mostrerà quali codec ACM sono disponibili sul tuo sistema e decodifica un file usando loro.

Quello che mi spinge prima quando si tratta del convertitore g729 sono gli standard ITU G729-A. Un modo abbastanza ingombrante è convertire g729 in pcm prima di aggiungere una intestazione wav davanti ai tuoi file wav. Che costruisce un .wav da .g729.Dal momento che ufficiale ITU g729a (e ufficialmente non supporta multi thread ...) la lib è fortemente coinvolta in questa idea, immagino che tu debba considerare la concorrenza e come programmare correttamente con un mucchio di variabili statiche all'interno della lib g729a. era solito coinvolgere in un piccolo progetto come le descrizioni di OP e fondamentalmente ho diviso enormi file g729 in blocchi g729 e li ho decodificati individualmente in un modo di ragionevole programmazione di concorrenza ...

Se vuoi solo vedere il codec necessario per il file, vai su GSopt e scarica il ultima versione (puoi fare clic qui per aprire direttamente la pagina di download).

Dopo il download, estrarre la cartella di apertura del file ed eseguire il EXE , ora selezionare il file dal pulsante Sfoglia e dopo aver caricato il file verranno mostrate tutte le sue informazioni. (Se il file non viene visualizzato nella finestra di dialogo Sfoglia basta selezionare Tutti i file (*. *) da finestra di dialogo Sfoglia file )

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top