AsteriskNowにiLBCコーデックを追加する
VoIP over 3Gするには、g729aコーデックか、iLBCコーデックが適している。
g729aコーデックは簡単に導入できるが、iLBCコーデックは少し難しいのでメモしておく。
RPMパッケージを作って入れました。
メモなのでほぼコマンドのみです。(見る人が見ればわかるはず・・・。)
Source RPMを入れる。
cd /usr/local/src
wget http://packages.asterisk.org/centos/5/current/SRPMS/asterisk16-1.6.2.19-1_centos5.src.rpm
rpm -Uvh asterisk16-1.6.2.19-1_centos5.src.rpm
iLBCのソースをDLして、ビルド用の差分パッチを作る。
cd /usr/src/redhat/BUILD
tar xvzf ../SOURCES/asterisk16-sources-1.6.2.19.tar.gz
cp -a asterisk16-1.6.2.19 asterisk16-1.6.2.19-ilbcpatch
cd asterisk16-1.6.2.19-ilbcpatch
cat contrib/scripts/get_ilbc_source.sh
wget -q -O - http://www.ilbcfreeware.org/documentation/extract-cfile.awk | tr -d '\r' > codecs/ilbc/extract-cfile.awk
wget -P codecs/ilbc http://www.ietf.org/rfc/rfc3951.txt
(cd codecs/ilbc && awk -f extract-cfile.awk rfc3951.txt)
cd ..
diff -uNr asterisk16-1.6.2.19/codecs/ilbc asterisk16-1.6.2.19-ilbcpatch/codecs/ilbc > ../SOURCES/ast16-ilbc-codec.patch
ソースをとっておく
cd ../BUILD/
mv asterisk16-1.6.2.19 asterisk16-1.6.2.19-dist
specファイルを編集する
cd /usr/src/redhat/SPECS/
cp asterisk16.spec asterisk16.spec-dist
vi asterisk16.spec
差分は以下の通り
--- asterisk16.spec-dist 2011-07-14 13:37:53.000000000 +0900
+++ asterisk16.spec 2011-07-14 13:41:53.000000000 +0900
@@ -49,6 +49,7 @@
Patch2: voicemail-splitopts.patch
Patch3: voicemail-splitopts-odbcstorage.patch
Patch4: voicemail-splitopts-imapstorage.patch
+Patch10: ast16-ilbc-codec.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-root
URL: http://www.asterisk.org
Vendor: Digium, Inc.
@@ -332,6 +333,26 @@
%endif
#
+# ilbc subpackage
+#
+%{?_without_ilbc:%if 0}
+%{!?_without_ilbc:%if 1}
+%package ilbc
+Summary: ilbc codec module for Asterisk
+Group: Utilities/System
+Provides: asterisk-ilbc
+Provides: asterisk%{astapi}-ilbc
+#Obsoletes: asterisk-ilbc
+#BuildRequires: ilbc-devel
+#Requires: ilbc
+Requires: %{name}-core = %{actversion}-%{release}
+
+%description ilbc
+Asterisk format plugin for the ilbc codec
+%endif
+
+
+#
# Speex subpackage
#
%{?_without_speex:%if 0}
@@ -501,6 +522,7 @@
%endif
%patch2 -p0
+%patch10 -p1
###################################################################
#
@@ -520,6 +542,7 @@
echo "MENUSELECT_CORE_SOUNDS=-CORE-SOUNDS-EN-GSM" > menuselect.makeopts.defaults
echo "MENUSELECT_MOH=-MOH-OPSOUND-WAV" >> menuselect.makeopts.defaults
make USER_MAKEOPTS="menuselect.makeopts.defaults %{?_without_optimizations:menuselect.makeopts.defaults-debug}" menuselect.makeopts
+perl -pi -e "s/MENUSELECT_CODECS=codec_ilbc/MENUSELECT_CODECS=/g" menuselect.makeopts
make %{makeflags} 2> err
mv err %{name}-sources-%{version}-%{release}.make.err
mv %{name}-sources-%{version}-%{release}.make.err /var/log/
@@ -1064,6 +1087,16 @@
%endif
#
+# ilbc Subpackage
+#
+%{?_without_ilbc:%if 0}
+%{!?_without_ilbc:%if 1}
+%files ilbc
+%defattr(-, root, root)
+%{_libdir}/asterisk/modules/codec_ilbc.so
+%endif
+
+#
# Speex Subpackage
#
%{?_without_speex:%if 0}
ビルドする
rpmbuild --without odbc --without speex -ba asterisk16.spec
RPMを入れ替え
cd /usr/src/redhat/RPMS/i386/
rpm -e asterisk16-voicemail asterisk16 asterisk16-core asterisk16-doc asterisk16-dahdi asterisk16-ilbc asterisk16-addons-core asterisk16-addons-bluetooth asterisk16-addons-mysql asterisk16-addons-ooh323 asterisk16-addons
rpm -Uvh asterisk16-voicemail-1.6.2.19-1_centos5.i386.rpm asterisk16-dahdi-1.6.2.19-1_centos5.i386.rpm asterisk16-1.6.2.19-1_centos5.i386.rpm asterisk16-core-1.6.2.19-1_centos5.i386.rpm asterisk16-ilbc-1.6.2.19-1_centos5.i386.rpm asterisk16-doc-1.6.2.19-1_centos5.i386.rpm
Asteriskの再起動
service asterisk stop
killall -9 asterisk
service asterisk start