引き続きLinphoneネタ。Edison上でコンパイルはいろいろと問題があって大変だったので、Ubuntu上でLinphone 3.8.5をクロスコンパイルしてみた。試しながらやったので過不足があるかもしれないけど、とりあえずメモる。
まず、Ubuntu上でEdisonのクロスコンパイルを出来る環境を作る。
Edison Board Software Downloadsから、SDK – Cross Compile ToolsのLinux 32-bitをダウンロード。
任意のフォルダで解凍して、poky-hogehoge-.shを実行。
環境変数を設定するために、source /opt/poky-edison/version/environment-setup-core2-32-poky-linuxを実行
次に、必要になるパッケージをインストール。多分、余分なものもある。
sudo apt-get install libtool intltool libglib2.0-dev libgtk2.0-dev libspeex-dev libantlr3c-dev antlr3 libspeexdsp-dev libswscale-dev libXv-dev mesa-common-dev libglew-dev libortp-dev autoconf automake libtool autoconf-doc libtool-doc libmediastreamer-dev libx264-dev libavcodec-dev libswscale-dev libtheora-dev libsdl1.2-dev libvpx-dev libxml2-dev libreadline-dev libsqlite3-dev libtinfo-dev
以下、必要になるパッケージをEdison用にコンパイル。自分はlinphone-edisonフォルダを作ってその下ですべて作業した。sudoが必要だったり必要ではなかったりする場合もあるようなので、make installでこけた場合にはsudoを外した方がいいかも。
Antlr3:
Antlr3のページからlibantlr3c-3.4.tar.gzをダウンロード。現時点では、Download->C runtime distributionsで見つけた。
./configure
make
make install DESTDIR=/home/username/linphone-edison/install/
belle-sip.現時点では最新版より1.4.1のブランチを指定したほうがよさそう.上記のantlrを明示的に利用するためには、configureのオプションで明示すること:
git clone --branch 1.4.1 git://git.linphone.org/belle-sip.git
sudo ./autogen.sh
sudo ./configure --with-antlr=/home/username/linphone-edison/install/usr/local/
sudo make
sudo make install DESTDIR=/home/username/linphone-edison/install/
mediastreamer2のConfigureでortp関連のエラーが出る場合はこれをしておく:
sudo apt-get autoremove libortp-dev
srtp:
git clone git://git.linphone.org/srtp.git
sudo ./configure
sudo make
sudo make install DESTDIR=/home/username/linphone-edison/install/
Polarssl:
git clone git://git.linphone.org/polarssl.git
sudo ./autogen.sh
sudo ./configure
sudo make
sudo make install DESTDIR=/home/username/linphone-edison/install/
bzrtp:
git clone git://git.linphone.org/bzrtp.git
sudo ./autogen.sh
sudo ./configure
sudo make
sudo make install DESTDIR=/home/username/linphone-edison/install/
以下が結構はまった所。最新のffmpegをGitから手に入れてコンパイルすると、libavcodecのVersionが57になり,一部の関数が存在せず、mediastreamerの部分で実行時にエラーが出る(libmediastreamer_voip.so.5, avcodec_alloc_frame)。nmコマンドで見てみると、確かにUndefined。
UbuntuではlibavcodecのVersionが54で、それが入っているffmpegなら動いた。
ffmpeg:
ffmepgのページから、ffmpeg-1.2.12.tar.gzをダウンロードして展開。現時点では、Download->ページの一番下にあるOld Releasesでアクセスできた。
sudo ./configure --disable-yasm --enable-shared
sudo make
sudo make install DESTDIR=/home/username/linphone-edison/install/
mediastreamer2:
git clone git://git.linphone.org/mediastreamer2.git
sudo ./autogen.sh
sudo ./configure
sudo make
sudo make install DESTDIR=/home/username/linphone-edison/install/
Linphone.現時点では最新版より3.8.5のブランチを指定したほうがよさそう.:
git clone --branch 3.8.5 git://git.linphone.org/linphone.git --recursive
sudo ./autogen.sh
sudo ./configure --disable-glx --enable-xv --disable-strict
sudo make
sudo make install DESTDIR=/home/username/linphone-edison/install/
上記の作業で/home/username/linphone-edison/install/に必要なファイルが揃うはず。自分はinstallフォルダの下に出来た/usr/localフォルダをtarで固めて、Edisonの/usrフォルダに入れて解凍した。
Edisonの/usr/local/以下にLinphone関連のデータを展開するので,先にいろいろ入れている場合は注意が必要だと思う。
/etc/ld.so.confに/usr/local/libを追加して、コンソールでldconfigをすれば必要なライブラリが読み込まれるはず。
linphonec -Cで起動して、webcamやsoundcardの設定をする。自分はUSBカメラをつないで、上記コマンドのlistオプションでindexを確認して指定した。
以上で、Edisonで取得した映像・音声を利用したビデオ通話の動作確認ができた。