最近、SIP 通信をベースにした VOIP アプリケーションの開発プロジェクトが必要になり、いくつかのオープンソースの SIP 実装を調査しました。主に PJSIP と Linphone があります。PJSIP は詳細なドキュメントとコンパイルおよびテストに問題がないため、多くの手間をかけることなく使用できました。Linphone のコンパイルは少し手間がかかりましたが、インターネット上の情報を調べた後、多くの人が苦労していると言っていました。自分自身で試してみた結果、ドキュメントが不足している以外はスムーズにコンパイルできましたが、調査にはかなりの時間がかかりました。
PJSIP と Linphone について簡単に説明します。PJSIP は、C 言語で書かれた無料でオープンソースのマルチメディア通信ライブラリであり、SIP、SDP、RTP、STUN、TURN、ICE などの標準ベースのプロトコルを実装しています。シグナリングプロトコル(SIP)と豊富なマルチメディアフレームワーク、NAT トラバーサル機能を組み合わせた高レベル API を提供し、デスクトップ、組み込みシステム、モバイルハンドセットなど、ほとんどのタイプのシステムに適しています。
Linphone はオープンソースの SIP 電話であり、モバイルおよびデスクトップ環境(iOS、Android、Windows Phone 8、Linux、Windows Desktop、MAC OSX)および Web ブラウザで利用できます。Linphone には、ユーザーインターフェースとコアエンジンの間に分離があり、同じ機能の上にさまざまな種類のユーザーインターフェースを作成することができます。
コンパイル環境 MAC OS 10.10.5 Xcode 6.4
以下はコンパイル手順です。公式のソースコードは README.MD の一部のみ提供されています。
- Xcode と command line tools をインストールします。AppStore からダウンロードしてインストールしてください。すでにインストール済みの場合はスキップしてください。
- HomeBrew をインストールします。http://brew.sh にアクセスして、表示される指示に従って最新バージョンの HomeBrew をインストールするか、インターネットに接続した状態でターミナルを開いて以下のコマンドを実行します。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- Xcode と Homebrew のインストールが正常に完了したら、以下のコマンドを使用して準備作業を行います。まず、linphone のソースコードをダウンロードします。
git clone git://git.linphone.org/linphone-iphone.git --recursive
ここで、ネットワークに接続されていることを確認し、約 500M のファイルをダウンロードすることをお勧めします。
- ソースコードをコンパイルするために必要な依存パッケージとライブラリをインストールするために、以下のコマンドを実行し、指示に従ってインストールします。
./prepare.py
- 準備作業が完了したら、以下のコマンドを使用して linphone の SDK をコンパイルします。
./prepare.py -c && ./prepare.py && make
- SDK のコンパイルが完了したら、linphone.xcodeproj を開き、通常の iOS アプリケーションとしてコンパイルします。
コンパイル中の問題と解決策 1. Homebrew のインストールおよびアンインストールができない場合
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
Failed to locate Homebrew!
この問題は、このコンピューターに他のユーザーが Homebrew をインストールしている可能性があるためです。解決策は、以下のコマンドを実行して Homebrew を再インストールすることです。
git キャッシュをクリア#
rm -rf /usr/local/.git
Cellar を完全にクリアする(使用しない方が良い)#
rm -rf /usr/local/Cellar#
- libtoolize が見つからないというエラーが表示され、libtool をインストールするように求められる場合、MAC OS では libtool と libtoolize が glibtoolize と glibtool に変更されているため、以下のコマンドを実行してリンクを作成します。
sudo ln -s /usr/local/bin/glibtoolize /usr/local/bin/libtoolize
参考資料 http://blog.csdn.net/showhilllee/article/details/42966305