270 likes | 445 Views
Video Conference over SIP using VOCAL. 2006. 6. 18 ( 월 ) 한 민 규 / 백 일 우 hufs96mk@hufs.ac.kr. Contents. JMF 배경 Project 개요 JAIN SIP Object Architecture JMF Abstract Structure SIP Server (Using Vocal). JMF 배경. JMF 2.0 Version Audio & Video Capture Audio & Video 를 Stream 형태로 관리
E N D
Video Conference over SIP using VOCAL 2006. 6. 18 (월) 한 민 규/백 일 우 hufs96mk@hufs.ac.kr
Contents • JMF 배경 • Project 개요 • JAIN SIP Object Architecture • JMF Abstract Structure • SIP Server (Using Vocal)
JMF 배경 • JMF 2.0 Version • Audio & Video Capture • Audio & Video를 Stream 형태로 관리 • Stream을 이용한 모든 서버 클라이언트 모델에 추가할 수 있음 • Player에서의 Pluggable Codec 지원 • Support Platform • Solaris, Window, Linux • http://java.sun.com/products/java-media/jmf/2.0/supported.html
Project 개요 • 목표 • SIP 기반의 VoIP Application Implementation • Project Spec • JAIN-SIP을 사용하여 Simple Call Setup Implemenation • JMF의 Capture Function을 사용하여 Media Data를 Receive하고, JMF RTP API를 사용하여 Media data를 Realtime으로 Client의 모니터와 스피커에 출력한다. • Server • Output Port를 제공한다. • 캠과 마이크를 이용하여 Media data를 실시간 Buffering 한다. • Buffering된 데이터를 접속한 Client에게 실시간으로 전송한다. • Client • Server의 Output Port로 연결 • Server에서 전송하는 Media Data를 Receive한다. • 전송받은 Media Data를 Play 한다.
Project Step • JMF Study • JMF Architecture • JMF API & Basic Operation • Vocal SIP Server Configuration • Marshal Server Configure • Add User • Static Registration • Test • JAIN-SIP Study • Call Setup Implementation & Study
SIP Server (Using Vocal 1/3) • Vocal Server Status & Add User
SIP Server (Using Vocal 2/3) • Vocal Provgui App & Vocal User Configuration
SIP Server (Using Vocal 3/3) • EDIT_USER & Marshal Server Setting
JAIN-SIP • JAIN SIP is the standardize Java interface to the Session Initiation Protocol for desktop and server applications. • Standardizes the interface to the stack. • Standardizes message interface. • Standardized events and event semantics. • Application portability – verified via the TCK. • JAIN SIP enables transaction stateless, transaction stateful and dialog stateful control over the protocol • Designed for developers who require powerful access to the SIP protocol • JAIN SIP can be utilized in a user agent, proxy, registrar or imbedded into a service container.
SIP Functional Layers • SIP Functional Layers일뿐 실제 Network Protocol Stack같은 개념과는 다르다.
JAIN SIP Object Architecture • Manages Listening Points and Provides. • SipStack associated with an IP address. • Application can have multiple SipStacks. • ‘javax.sip.*’ properties are reserved and names defined for stack configuration properites <JAIN-SIP Stack> <Message Architecture>
SIP Stack Property • IP_ADDRESS • Sets the IP Address of the SipStack • STACK_NAME • Sets a user friendly name to identify the underlying stack implementation. • OUTBOUND_PROXY • Sets the outbound proxy of the SIP Stack
SIP Factory Source • HeaderFactory • This interface defines methods to create new Headers objects • AddressFactory • This interface defines methods to create SipURI’s and TelURL’s • MessageFactory • This interface defines methods to create new Request and Response objects • 위의 Factory들은 실제 Sip Header를 만드는 Parameter로 사용된다. Create Dialog
processResponse Method • Dialog 내의 Request.ACK Creation • Cancel일 경우 BYE Msg 전송 • SIP Terminal이 비정상적으로 종료될시에 Cancel Msg Creation
JAIN-SIP Communication Architechture > SIP STACK : Virtual SIP network for using existing IP network( PORT should be 5060) > Listening Point 1. For setting Port and Transport type(TCP/UDP) 2. Getting info from SIP STACK and passing to SIP provider > SIP Provider • 1. Register Siplistener into SIP STACK • 2. PASS EVENT from SIPlistener to SIPSTACK > SIP listener 1. Interface for application on SIP STACK
SIP Transactions • A SIP transaction consists of a single request and any responses to that request. Use Vocal Marshal Server
JMF Abstract Structure • DataSource • SourceStream 객체들의 집합을 관리 • 가장 기본적인 Data Source의 전송단위로는 바이트 배열을 사용 • Buffer 객체를 전송단위로 사용하는 DataSource도 있다. • DataSource Type • PullDataSource (Client Side) • Data 전송초기화, 데이터흐름 조절 • PushDataSource (Server Side) • VoD, RTP • Cloneable DataSource • Merging DataSource
JMF Package & Main Classes < Generic JMF Package > < Generic Main Classes > javax.media javax.media.bean.playerbean javax.media.cdm javax.media.control javax.media.datasink javax.media.format javax.media.pim javax.media.pm javax.media.protocol javax.media.renderer javax.media.rtp javax.media.rtp.event javax.media.rtp.rtcp javax.media.util • Media Stream : 로컬 파일, 네트워크를 통해 전송되어진 자료, 그리고 비디오나 오디오등의 • 캡쳐장치를 통해 획득된 미디어 데이터, Track이라 불리는 다 채널 데이터로 구성되어 있다. • DataSource : 멀티미디어 데이터에 대한 위치정보, 프로토콜 정보, 전송에 관한 정보를 나타내는 • 클래스임 • Cloneable DataSource : 해당 데이터 소스를 복제하여 마치 여러 개의 데이터소스를 독립적으로 • 이용할 수 있도록 도와주는 역할을 한다. • Player, Processor : Player는 실제 미디어의 재생기능을 위주로 만들어진 클래스이고 포맷 변환, • 네트워크 전송, 파일로의 저장 등의 기능을 확장한 것이 Processor입니다. Processor는 Player를 • 상속하게 된다. • DataSink : 출력 장치가 아닌 주로 다른 곳으로의 미디어 데이터의 전송에 사용됩니다. 주로 • 파일이나 네트워크로 전송을 위해 사용됩니다. DataSink를 통하여 DataSource의 출력 방향을 • 네트워크의 스트림으로 설정하여 RTP에서도 사용된다. • RTPManager : RTP session이 설정될 때 생성되어 DataSource와 IP address, Port number • 정보를 입력 받아 RTP 전송을 담당한다.
JMF Media Capture(1/2) • Format Object Creation Format Object에 적합하게 Capture할 수 있는 DataSource를 생성한다.
JMF Media Capture(2/2) Capture Device에 관한 관리를 맡는 클래스 - 현재 컴퓨터에서 캠 혹은 마이크등의 USB장비들을 인식한다. CaptureDeviceManager는 Device들의 Collector를 반환한다. - 첫번째 드바이스 즉 캠에 대한 정보를 가져온다. • MediaLocator 객체는 미디어 데이터를 캡슐화 하는 클래스인 DataSource • 객체를 생성하는데 기본적으로 필요한 클래스 • MediaLocator객체를 사용하여 캡쳐되는 미디어 정보를 Player Class Object를 통해 플레이하거나, 조작하는 것이 가능하게 된다.
JMF RTP Implementation • RTP Reception • RTP Transmission
JMF RTP Implementation(2/3) • Type • MediaLocator와 DataSink를 이용하여 전송하는 방법 • SessionManager(RTP Manager)를 이용하는 방법 • SessionManager는 세션에 참여하고 있는 참여자들의 정보와 전송되어지는 Stream을 관리하는 클래스이다. • Stream • RTP Stream : ReceiveStream, SendStream • SendStream은 Processor(Player)에서 생성되어 넘겨지는 데이터를 네트웍으로 전송하는 Stream을 말한다. • SendStream은 SessionManager 클래스의 createSendStream 메소드를 이용해 생성한다. • SendStream 생성과 Client에게 RTP Stream 전송
VOCAL SERVER CPLFeature Server Marshal Server 200 OK 180 ringing 200 OK INVITE sip: STEIGENSONNE@hufs.ac.kr SIP/2.0 INVITE sip: STEIGENSONNE@hufs.ac.kr SIP/2.0 RTP Stream( using contact address) Media Client Media Server Video,Voice, String Communication Video,Voice, String Communication REALMK STEIGENSONNE Testbed
Reference • 참고문헌 • ‘SIP(Session Intiation Protocol) ' 저자 Alan B.Johnston • - 'Practical VoIP ' 저자 Luan Dang, Cullen Jennings & David Kelly • - ‘SIP Demystified ' 저자 McGraw-Hill • - ' Internet Communications Using SIP ' 저자 John Wiley & Sons • - ‘SIP ’ - RFC 3261 - • - ‘SIP Extensions for instant Messaging ‘ - RFC 3428 - • - ‘SIP Specific event notification ’ - RFC 3265 - • - ‘Proxy servers & Location SIP servers ’ - RFC 3263 - • 참조 사이트 • 'National Institute of Standards and Technology ' : http://snad.ncsl.nist.gob/proj/iptel/ • ‘Riverbank ' : http://www.riverbankcomputing.co.uk/sip/download.php • ‘콜롬비아 대학 ’ : http://www.cs.columbia.edu/sip • ' SIP forum ' : http://www.sipforum.com • 'IETF's SIP page ' : http://www.ietf.org/html.charters/sip-charter.html • 'SIP Working group Supplemental Home Page ' : • http://www.softarmor.com/sipwg/ • 'Vovida Company ' : http://www.vovida.org/ • 'SipCenter ' : http://www.sipcenter.com/sip.nsf/html/SIP+Signaling • 'KLDP ' : http://wiki.kldp.org/wiki.php/DocbookSgml/VoIP-HOWTO • 'Korea Internet Conference ' : http://www.krnet.or.kr/ • 'Jain CVS ' : • https://jain-sip.dev.java.net/servlets/ProjectDocumentList • 'Jain CVS ' : • http://www1.cs.columbia.edu/~pallavi/jain/JainSip1.0/api/index.html • 'Jain SIP API ' : • http://www1.cs.columbia.edu/~pallavi/jain/JainSip1.0/api/index.html • 'Java Community Process ' : http://jcp.org/en/jsr/stage?listBy=final • 'Jain World ' : http://jainworld.com/JWNew/jainworld/index.asp
PLAY DEMO THANK YOU