TraductionObjectifInstaller Asterisk 1.4 avec le support de la vidéo 3G sur une distribution Debian etch. Nous utiliserons aussi une carte Digium B410P avec avec port BRI. (T0) Fonctionne avec :
Fonctionne pas avec :
Installation / mise à jour de debianLe première chose à faire sera d'installer un système d'exploitation GNU/Linux. Nous allons choisir la distribution debian. Disponible sur http://www.debian.org. Une fois l'installation terminé et vu qu'il s'agit d'une installation toute nouvelle, nous devons mettre à jour notre outil de mise à jour. Lancez dans un prompt aptitude update aptitude upgrade Répondez Y à la mise à jour. Puis rebooter votre machine car il y a sûrement des mises à jour sur le noyau linux. reboot Installation des drivers mISDNCes drivers nous permettrons d'avoir une connection sur un T0 avec une carte B410P de chez Digium. Si jamais vous n'avez pas installé les outils de compilation, n'oubliez pas de les installer, ainsi que les kernel headers pour les modules mISDN. aptitude install build-essential aptitude install linux-headers-2.6.18-5-686 cd /usr/src wget http://www.misdn.org/downloads/releases/mISDN-1_1_7.tar.gz tar xfvz mISDN-1_1_7.tar.gz cd mISDN-1_1_7 make make install cd .. aptitude install flex wget http://www.misdn.org/downloads/releases/mISDNuser-1_1_7.tar.gz tar xfvz mISDNuser-1_1_7.tar.gz cd mISDNuser-1_1_7 make make install
aptitude install pciutils bc Puis configuration de la carte /etc/init.d/misdn-init scan /etc/init.d/misdn-init config /etc/init.d/misdn-init start Vérification de la présence des dépendances nécessaire.Dans un terminal utilisez dpkg pour vérifier la présence de openssl, zlib, zlib-devel, curl, libnewt-dev. dpkg -l libncurses5 libncurses5-dev libssl0.9.7 libssl-dev zlib1g zlib1g-dev curl libnewt-dev Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder | État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé |/ Err?=(aucune)/H=à garder/besoin Réinstallation/X=les deux (État,Err: majuscule=mauvais) ||/ Nom Version Description +++-=================================-=================================-================================================================================== ii libncurses5 5.4-4 Shared libraries for terminal handling ii libncurses5-dev 5.4-4 Developer's libraries and docs for ncurses ii libssl0.9.7 0.9.7e-3sarge4 SSL shared libraries ii libssl-dev 0.9.7e-3sarge4 SSL development libraries, header files and documentation ii libnewt-dev 0.52.2-10 Developer's toolkit for newt windowing library ii zlib1g 1.2.2-4.sarge.2 compression library - runtime ii zlib1g-dev 1.2.2-4.sarge.2 compression library - development ii curl 7.13.2-2sarge5 Get a file from an HTTP, HTTPS, FTP or GOPHER server
Si cela n'est pas le cas il faudra les installer avec la commande : aptitude install libncurses5 libncurses5-dev libssl0.9.7 libssl-dev zlib1g zlib1g-dev curl libnewt-dev Télécharger les tarballs du code source de la version 1.4
cd /usr/src wget http://downloads.digium.com/pub/asterisk/asterisk-1.4.15.tar.gz wget http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4.5.tar.gz wget http://downloads.digium.com/pub/zaptel/zaptel-1.4.7.tar.gz wget http://downloads.digium.com/pub/telephony/libpri/libpri-1.4.2.tar.gz wget http://downloads.digium.com/pub/telephony/sounds/asterisk-core-sounds-fr-wav-current.tar.gz wget http://downloads.digium.com/pub/telephony/sounds/asterisk-moh-freeplay-wav.tar.gz Décompresser le code sourceToujours en étant connecté en root, dans le répertoire /usr/src, décompressez le code source: tar xfvz asterisk-1.4.15.tar.gz tar xfvz asterisk-addons-1.4.5.tar.gz tar xfvz libpri-1.4.2.tar.gz tar xfvz zaptel-1.4.7.tar.gz Vous devez maintenant avoir les répertoires suivants: libpri-1.4.2 zaptel-1.4.7 asterisk-1.4.15 asterisk-addons-1.4.5 Nous traiterons les fichiers sons et les fichiers de la musique d'attente un peu plus tard. Compiler Asterisk et ses dépendancesL'ordre que nous devons suivre pour compiler le code
Le make config configure linux afin qu'il lance ces applications au démarrage. cd libpri-1.4.2 make make install cd .. cd zaptel-1.4.7 ./configure make make install make config cd .. cd asterisk-1.4.15 ./configure make make install make samples make config cd .. cd asterisk-addons-1.4.5 ./configure make make install make samples cd .. Après la prochaine étape consistant à redémarrer, vous devez avoir un Asterisk fonctionnel. Installation du support 3G AsteriskDéveloppeur : http://sip.fontventa.com Récupération des outilsaptitude install subversion aptitude install libpt-1.11.2-dev cd /usr/src/ svn co http://sip.fontventa.com/svn/asterisk/ asterisk-video cd asterisk-video Compilation de la librairie H324MComme nous souhaitons utiliser cette librairie avec mISDN, il faudra modifier le fichier h324m.cpp et commenter les lignes avec // qui contiendront TIFFReverseBits.
Nous allons le modifier avec ce petit patch. Il suffit de le copier dans un fichier, par exemple misdn_patch_h324m.diff puis d'aller dans le répertoire. Le patch --- h324m.cpp 2007-12-17 09:06:50.000000000 +0100
+++ h324m.cpp.orig 2007-12-17 09:06:22.000000000 +0100
@@ -40,14 +40,14 @@
int H324MSessionRead(void * id,unsigned char *buffer,int len)
{
- //TIFFReverseBits(buffer,len);
+ TIFFReverseBits(buffer,len);
return ((H324MSession*)id)->Read(buffer,len);
}
int H324MSessionWrite(void * id,unsigned char *buffer,int len)
{
int ret = ((H324MSession*)id)->Write(buffer,len);
- //TIFFReverseBits(buffer,len);
+ TIFFReverseBits(buffer,len);
return ret;
}
Puis cd /usr/src/asterisk-video/libh324m cp <endroit_de_votre_patch> . Pour le patcher patch -p0 < misdn_patch_h324m.diff Puis nous pourrons compiler la librairie cd /usr/src/asterisk-video/libh324m make make install Installation du codec AMRNous allons installer notre codec AMR afin de pouvoir prendre en compte ce codec qui n'est pas par défaut dans Asterisk. cd /usr/src/asterisk-1.4.15 patch -p0 < /usr/src/asterisk-video/amr/amr-asterisk-patch.txt cd codecs ln -s ../../asterisk-video/amr/amr_slin_ex.h . ln -s ../../asterisk-video/amr/slin_amr_ex.h . ln -s ../../asterisk-video/amr/codec_amr.c . mkdir amr cd amr wget http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-700.zip aptitude install unzip unzip -j 26104-700.zip unzip -j 26104-700_ANSI_C_source_code.zip ln -s ../../asterisk-video/amr/Makefile . Editer le fichier Makefile dans /usr/src/asterisk-1.4.15/codecs et modifier la ligne 59: vi /usr/src/asterisk-1.4.15/codecs/Makefile Changer $(LIBAMR):
@$(MAKE) -C amr
par $(LIBAMR):
@$(MAKE) -C amr all
Vous pouvez également modifier les fichiers interf_enc.c et interf_dec.c en enlevant les caractères bizarre en fin du fichier. Puis retourner dans les sources d'Asterisk. cd /usr/src/asterisk-1.4.15/ ./configure make make install Rajouter la ligne suivante dans votre fichier de configuration des codecs Asterisk (/etc/asterisk/codecs.conf) [amr] octet-aligned=1 Installation de l'application H324 gatewayCette application permettra d'avoir des commandes pour recevoir et émettre des appels en 3G. Nous allons ajouter un petit Makefile afin de pouvoir recompiler plus facilement notre application. cd /usr/src/asterisk-video/app_h324m
cat Makefile << EOF
---------- cut ------------
CFLAGS ?= -O2 -fPIC
Z_CFLAGS := $(CFLAGS) -D _GNU_SOURCE -Wall -Wmissing-prototypes -Wstrict-prototypes
LIBS ?=
Z_LIBS := $(LIBS) -lpthread -lh324m
BINARY = app_h324m.so
OBJECTS = app_h324m.o
DESTDIR ?=
PREFIX ?= /usr
.PHONY: install clean
$(BINARY): $(OBJECTS)
$(CC) -shared -Xlinker -x -o $(BINARY) $(OBJECTS) $(Z_LIBS)
%.o: %.c
$(CC) $(Z_CFLAGS) -c -o $@ $<
install: $(BINARY)
install -d $(DESTDIR)$(PREFIX)/lib/asterisk/modules
install -m 755 $(BINARY) $(DESTDIR)$(PREFIX)/lib/asterisk/modules
clean:
rm -f $(BINARY) $(OBJECTS)
---------- cut ---------
EOF
Il faudra également modifier le fichier app_h324m.c en ajoutant ligne 48 ce #define. #define AST_MODULE "h324m application"
Installation de la librairie mpeg4ipCette librairie est une dépendance de l'application app_mp4. cd /usr/src/ wget http://heanet.dl.sourceforge.net/sourceforge/mpeg4ip/mpeg4ip-1.5.0.1.tar.gz tar xfvz mpeg4ip-1.5.0.1.tar.gz cd mpeg4ip-1.5.0.1 aptitude install libtool ./bootstrap ./configure --disable-player --prefix=/usr make make install
Installation de l'application app_mp4Nous allons encore une fois créer un fichier Makefile. cd /usr/src/asterisk-video/app_mp4
cat Makefile << EOF
---------- cut ------------
CFLAGS ?= -O2 -fPIC
Z_CFLAGS := $(CFLAGS) -D _GNU_SOURCE -Wall -Wmissing-prototypes -Wstrict-prototypes
LIBS ?=
Z_LIBS := $(LIBS) -lpthread -lmp4 -lmp4v2
BINARY = app_mp4.so
OBJECTS = app_mp4.o
DESTDIR ?=
PREFIX ?= /usr
.PHONY: install clean
$(BINARY): $(OBJECTS)
$(CC) -shared -Xlinker -x -o $(BINARY) $(OBJECTS) $(Z_LIBS)
%.o: %.c
$(CC) $(Z_CFLAGS) -c -o $@ $<
install: $(BINARY)
install -d $(DESTDIR)$(PREFIX)/lib/asterisk/modules
install -m 755 $(BINARY) $(DESTDIR)$(PREFIX)/lib/asterisk/modules
clean:
rm -f $(BINARY) $(OBJECTS)
---------- cut ---------
EOF
Modifier la ligne 51 du fichier app_mp4.c et ajouter ceci : #define AST_MODULE "MP4 application" Puis lancer la compilation avec : make make install
Compilation de l'application app_rtspPermet de streamer du flux RTSP. CFLAGS ?= -O2 -fPIC
Z_CFLAGS := $(CFLAGS) -D _GNU_SOURCE -Wall -Wmissing-prototypes -Wstrict-prototypes
LIBS ?=
Z_LIBS := $(LIBS) -lpthread
BINARY = app_rtsp.so
OBJECTS = app_rtsp.o
DESTDIR ?=
PREFIX ?= /usr
.PHONY: install clean
$(BINARY): $(OBJECTS)
$(CC) -shared -Xlinker -x -o $(BINARY) $(OBJECTS) $(Z_LIBS)
%.o: %.c
$(CC) $(Z_CFLAGS) -c -o $@ $<
install: $(BINARY)
install -d $(DESTDIR)$(PREFIX)/lib/asterisk/modules
install -m 755 $(BINARY) $(DESTDIR)$(PREFIX)/lib/asterisk/modules
clean:
rm -f $(BINARY) $(OBJECTS)
#define AST_MODULE "Rtsp application" Comme fait précédement, copier le fichier Makefile puis taper : make make install Pour l'utiliser mettez dans votre sip.conf dans [general]. videosupport=yes disable=all allow=ulaw allow=alaw allow=h263 allow=h263p Puis dans votre dialplan (/etc/asterisk/extensions.conf) dans la section [default] par exemple : [default] exten => 5003,1,Answer() exten => 5003,n,Rtsp(rtsp://192.168.1.1/live.sdp) exten => 5003,n,Hangup() Installation de l'application app_transcoderaptitude install libavcodec-dev
Ajouter un repository source dans votre fichier /etc/apt/sources.list. deb-src http://ftp.fr.debian.org/debian/ etch main contrib non-free Puis télécharger les sources de ffmpeg. cd /usr/src apt-get source ffmpeg Puis nous allons copier l'header manquant dans le répertoire des includes. cp /usr/src/ffmpeg-0.cvs20060823/libavcodec/swscale.h /usr/include/ffmpeg/ Ajouter dans le fichier app_transcoder.c à la ligne 47. #define AST_MODULE "Transcoder application" Puis mettez le fichier Makefile CFLAGS ?= -O2 -fPIC
Z_CFLAGS := $(CFLAGS) -D _GNU_SOURCE -Wall -Wmissing-prototypes -Wstrict-prototypes
LIBS ?=
Z_LIBS := $(LIBS) -lpthread -lavcodec
BINARY = app_transcoder.so
OBJECTS = app_transcoder.o
DESTDIR ?=
PREFIX ?= /usr
.PHONY: install clean
$(BINARY): $(OBJECTS)
$(CC) -shared -Xlinker -x -o $(BINARY) $(OBJECTS) $(Z_LIBS)
%.o: %.c
$(CC) $(Z_CFLAGS) -c -o $@ $<
install: $(BINARY)
install -d $(DESTDIR)$(PREFIX)/lib/asterisk/modules
install -m 755 $(BINARY) $(DESTDIR)$(PREFIX)/lib/asterisk/modules
clean:
rm -f $(BINARY) $(OBJECTS)
Puis il suffira de lancer : make make install Pour s'en servir ajouter dans le fichier extensions.conf dans la section [default]: exten => 5004,1,Answer() exten => 5004,n,Transcode(,s@camera,h263@qcif/fps=10/kb=52/qmin=4/qmax=12/gs=50) exten => 5004,n,Hangup() [camera] exten => s,1,Answer() exten => s,n,Rtsp(http://192.168.1.2/live.sdp) exten => s,n,Hangup() Installation de l'outils pcm2mp4cd /usr/src/asterisk-video/tools make cp mp4band pcm2mp4 /usr/bin/ Configuration de misdn.confVoici le fichier de configuration misdn.conf, situé dans /etc/asterisk que j'utilise. [general] misdn_init=/etc/misdn-init.conf debug=0 ntdebugflags=0 ntdebugfile=/var/log/misdn-nt.log ntkeepcalls=no bridging=no l1watcher_timeout=0 stop_tone_after_first_digit=yes append_digits2exten=yes dynamic_crypt=no crypt_prefix=** crypt_keys=test,muh [default] context=from-misdn language=fr musicclass=default senddtmf=yes far_alerting=no allowed_bearers=all nationalprefix=0 internationalprefix=00 rxgain=0 txgain=0 te_choose_channel=no pmp_l1_check=no reject_cause=16 need_more_infos=no nttimeout=no method=standard overlapdial=yes dialplan=0 localdialplan=0 cpndialplan=0 early_bconnect=yes incoming_early_audio=yes nodialtone=no presentation=-1 screen=-1 echocancel=no echotraining=no jitterbuffer=4000 jitterbuffer_upper_threshold=0 hdlc=yes max_incoming=-1 max_outgoing=-1 [extern] ports=1,2 msns=* Dialplan AsteriskFaut pouvez maintenant créer un appel depuis l'extérieur vers votre Asterisk comme cale par exemplen en éditant votre fichier extensions.conf dans /etc/asterisk. [default] exten => 5002,1,H324m_gw(sylvain@3gp_videos) exten => 5003,1,Answer() exten => 5003,n,Rtsp(rtsp://192.168.1.1/live.sdp) exten => 5003,n,Hangup() exten => 5004,1,Answer() exten => 5004,n,Transcode(,s@camera,h263@qcif/fps=10/kb=52/qmin=4/qmax=12/gs=50) exten => 5004,n,Hangup() [camera] exten => s,1,Answer() exten => s,n,Rtsp(http://192.168.1.2/live.sdp) exten => s,n,Hangup() [3gp_videos] exten => sylvain,1,H324m_gw_answer() exten => sylvain,n,Video_loopback() [from-misdn] exten => 9965,1,Goto(default,5002,1)
Mini tutoriel MP4Voici le tutoriel proposé par Sergio García sur son site web mais en Français. (Référence : http://sip.fontventa.com/content/view/34/66/) Nous allons juste installer une dépendance requise pour ce tutoriel. aptitude install ffmpeg Le fichier est téléchargeable ici : http://sip.fontventa.com/files/sample_300kbit_ulaw.3gp Avant de pouvoir utiliser un fichier mp4 avec app_rtsp et le streamer depuis un serveur avec un téléphone vidéo, il doit être encoder avec un format que support le téléphone. Beaucoup de serveurs de streaming support les fichiers de type mp4/3gp. Le format h263-1998 reste cependant le meilleur choix pour encoder une vidéo et il existe beaucoup d'outils pour l'éditer/modifier. Le problème est que les codecs audio utilisé sur un téléphone vidéo (gsm/speech/g723/g729) ne sont pas spécialement utilisé pour faire du streaming contrairement à AAC/MP3. Le format de fichier mp4 permet de stocker n'importe quelle type de donnée, mais pas beaucoup d'outils sont capable de nous permettre de faire cela. L'outils pcm2mp4 permet de créer un fichier mp4 avec une piste audio PCMU (ulaw). Il peux être utilisé pour faire des tests de streaming. D'autres codecs pourrait être facilement intégré) Nous allons utiliser un fichier de sample converti en h263 pour ce mini tutoriel. $ mp4info sample_300kbit.3gp mp4info version 1.5.0.1 sample_300kbit.3gp: Track Type Info 201 video H.263, 69.973 secs, 94 kbps, 176x144 @ 10.003859 fps 65335 hint Payload H263-2000 for track 201 101 audio MPEG-4 AAC LC, 70.000 secs, 8 kbps, 12000 Hz 65435 hint Payload MP4A-LATM for track 101 1 od Object Descriptors 2 scene BIFS D'abord nous allons extraire les deux média de notre fichier. $ mp4creator -extract=201 sample_300kbit.3gp $ mv sample_300kbit.3gp.t201 sample_300kbit.263 $ mp4creator -extract=101 sample_300kbit.3gp $ mv sample_300kbit.3gp.t101 sample_300kbit.aac
$ ffmpeg -i sample_300kbit.aac -acodec pcm_mulaw -ar 8000 -ac 1 -f mulaw sample_300kbit.mulaw
FFmpeg version SVN-rUNKNOWN, Copyright (c) 2000-2006 Fabrice Bellard, et al.
configuration: --prefix=/usr --libdir=${prefix}/lib --shlibdir=${prefix}/lib --incdir=${prefix}/include/ffmpeg --enable-shared --enable-mp3lame
--enable-gpl --enable-faad --mandir=${prefix}/share/man --enable-vorbis --enable-pthreads --enable-faac --enable-xvid --enable-dts --enable-amr_nb
--enable-amr_wb --enable-pp --enable-libogg --enable-libgsm --enable-x264 --enable-a52 --extra-cflags=-Wall -g -fPIC -DPIC --cc=ccache cc
libavutil version: 49.1.0
libavcodec version: 51.28.0
libavformat version: 51.7.0
built on Jan 19 2007 17:05:58, gcc: 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
Input #0, aac, from 'sample_300kbit.aac':
Duration: 00:01:09.4, start: 0.000000, bitrate: 8 kb/s
Stream #0.0: Audio: aac, 12000 Hz, mono, 8 kb/s
Output #0, mulaw, to 'sample_300kbit.mulaw':
Stream #0.0: Audio: pcm_mulaw, 8000 Hz, mono, 64 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop encoding
size= 2184kB time=70.0 bitrate= 64.0kbits/s
video:0kB audio:2184kB global headers:0kB muxing overhead 0.000000%
Nous allons maintenant utiliser l'outils pour créer un nouveau fichier mp4 avec notre fichier audio converti en PCMU. $ /usr/bin/pcm2mp4 sample_300kbit.mulaw sample_300kbit_ulaw.3gp $ mp4info sample_300kbit_ulaw.3gp mp4info version 1.5.0.1 sample_300kbit_ulaw.3gp: Track Type Info 1 audio G.711 uLaw, 70.000 secs, 64 kbps, 8000 Hz 2 hint Payload PCMU for track 1 Ensuite nous allons juste rajouter la parti video h263 dedans. $ mp4creator -create=sample_300kbit.263 sample_300kbit_ulaw.3gp $ mp4info sample_300kbit_ulaw.3gp mp4info version 1.5.0.1 sample_300kbit_ulaw.3gp: Track Type Info 1 audio G.711 uLaw, 70.000 secs, 64 kbps, 8000 Hz 2 hint Payload PCMU for track 1 3 video H.263, 69.903 secs, 94 kbps, 176x144 @ 10.013876 fps $ mp4creator -hint=3 sample_300kbit_ulaw.3gp $ mp4info sample_300kbit_ulaw.3gp mp4info version 1.5.0.1 sample_300kbit_ulaw.3gp: Track Type Info 1 audio G.711 uLaw, 70.000 secs, 64 kbps, 8000 Hz 2 hint Payload PCMU for track 1 3 video H.263, 70 secs, 94 kbps, 176x144 @ 10.013876 fps 4 hint Payload H263-2000 for track 3 Metadata Tool: mp4creator 1.5.0.1
![]() |