linphone是一款开源的SIP客户端工具,支持Linux、MacOS、Windows、iOS、Android以及树莓派,非常强大,本文将为大家展现如何在树莓派下编译及使用linphone客户端

编译并安装

sudo apt-get install gcc
sudo apt-get install openjdk-8-jre
sudo apt-get install doxygen
sudo apt-get install cmake graphviz
sudo apt-get install python-setuptools
sudo apt-get install python-pip
sudo pip install pystache
sudo apt-get install intltool
sudo apt-get install nasm
sudo apt-get install automake
sudo apt-get install libtool
sudo apt-get install gettext
sudo apt-get install libx11-dev

tar xzvf linphone-desktop.tar.gz
cd linphone-desktop
./prepare.py -DENABLE_VPX=OFF -DENABLE_WEBRTC_AEC=OFF -DENABLE_OPENH264=ON -DENABLE_NON_FREE_CODECS=ON  no-ui
make

# 成功后,执行如下命令即可完成安装
sudo cp -rf OUTPUT/no-ui/* /

使用

linphone提供了命令行工具linphonec,通知此命令,可以完成账号注册、呼叫、接听、声卡选择等操作.

  • 启动
# 只支持音频
linphonec

# 若需要开启视频
linphonec -C

# 开启自动接听
linphonec -a -C
  • 账号注册
# 查看当前账号
proxy list

# 添加账号
proxy add
  • 接听
answer
  • 呼叫
call 101
  • 挂掉
terminate
  • 声卡
# 所有声卡
soundcard list

# 当前使用
soundcard show

# 设置声卡
soundcard use xx

#设置响铃声卡
soundcard ring xx

# 设置播放声卡
soundcard playback xx

# 设置录音声卡
soundcard capture xx 
  • 摄像头
# 显示所有声卡
webcam list

# 设置摄像头
webcam use xx
  • 音视频编码
# 音频编码
codec list

# 视频编码
vcodec list

遇到问题

  • answer会导致崩溃
--- a/coreapi/linphonecore.c
+++ b/coreapi/linphonecore.c
@@ -3731,7 +3731,7 @@ static LinphoneCall * get_unique_call(LinphoneCore *lc) {
 }

 LinphoneStatus linphone_core_accept_call(LinphoneCore *lc, LinphoneCall *call) {
-       return linphone_call_accept_with_params(call, NULL);
+       return linphone_core_accept_call_with_params(lc, call, NULL);
 }

PS: 是由于官网源码BUG导致,可以按照此diff修复,再编译安装

  • 声卡选择
# 设置播放声卡
soundcard playback xx

# 设置录音声卡
soundcard capture xx

PS: 如果你的声卡录音和播放是分开,可以通过playback和record分别设置,这个在帮助文档中是找不到,但确实是有效

  • 支持摄像头

首先必须加载v4l2

sudo modprobe bcm2835-v4l2

如果提示’No Devices’,则请在/boot/config.txt添加如下配置,并重启树莓派

start_x=1
gpu_mem=128

PS: 加载成功后,会在产生/dev/videox的文件,x可能是0 …

完成以上配置后,进入linphonec,使用webcam list就可以看到相应的选项,并进行设置

webcam use 1

PS: 当然要开启视频支持,必须以 -C启动linphonec