VoIP and Hacking | Consulenza Documentazione

Alternative a mpg123 per MusicOnHold

by admin on Mar.02, 2009, under Asterisk, Telefonia

Il package mpg123, che da sempre costituisce l’applicazione accessoria di Asterisk per la musica d’attesa (musiconhold), è purtroppo affetto da un bug che non consente il rilascio della memoria di cui non necessita pi&ugrave. Ciò costituisce un cosiddetto “memory leak”. Quello che in pratica succede è che il programma consuma sempre più memoria fino a provocare il crash del sistema, per mancanza di memoria disponibile.

Soluzione 1: format_mp3

Una possibile soluzione consiste nell’ usare format_mp3 per la “Music on Hold”, in sostituzione di mpg123

Il modulo format_mp3 fa parte del package asterisk-addons.
Se decidete di utilizzarlo, assicuratevi innanzitutto di aver rimosso mpg123 dal sistema.

L’installazione è una operazione banale:

Occorre naturalmente scompattare il tarball compresso asterisk-addons-.tar.gz e poi, dopo essersi posizionati nella directory format_mp3 (generata dalla scompattazione), impartire:

# make clean install

oppure (con Asterisk in esecuzione)

# make clean autoload

I file sonori dovrebbero essere a 8khz e mono.

Li si può convertire in questa maniera:

# lame -q -p --mp3input -a --preset 8 in.mp3 out.mp3

Soluzione 2: rawplayer

Un’altra possibilità consiste nell’usare rawplayer al posto di mpg123.

In tal modo rawplayer costitusce un semplice sostututo di mpg123, ma più efficiente, dato che non risente dei problemi di memory leaking.

Rawplayer fa parte del package asterisk

Per installare rawplayer occorre: 1) posizionarsi nella directory base dei sorgenti di asterisk e quindi in ‘contrib/utils/’ e compilare il modulo:

# gcc -O2 rawplayer.c -o /usr/bin/rawplayer

Questo comando compila ed installa rawplayer in /usr/bin 2) editare /etc/asterisk/musiconhold.conf e modificare così la entry ‘default’:

default => custom:/var/lib/asterisk/rawmusik,/usr/bin/rawplayer

i file sonori andranno di conseguenza posizionati in /var/lib/asterisk/rawmusik.

Per la conversione dei files è possibile utilizzare (se sox è stato compilato col supporto per il formato mp3):

# sox -c 1 filename.mp3 -t raw -r 8000 -c 1 -s -w filename.raw
# cp filename.raw /var/lib/asterisk/rawmusik

* Osservazione:
Se andate a guardarvi il sorgente di rawplayer (rawplayer.c) vedrete che fa una operazione molto semplice: legge il contenuto del rawfile, lo bufferizza, e lo riscrive su stdout.
In maniera più rozza ma simile, diventa possibile far funzionare un rudimentale “rawplayer” così composto:

#!/bin/sh
for name in $@; do
cat $name ;
done

Soluzione 3: madplay

E’ possibile anche utilizzare madplay per generare il sonoro dagli mp3 allo stesso modo di mpg123

Basta definire (in musiconhold.conf) un player custom come di seguito:

default => custom:/var/lib/asterisk/mohmp3/,/usr/bin/madplay --mono -R 8000 --output=raw:-
Send post as PDF to PDF | PDF Creator | PDF Converter
:, ,

Comments are closed.

Cerchi qualcosa in particolare?

Usa il form qui sotto per cercare nel sito:

Blogroll!

Alcuni links...

Archives

Tutte le entries, in ordine cronologio...