Asterisk sound files converteren met sox
Asterisk ondersteunt verschillende formaten voor de geluidsbestanden. Naast het algemene .wav-formaat ondersteunt het ook verschillende codec-types zoals alaw, g726, g729, gsm en meer.
Wanneer processor-belasting een heikel punt is, dan moet conversie van het ene formaat naar het andere formaat en translatie van de ene codec naar de andere vermeden worden.
Sox is een handig commando om geluidsbestanden te converteren.
Opvolgen:
bash-3.2# file sound.wav |
|
Asterisk heeft een ingebouwd commando file convert waarmee we een bepaald geluidsbestand in een bepaalde codec kunnen converteren naar een andere codec.
asterisk16*CLI> file convert |
|
Hieronder converteren we een alaw-bestand naar een gsm-bestand :
[root@asterisk16 ~]# /usr/sbin/asterisk -rx "file convert /root/oudbestand.alaw /root/nieuwbestand.gsm" |
|
Let hierbij op dat de juiste modules moeten gecompileerd worden opdat Asterisk de codecs ondersteunt. Alaw en GSM worden ondersteund out-of-the-box. Met g729 is dat anders door licentievereisten.
Ook met wav-bestanden gaat dit, mits ze in het juiste formaat komen :
[root@asterisk16 ~]# file WeAreInLove.wav [root@asterisk16 ~]# /usr/sbin/asterisk -rx "file convert /root/WeAreInLove.wav /root/WeAreInLove.alaw" |
|
Hier komt sox heel handig om de hoek. Te installeren via yum :
[root@asterisk16 ~]# yum install sox |
|
We gebruiken sox om het wav-bestand te resamplen naar het 8000Hz mono formaat dat Asterisk wenst :
[root@asterisk16 ~]# sox /root/WeAreInLove.wav -c 1 -r 8000 /root/WeAreInLoveAst.wav |
|
Na de conversie met sox, verkrijgen we een bestand dewelke perfect is voor Asterisk :
[root@asterisk16 ~]# file WeAreInLoveAst.wav |
|
Ditmaal kan Asterisk het wav-bestand converteren naar de gewenste codec :
[root@asterisk16 ~]# /usr/sbin/asterisk -rx "file convert /root/WeAreInLoveAst.wav /root/WeAreInLoveAst.alaw" |
|
Wanneer bij een VoIP-gesprek wordt gebruik gemaakt van de G711a (alaw) codec, dan zal Asterisk bij het afspelen van het geluidsbestand opteren voor het alaw-bestand.
Mochten we het wav-bestand behouden (zonder conversie naar alaw) dan gaat Asterisk on-the-fly het wav-bestand converteren naar de juiste codec. Dit heeft amper invloed op de prestaties bij 5 gesprekken, maar bij 50 gesprekken zal de processor toch al meer belast worden.