Я хотел бы, чтобы на моем Raspberry Pi работали терминальные (безголовые) SIP-звонки, и я уже пробовал это с помощью linphone:
Так как я сейчас застрял там, я хотел попробовать другой вариант, который был SFLPhone. Они указали мне на кольцо программный проект, который предлагает демон dring
который позволяет совершать SIP-вызовы с использованием скриптового интерфейса:
Действительно, демон может работать автономно и управляться с помощью API DBus.
Обратите внимание, что проект был переименован в «Ring» (версия увеличена до 2.x). Экспериментальные пакеты доступны на http://ring.cx/en/documentation/linux-installation
Главная особенность Кольца
2.x — это необязательный тип учетной записи «DHT», позволяющий совершать звонки без SIP-сервера.
Есть много других улучшений, таких как поддержка ICE, поддержка UPnP, улучшения стабильности и т. Д.
(обратите внимание, что клиенты переписываются (GTK3, Qt5) и есть новый клиент OS X, они еще не завершены и находятся в тяжелой разработке.)Новый демон
dring
URI исходного Git репо: https://gerrit-ring.savoirfairelinux.com/ring .
API DBus в основном такой же, как и раньше. вtools/dringctrl
В каталоге вы найдете пример клиента Python, который мы используем для тестирования (используетpython3-dbus
).Мы готовы исправить любые ошибки, которые вы можете найти, багтрекер демонов находится здесь: https://projects.savoirfairelinux.com/projects/ring-daemon/issues
Также посмотрите на https://projects.savoirfairelinux.com/projects/ring/wiki для инструкции по сборке и т. д.С уважением и удачи для вашего встроенного проекта,
А. Б.
Я попытался скомпилировать зависимости для проекта, как указано в README
:
git clone https://gerrit-ring.savoirfairelinux.com/ring
cd ring
Сначала скомпилируйте зависимости
cd ../contrib/
rm -fr native/ && mkdir native
cd native
../bootstrap
make
Я получил эту ошибку:
libvpx.webm-4640a0c4804b/third_party/googletest/src/include/gtest/gtest.h
mv libvpx-4640a0c4804b49f1870d5a2d17df0c7d0a77af2f libvpx && touch libvpx
cd libvpx && CROSS= ./configure --target=armv7-linux-gcc \
--as=yasm --disable-docs --disable-examples --disable-unit-tests --disable-install-bins --disable-install-docs --enable-realtime-only --enable-error-concealment --disable-runtime-cpu-detect --disable-webm-io --enable-pic --prefix=/home/pi/ring/contrib/arm-linux-gnueabihf
disabling docs
disabling examples
disabling unit_tests
disabling install_bins
disabling install_docs
enabling realtime_only
enabling error_concealment
disabling runtime_cpu_detect
disabling webm_io
enabling pic
Configuring selected codecs
enabling vp8_encoder
enabling vp8_decoder
enabling vp9_encoder
enabling vp9_decoder
Configuring for target 'armv7-linux-gcc'
enabling armv7
enabling neon
enabling neon_asm
enabling media
Unable to invoke compiler: arm-none-linux-gnueabi-gcc -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
Configuration failed. This could reflect a misconfiguration of your
toolchains, improper options selected, or another problem. If you
don't see any useful error messages above, the next step is to look
at the configure error log file (config.log) to determine what
configure was trying to do when it died.
../../contrib/src/vpx/rules.mak:105: recipe for target '.vpx' failed
make: *** [.vpx] Error 1
Несмотря на то, что компиляция зависимостей не удалась, я попытался скомпилировать кольцо:
git clone https://gerrit-ring.savoirfairelinux.com/ring
cd ring
./autogen.sh
./configure
make
make install
Это вызвало следующую ошибку:
checking for PJPROJECT... no
configure: error: Missing pjproject files
pi@phone ~/ring $ make
make: *** No targets specified and no makefile found. Stop.
pi@phone ~/ring $ make install
make: *** No rule to make target 'install'. Stop.
Так что в настоящее время я застрял и боюсь, что я не смогу выйти за рамки текущее состояние моего проекта ():
редактировать: Теперь без видеокодеков (как предложил aberaud) я сталкиваюсь со следующей ошибкой:
/bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I../include/opendht -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include -fPIC -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include -g -fPIC -O3 -std=c++0x -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include -g -fPIC -O3 -std=c++0x -c -o libopendht_la-dht.lo `test -f 'dht.cpp' || echo './'`dht.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -I../include/opendht -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include -fPIC -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include -g -fPIC -O3 -std=c++0x -I/home/pi/sip-desaster/ring/contrib/arm-linux-gnueabihf/include -g -fPIC -O3 -std=c++0x -c dht.cpp -fPIC -DPIC -o libopendht_la-dht.o
In file included from ../include/opendht/dht.h:29:0,
from dht.cpp:27:
../include/opendht/infohash.h:58:22: error: expected initializer before ‘:’ token
dht.cpp:3105:1: error: expected ‘}’ at end of input
Makefile:386: recipe for target 'libopendht_la-dht.lo' failed
make[2]: *** [libopendht_la-dht.lo] Error 1
make[2]: Leaving directory '/home/pi/sip-desaster/ring/contrib/native/opendht/src'
Makefile:395: recipe for target 'install-recursive' failed
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory '/home/pi/sip-desaster/ring/contrib/native/opendht'
../../contrib/src/opendht/rules.mak:28: recipe for target '.opendht' failed
make: *** [.opendht] Error 2
Часть «contrib» в сборке Ring посвящена созданию зависимостей, которые недоступны в целевой системе, в основном используются для создания полнофункциональных пакетов при кросс-компиляции или для систем без надлежащего управления зависимостями (в основном все ОС, кроме дистрибутивов Linux).
Когда в contrib/native
каталог, вы можете запустить make list
чтобы увидеть список пакетов для сборки. Поскольку вы выполняете кросс-компиляцию, вам нужно собрать почти все.
Если вы как-то испортили сборку contrib, вы можете безопасно удалить contrib/native
а также contrib/{target_tuple}
(если есть) каталоги и начать заново.
Библиотека libvpx используется libav для предоставления видеокодеков vp8 и vp9. Это не жесткая зависимость, и, поскольку ваш проект не использует видео, вы можете безопасно отключить его. Мы также столкнулись с проблемами при кросс-компиляции vpx.
В contrib/src/libav/rules.mak
строка 70, DEPS_libav
определяет список зависимостей для libav. Вы можете удалить vpx
, x264
а также $(DEPS_vpx)
из списка, так как вы не используете видео. Вы также можете добавить в список аудиокодеки speex и opus (они должны быть в списке, но их нет, см. этот патч
В качестве примера).
После очистки вклад, как описано выше, и повторной форсировки при запуске make list
, vpx
а также x264
не должен отображаться в списке «Пакеты для сборки». Затем попробуйте собрать contrib, запустив make
,
Если после этой попытки вы столкнетесь с той же проблемой для других пакетов, у вас может возникнуть какая-то проблема с путями сборки кросс-компиляции (тогда мне потребуется больше журналов / подробностей).
В качестве крайней меры компиляция самого Pi (с Raspbian) идет ужасно медленно, но имеет преимущество перед использовать локальные зависимости, предоставляемые дистрибутивом и удалить неприятности кросс-компиляции.
Удачи
Я даю собственный ответ, который должен документировать мои шаги, которые, я надеюсь, приведут меня к желаемому конечному результату:
git clone https://gerrit-ring.savoirfairelinux.com/ring
cd ring
contrib
разделВ соответствии с @aberaud«s замечания Я могу обновить contrib/src/libav/rules.mak
и удалите все связанные с видео зависимости (помните, что я без головы):
Таким образом, я изменил форму строки 70
DEPS_libav = zlib x264 vpx $(DEPS_vpx)
в
DEPS_libav = zlib opus speex
Теперь построить contrib
раздел.
cd ../contrib/
rm -fr native/ && mkdir native
cd native
../bootstrap
make
Я нажимал на ту же ошибку, пытаясь скомпилировать вклад.
Версия Raspbian, которую я использовал, шла с более старой версией компилятора gcc версии 4.6. После того, как я обновился до 4.8, он скомпилирован мгновенно. Ну, так же быстро, как что-либо компилируется на Пи во всяком случае.