Transformer MP3/Wav/... en rtp pour Sipp
Si vous utilisez Sipp pour faire des tests sur vos infrastructures de VOIP Sip, on utilise souvent la fonction PCAP pour jouer du RTP.
Mais parfois, on fait des tests où l'on veut faire des annonces, et il est pas toujours simple de générer ces messages au format RTP lisible pour Sipp.
Je vous joins donc, un petit howto pour transformer vos fichiers wav, mp3 et autres au format RTP grâce à des outils sous GNU/Linux: wav2rtp et sox (pour convertir vers le format wav 8khz).
Donc, dans un premier temps, je vous explique comment compiler l'outil wav2rtp, car, il n'existe pas dans les différentes distributions linux. Dans mon exemple, j'utilise Debian lenny 5.05.
Si vous utilisez une autre distrubition, il vous faut trouver les librairies suivantes correspondantes :
- libgsm
- libspeex
- libsndfile
- libpcap
- libortp
Donc, pour la Debian Lenny, il faut installer toutes ces librairies pour pouvoir compiler wav2rtp.
debian:~/# apt-get install libsndfile1-dev libgsm1-dev libspeex-dev libortp7-dev libpcap-dev make gcc
Ensuite, on télécharge les sources de wav2rtp sur le site de de sourceforge.net.
debian:~/# wget http://sourceforge.net/projects/wav2rtp/files/wav2rtp/0.9.1/wav2rtp-0.9.1.tar.gz/download
Puis, on décompresse l'archive de sources et on va dans le répertoire contenant les sources
debian:~/# tar xzf wav2rtp-0.9.1.tar.gz
debian:~/# cd wav2rtp-0.9.1
Ensuite, pour la compilation, nous avons besoin de taper ces deux commandes. Les options de configure, permet de placer aux bons endroits les fichiers de configuration et les binaires.
debian:~/wav2rtp-0.9.1# ./configure --prefix=/usr --sysconfdir=/etc
debian:~/wav2rtp-0.9.1# make install
Maintenant, on peut depuis n'importe quel endroit du filesystem, appelez la commande wav2rtp. En tapant la commande sans option, on peut voir l'ensemble des options disponibles.
debian:~# cd
debian:~# wav2rtp
This tool used to convert data from .wav to rtp packets which can be sent over network interface or stored into pcap file
USAGE: wav2rtp [-f|--from-file] file.wav [-t|--to-file] file.pcap [-c|--codec] codec [ other options ... ]
-v, --version Priint to stdout version of this tool
-f, --from-file Filename from which sound (speech) data will be readed
-t, --to-file Output file
-c, --codec-list Comma separated list of codecs (without spaces), which will be used to encode .wav file
-o, --output-option Output option which redefine /etc/wav2rtp/output.conf. Recorded in form "section:key=value"
-O, --codecs-option Codec option which redefine /etc/wav2rtp/codecs.conf. Recorded in the form "section:key=value"
Codecs options (such as payload type and other) may be defined in the config file: /etc/wav2rtp/codecs.conf
EXAMPLE:
wav2rtp -f test.wav -t test.pcap -c PCMU,GSM
This reads file "test.wav" TWO TIMES, encodes it first with G.711 then with GSM 06.10 and stores data in pcap file "test.pcap"
wav2rtp -f test.wav -t test.pcap -c PCMU,GSM -o log:enabled=true
This case is the same as previous plus logging to stdout will be available
CODEC LIST:
DUMMY Codec for testing and demo purposes
GSM GSM 06.10 full-rate codec
speex Speex narrowband mode codec
PCMU ITU-T G.711 codec with u-law compression
FATAL ERROR: not enought input arguments
debian:~#
Nous avons notre wav2rtp de prêt. wav2rtp a pour contrainte d'avoir obligatoirement un fichier wav en 8khz en entrée. Sinon, la transformation en pcap ne fonctionne pas.
Pour cela, on va utiliser sox, qui permet de convertir dans n'importe quel format, n'importe quel fichier audio.
Sous Debian Lenny, on doit taper la commande suivante :
apt-get install sox
Maintenant, nous sommes prêts. Voilà comment transformer un fichier wav 44khz (source.wav) en un pcap (destination.pcap) :
- On transforme le wav 44khz en un wav 8khz avec sox
debian:~# sox source.wav -r 8000 intermediaire.wav
- Puis, on transforme le wav 8khz en un fichier pcap
debian:~# wav2rtp -f intermediaire.wav -t destination.pcap -c PCMU
Si vous avez des questions supplémentaires, allez sur les sites suivants :
- Le site de wav2rtp
- Le site de sox

