임베디드/[ VoIP ]

[ VoIP ] 06. VoIP Open Source의 종류

kim.svadoz 2020. 10. 7. 11:06
반응형

VoIP Open Source의 종류


PJSIP

PJSIP는 설치 공간이 매우 작고 성능이 뛰어난 오픈소스 SIP 프로토콜 스택

jsip 는 오픈소스로 제작된 멀티미디어 통신 라이브러리이다. pjsip 에서 제공하는 라이브러리를 이용하면 자동 SIP 콜 테스트 프로그램 등을 쉽게 제작할 수 있다.

Library 뿐만 아니라, pjsip 설치시 함께 컴파일되는 모듈 중에 pjsua 라는 모듈이 있는데 이는 CLI(Command line interface) 지원하는 SIP 클라이언트 프로그램이다.
즉, library 를 제공하는 것 뿐만 아니라 CLI 기반 클라이언트 프로그램도 같이 제공한다.

그리고 Library 모듈 중, Python 모듈은 Python 을 이용한 스크립트 제작을 가능하게 해준다. 즉, Python 으로 동작하는 SIP 자동 테스트 같은 프로그램을 제작할 수 도 있는 것이다.

지원 OS는 Windows, Linux, Mac OS, Android, IOS

> Installation

Ubuntu/Debian

apt-get을 통한 패키지 설치를 지원하지 않는다. 따라서 소스를 다운받아 컴파일 하는 방식으로 설치해야 한다.

$ wget http://www.pjsip.org/release/2.3/pjproject-2.3.tar.bz2
$ tar xf pjproject-2.3.tar.bz2
$ cd pjproject-2.3
$ ./configure
$ make dep
$ make
$ sudo make install
  • 실수로 make dep 를 하기 전에 make 를 먼저 했을 경우, 에러가 발생하는 문제가 있었다. 이후에 다시 make dep 를 하고 make 를 해도 같은문제가 발생했다. make distclean & make clean 후, 다시 make dep & make 실행 후 정상적으로 컴파일이 되었다.

PJSIP는 여러 수준의 API로 구성되며 각 API는 서로 계층화됩니다. 이로 인해 새로운 독자는 시작할 곳을 찾는 것이 조금 어려울 수 있습니다.

일반적으로 PJSIP 사용에 대한 두 가지 접근 방식을 권장 할 수 있다고 생각합니다.

1. PJSUA API 사용

PJSUA API-High Level SoftPhone API는 모든 SIP 구성 요소와 미디어를 일반적인 SIP 사용자 에이전트 애플리케이션을 만드는 데 적합한 높은 수준의 API로 래핑한다. 다음을 위해 사용하기 쉬운 API를 제공한다.

  • 여러 클라이언트 등록(계정)
  • 높은 수준의 SIP 및 미디어 세션(호출)
  • 친구목록, 현재 상태 및 인스턴트 메시징
  • 강력하고 사용하기 쉬운 미디어 조작

일부 유형의 애플리케이션에 필요한 사용자 정의 공간(사용자 정의 SIP 전송, 사용자 정의 SIP 미디어 등)을 유지한다.

PJSUA API-High Level SoftPhone API는 또한 애플리케이션이 적절한 스레딩 전략 및 메모리 제한(호출 수, 미디어 포트 등)을 신중하게 설정하도록 허용하며 PDA 또는 휴대폰과 같은 장치에서 실행할 수 있도록 하는 것을 목표로 한다.

그러나 PJSUA API-High Level SoftPhone API는 사용하기 쉬운 API를 지향하기 때문에 일부 유형의 애플리케이션에 가장 적합한 API는 아닐 수 있다. 보다 고급적인 사용을 위해 아래 설명된대로 PJSIP + PJMEDIA를 직접 사용하여 애플리케이션을 더 잘 구현할 수 있다.

2. PJSIP 및 PJMEDIA 직접 사용

최고의 유연성과 성능을 위해서는 PJSIP 및 PJMEDIA를 직접 사용하는 것이 좋다. 단점은 물론 더 가파른 학습 곡선이라는 것..

그러나 다음 링크는 몇 가지 유용한 정보를 제공해 줄 것이다.

  • PJSIP 개발자 가이드 PDF 문서는 PJSIP 디자인 개념을 이해하기위한 최고의 가이드입니다.
  • pjsip-apps / src / samples 디렉토리에 몇 가지 샘플이 있습니다 .
  • PJSUA API-High Level Softphone API 소스 코드는 PJSIP / PJMEDIA를 사용하여 상위 레벨 API를 구현하는 방법을 확인하는데도 유용 할 수 있습니다.
  • 마지막으로 항상 소스 를 사용할 수 있습니다 !

LinPhone

Linphone ( Linux 전화의 축소 )은 IP 소프트 폰 , SIP 클라이언트 및 서비스를 통한 무료 음성 입니다. 음성 및 영상 직접 통화VoIP 소프트 스위치 또는 IP-PBX를 통한 통화에 사용할 수 있습니다 . 또한 Linphone은 인스턴트 메시지를 교환 할 수있는 가능성을 제공합니다. GUIGTK + 를 기반으로하는 간단한 다국어 인터페이스가 있으며 Linux 에서 콘솔 모드 응용 프로그램으로 실행할 수도 있습니다 .

소프트 폰은 현재 프랑스의 Belledonne Communications에서 개발했습니다. Linphone은 처음에 Linux 용으로 개발 되었지만 이제는 Microsoft Windows , Mac OS X , Windows Phone ,iOS [12] 또는 Android를 실행하는 휴대 전화를 비롯한 많은 추가 플랫폼을 지원합니다 . 이 지원 ZRTP을 위한 엔드 - 투 - 엔드 암호화 된 음성 및 영상 커뮤니케이션.

Linphone은 GPL ( GNU General Public License)에 따라 사용이 허가되었으며 IPv6를 지원 합니다 . Linphone은 뒤에 사용할 수있는 네트워크 주소 변환기 가 홈 라우터 뒤에 실행할 수있는 의미 (NAT). ITSP ( 인터넷 전화 서비스 공급자) 를 사용하여 전화 통신과 호환됩니다 .

> 기능

  • Linphone은 웹 사이트에서 무료 SIP 서비스를 호스팅합니다.
  • Linphone 클라이언트는 다음 기능에 대한 액세스를 제공합니다.
  • 다중 계정 작업
  • 모든 SIP 서비스 및 회선 상태 관리에 등록
  • 다른 사용자의 상태가 있는 연락처 목록
  • 전화 회의 시작
  • 메시지 내역 및 통화 세부 정보 조합
  • DTMF 신호 전송
  • 파일 공유
  • 추가 플러그인

> 지원

프로토콜

오디오 코덱

오디오 코덱 지원 : Speex (협 대역 및 광대역), G.711 ( μ-law , A-law ), GSM , OpusiLBC (옵션 플러그인 사용)

비디오 코덱

비디오 코덱 지원 : MPEG-4 , Theora , VP8H.264 ( x264 기반 플러그인 포함 ), 네트워크 대역폭과 CPU 전력이 충분하다면 QCIF (176x144)에서 SVGA (800x600)까지의 해상도가 제공됩니다.

Twinkle

Twinkle 은 VoIP ( Voice over IP ) 프로토콜을 통한 음성 통신을위한 무료 오픈 소스 앱입니다 . Linux 운영 체제 으로 설계되었으며 그래픽 사용자 인터페이스에 Qt 툴킷을 사용합니다 . 호출 신호를 위해 SIP ( Session Initiation Protocol )를 사용합니다. 또한 직접 IP 대 IP 통화를 제공합니다. 미디어 스트림은 SRTP ( Secure Real-time Transport Protocol ) 및 ZRTP 보안 프로토콜 로 암호화 될 수있는 RTP ( Real-time Transport Protocol )를 통해 전송됩니다 .

버전 1.3.2 (2008 년 9 월)부터 Twinkle은 사전 정의 된 통신 파트너의 온라인 상태를 표시하는 프레즌스 알림을위한 메시지 교환 및 친구 목록 기능을 지원합니다 (제공자 지원 필요).

Jami

Jami (이전 GNU Ring , SFLphone )는 Linux , Microsoft Windows , OS X , iOSAndroid SIP 호환 분산 P2P 소프트 폰SIP 기반 인스턴트 메신저 입니다 . 캐나다 회사 인 Savoir-faire Linux에서 , 개발 및 유지 관리하며 사용자 및 기여자의 글로벌 커뮤니티의 도움으로 Jami는 잠재적 인 무료 Skype 대체품 으로 자리 매김했습니다 .

Jami는 GNU General Public License에 따라 출시 된 무료 오픈 소스 소프트웨어 입니다. 2016 년 11 월에 GNU 프로젝트의 일부가되었습니다 .

현재 두 가지 계정 유형을 사용할 수 있으며 각 유형의 대부분을 동시에 구성 할 수 있습니다. 두 유형 모두 메시징, 비디오 및 오디오를 포함한 유사한 기능을 제공합니다. 계정 유형은 SIP 및 링입니다. SIP 계정을 사용하면 Jami 소프트 폰을 표준 SIP 서버에 연결할 수 있으며 링 계정은 중앙 서버가 필요없는 분산 Jami 네트워크에 등록 (또는 계정 설정 사용) 할 수 있습니다. 그러나 Jami는 여전히 부트 스트랩 서버를 사용하여 연결해야하므로 진정한 인터넷 무료 통신 플랫폼이 아닙니다.

분산 해시 테이블 기술 (예 : BitTorrent 네트워크 내에서 사용됨)을 채택함으로써 Jami는 연결된 모든 시스템에 디렉터리 기능, 인증 및 암호화 를 배포 할 수있는 자체 네트워크를 만듭니다.

패키지는 Debian , FedoraUbuntu를 포함한 모든 주요 Linux 배포판에서 사용할 수 있습니다. 별도의 GNOMEKDE 버전을 사용할 수 있습니다. 문서는 Ring의 Tuleap wiki에 있습니다.

> 디자인

Jami는 데몬 (모델)과 클라이언트 (뷰)가 통신 하는 MVC 모델을 기반으로합니다 . 데몬은 통신 계층 (SIP / IAX), 오디오 캡처 및 재생 등을 포함한 모든 처리를 처리합니다. 클라이언트는 그래픽 사용자 인터페이스입니다. D-Bus 는 클라이언트와 데몬 간의 통신을 가능하게하는 컨트롤러 역할을 할 수 있습니다.

> 기능

  • OpenDHT 지원과 SIP 호환
  • 무제한 통화
  • 인스턴트 메시징
  • 검색 가능한 통화 내역
  • 통화 녹음
  • 유인 통화 전달
  • 자동 전화 응답
  • 통화 보류
  • 다자간 오디오 및 화상 회의를 통한 오디오 및 비디오 통화
  • 다중 채널 오디오 지원
  • 통화 중 비디오 및 오디오 파일 스트리밍
  • TLSSRTP 지원
  • 여러 오디오 코덱 지원 : G711u, G711a, GSM, Speex (8, 16, 32kHz), Opus , G.722 (Speex에서 무음 감지 지원)
  • 계정 별 STUN 지원 및 SIP 프레즌스 구독으로 여러 SIP 계정 지원
  • DTMF 지원
  • 자동 이득 제어
  • 계정 도우미 마법사
  • 전역 키보드 단축키
  • FlacVorbis 벨소리 지원
  • 데스크톱 알림 : 음성 메일 번호, 수신 전화, 정보 메시지
  • SIP 재 초대
  • GNOME 및 KDE의 주소록 통합
  • PulseAudio 지원
  • 잭 오디오 연결 키트 지원
  • 로케일 설정 : 프랑스어, 영어, 러시아어, 독일어, 중국어, 스페인어, 이탈리아어, 베트남어
  • 수신 URL 자동 열기
  • 채팅, 비디오 및 음성에 사용되는 종단 간 암호화
  • 분산 형 (하지만 ISP를 통한 인터넷 연결 필요)

MicroSIP

MicroSIPMicrosoft Windows에서 사용할 수 있는 PJSIP 스택을 기반으로 하는 휴대용 SIP 소프트 폰 입니다. 개방형 SIP 프로토콜을 기반으로 고품질 VoIP 통화 ( p2p 또는 일반 전화)를 용이하게 합니다.

MicroSIP는 무료 및 오픈 소스 소프트웨어 범주에 속하며 GNU General Public License에 따라 릴리스됩니다 .

PJSIP 스택에 의존하고 사용 가능한 기능을 사용합니다

이 소프트웨어의 특징은 다음과 같습니다.

비디오가있는 정식 버전과 음성 및 메시징 전용 "Lite"버전의 두 가지 변형이 있습니다.

QuteCom

QuteCom (이전의 WengoPhone )은 GNU General Public License (GPL) 에 따라 QuteCom (이전 OpenWengo) 커뮤니티에서 개발 한 무료 소프트웨어 SIP 호환 VoIP 클라이언트였습니다 . 사용자가 SIP 호환 VoIP 소프트웨어의 다른 사용자와 무료로 대화 할 수 있습니다. 또한 통화에 사용자 수 있습니다 유선 전화휴대 전화 , 전송 SMS 와 메이크업의 화상 통화를 . 이러한 기능 중 어느 것도 특정 공급자와 연결되어 있지 않으므로 사용자는 SIP 공급자 중에서 선택할 수 있습니다.

PC 간 통화가 하이파이의 품질을 여러 사용하는 코덱 과 같은 에서 iLBC , G.711 ( PCMA 또는 PCMU ), G.722 , AMR을 (라이센스 필요), AMR-WB (라이센스 필요), G.729 ( 라이센스 필요). 동일한 소프트웨어 또는 Gizmo 와 같은 SIP 호환 소프트웨어를 사용하는 다른 사용자와 대화를 시작할 수 있습니다 . QuteCom은 또한 사용자가 FFmpeg를 사용하여 화상 통화를 할 수 있도록합니다 . 지원되는 비디오 코덱은 H.263 입니다. 버전 2.1부터 QuteCom은 다음과의 IM 채팅을 허용합니다.MSN , YIM , AIM , ICQXMPP 사용자. 이것은 libpurple 라이브러리 를 사용하여 이루어졌습니다 .

유선 전화 호출에 관한 기본 서버 구성에서 하나 Wengo OpenWengo 프로젝트의 주요 스폰서이었다. 버전 2.1이 출시 된 후 QuteCom은 모든 SIP 공급자 와 함께 사용할 수 있습니다 . 이는 사용자가 사용하는 소프트웨어가 아닌 분당 청구하는 요금에 따라 SIP 공급자를 선택할 수 있기 때문에 사용자에게 경제적 이점을 제공합니다.

> 사용자 인터페이스

GUIGizmo5 또는 Skype 와 같은 다른 VoIP 소프트 폰GUI 와 유사합니다 . 기본 GUI에서 을 통해 연락처 목록, 최근 통화 목록 및 사용자 계정 정보에 액세스 할 수 있습니다. 기술적으로는 PythonQt / C ++ 프로그래밍 언어로 작성되었습니다 .

> 기능

  • SIP 준수
  • 공급자 불가지론
  • 사용자가 프랑스로 SMS를 보낼 수 있습니다.
  • NAT 통과
  • 크로스 플랫폼
  • 오디오 스마일
  • Qt 기반 GUI
  • MSN, AIM, ICQ, Yahoo 및 XMPP 사용자와 채팅
  • SRTP 를 통한 암호화 , 그러나 표준이 아닌 Everbee 키를 통한 키 교환
  • 표준 세션 시작 프로토콜 사용

> 한계

QuteCom의 주요 제한 사항은 다음과 같습니다.

  • 암호화와 같은 진정한 개인 정보 보호 기능이 없습니다. SRTP를 사용한 베타 AES-128 암호화 는 QuteCom 2.1 버전부터 제공됩니다.
  • H.261을 지원하지 않고 잘못된 H.263 패킷을 전송 하여 다른 비디오 폰과 통신 하지 못함
  • 3 명 이상의 오디오 컨퍼런스를 지원하지 않음
  • 암호화를위한 키 교환은 표준이 아니므로 QuteCom 클라이언트간에 만 작동합니다.

Jitsi Meet

오픈소스 기반 비디오 컨퍼런스 솔루션

줌이 대중적으로 사용되고 있기는 하지만 사생활 문제나 보안문제, 암호화 문제 등에 있어서 많은 이슈들이 제기되고 있는 상황이다.

그런데, 짓시미트(Jitsi Meet)는 기본적으로 무료이면서 사용이 아주 간편한 오픈소스 비디오 채팅 도구를 갖추고 있으며 , 무엇보다 암호화되어 있고 데이터를 판매하지 않는다는 점이 많은 주목을 받는 이유이다.

이 서비스는 별도로 계정을 만들 필요도 없으며, 회의를 시작하거나 참가하기 위해 어떤 것도 다운받을 필요가 없다. 줌에서 익숙한 타일뷰도 지원해준다!

  1. 시작하는 법(미팅방 개설)

    통화연결하는 법은 매우 간단하다. 미팅 관리자가 Jitsi 미팅 페이지로 이동하여 "새로운 미팅 시작(start a new meeting)"에서 원하는 미팅명을 입력하고 "이동(Go)"를 누른다.

    그러면 바로 통화 연결이 시작되는데, 여기서 중요한 것은 바로 통화에 비밀번호를 추가하라는 것이다. 이것은 원하지 않는 참가자들이 컨퍼런스 연결을 끊지 못하도록 하는 장치이다.

    통화를 시작한 직후에 암호를 추가하려면 화면 오른쪽 하단에 있는 "i"아이콘을 클릭하면 된다.

    image-20200923112314903

    암호 추가를 선택한 다음 빈 필드에 원하는 암호를 입력하고 Enter키를 누르면 이제 Jitsi 호출이 암호로 보호된다.

  2. 친구를 초대함

    이렇게 관리자가 처음 만든 방의 URL을 참가할 사람들에게 알려준다. 이메일이나 문자 등으로 참가자들에게 URL과 비밀번호를 알려주면, 참가자들은 그대로 찾아가서 비밀번호 넣고 로그인하면 통화에 연결된다.

    image-20200923112423429

    현재 Jitsi는 최대 75명의 통화자를 동시에 지원가능하며, 중요한 것은 줌과 달리 통화에 시간 제한이 없다는 것!

  3. 몇가지 팁과 요령

    Jitsi는 화면 공유가 가능하고 녹화 기능과 타일 보기 등 다양한 기능으로 유료 비디오 회의 도구와 직접 경쟁하고 있따. 그리고, 언어 설정에서 한국어를 선택하면 한국어로 번역되어 메뉴가 나타난다.

    • 타일보기
      • 통화를 타일 보기로 전환하려면 통화가 시작되면 오른쪽 아래 모서리에 있는 작은상자4개를 클릭한다.
    • 블러 배경
      • Jitsi는 자동으로 배경을 흐리게 하는 기능도 있다. 낯선 사람들에게 집안의 내부 모습을 숨길 수 있는 유용한 도구이다

    이 밖에도 Youbue 비디오 공유, 화면 녹화, 손들기 기능 등 꽤 훌륭한 기능들이 무료로 제공되고 있따.

    Jitsi는 줌의 왠만한 기능들을 다 가지고 있으면서도 계정을 만들지 않더라도 컨퍼런스 통화 연결할 때 비밀번호 설정만 잘 해준다면 자신만의 Jitsi URL을 만들어 아주 쉽고 간단히 회의를 공유할 수 있는 툴이다.

반응형

'임베디드 > [ VoIP ]' 카테고리의 다른 글

[ VoIP ] 07. LINUX Audio Programming  (0) 2020.11.06
[ VoIP ] 05. PBX와 IP-PBX  (0) 2020.09.15
[ VoIP ] 04. PCM, TDM과 샘플링 이론  (0) 2020.09.15
[ VoIP ] 03. G.711 코덱?!  (0) 2020.09.15
[ VoIP ] 02. SIP란 무엇인가(2)  (0) 2020.09.15