WebRTC Janus Gateway 오픈소스 미디어 서버의 경우 ...

 

WebRTC Janus 미디어 서버 대용량 서비스 구축 관련 세부 정보를 Janus Gateway 오픈소스를 자세히 분석하다 보면 파악이 가능 합니다 ...

 

저도 대용량 미디어서버의 구축을 어떻게 구현하는지가 궁금했었거든요

유럽 Meetecho 개발사 관계자분께 감사드릴뿐 입니다 ...

저도 WebRTC Janus 미디어 서버 대용량 서비스 구축 관련 세부 정보를 분석하는데 시간이 걸렸는데 ...

유럽 Meetecho 사 관게자분들의 오픈소스 자료를 분석해서 파악할수 있었읍니다 ...

 

한국에서는 대용량 미디어 서버 서비스 구축은 이통사 3 사 / 네이버 / 카카오 정도가 구축 경험이 있는것 같읍니다 ...

 

WebRTC Janus 미디어 서버 대용량 서비스 구축 관련 세부 기술컨설팅이 가능할것 같읍니다 ...

 

 

관련 업계분들 많은 관심 가져주셨으면 합니다 ...

 

제 소개를 하겠읍니다 ...

 

DMBTEC       HP : 010-3350-6509      이메일 :  sayhi7@daum.net 

일인기업 (개인사업자 기업) DMBTEC 기술자문 장석원 입니다 ...

 

연락주셔도 좋읍니다 ....


HOME  :  https://dmbtec.blogspot.com/

 

DMBTEC 기술자문 분야 - 미디어서버 분야 :: 전기차 모터제어 분야 :: 로라통신 - 모드버스통신 분야

메일로 문의사항을 보내 주시면, 최대한 빠른 시간안에 검토해서 연락드리도록 하겠읍니다 ....

dmbtec.blogspot.com

 

 

 

 

 

 

WebRTC 는 다음과 같은 프로토콜을 위의 세부 블럭도와 같이 여러개의 Protocol 이 구현되 있다 ... 

 

  - ICE: Interactive Connectivity Establishment (RFC 5245)

  - STUN: Session Traversal Utilities for NAT (RFC 5389)

  - TURN: Traversal Using Relays around NAT (RFC 5766)

  - SDP: Session Description Protocol (RFC 4566)

  - DTLS: Datagram Transport Layer Security (RFC 6347)

  - SCTP: Stream Control Transport Protocol (RFC 4960)

  - SRTP: Secure Real-Time Transport Protocol (RFC 3711)

 

WebRTC Janus Gateway 오픈소스는 위에서 열거된 프로토콜들이 구현되 있다 ...

 

 

Janus Gateway 오픈소스는 아래의 WebRTC 1.0 API 의 동작구조와 연동되는 구조로 동작한다 ...

아래의 블럭도를 참고하면서 Janus Gateway 오픈소스 커스토마이징 구현이 필요할것 같읍니다 ...

 

 

 

 

 

제 소개를 하겠읍니다 ...

 

DMBTEC       HP : 010-3350-6509      이메일 :  sayhi7@daum.net 

일인기업 (개인사업자 기업) DMBTEC 기술자문 장석원 입니다 ...

 

연락주셔도 좋읍니다 ....


HOME  :  https://dmbtec.blogspot.com/

 

DMBTEC 기술자문 분야 - 미디어서버 분야 :: 전기차 모터제어 분야 :: 로라통신 - 모드버스통신 분야

메일로 문의사항을 보내 주시면, 최대한 빠른 시간안에 검토해서 연락드리도록 하겠읍니다 ....

dmbtec.blogspot.com




 

 

 

 

 

 

 

 

아래는 WebRTC 규격으로 25 인 정도가 참여하는 화상회의를 구현시 참고해야 하는 미디어서버 SFU 기능을 표시했읍니다 ....

 

미디어서버 SFU 기능을 구현하는것을 Janus Gateway 오픈소스에서 어떤 방안으로

유럽의 실무 SW 엔지니어들은 구현했을까가 궁금했읍니다 ....

 

위의 그림에서 보시면 보이시듯이 4 명이 참여한다해도 통신처리가 복잡하다는것을

느끼실겁니다 ...

 

미디어서버 SFU 기능을 구현하는것을 Janus Gateway 오픈소스에서 어떤 방안으로

유럽의 실무 SW 엔지니어들은 구현했을까가 궁금했읍니다 ....

 

위의 그림에서 보시면 보이시듯이 4 명이 참여한다해도 통신처리가 복잡하다는것을

느끼실겁니다 ...

 

이것을 유럽의 Meetecho의 개발자들은 어떤 방식으로 Janus 오픈소스를 설계했을까가 궁금했읍니다 ...

 

유럽의 Meetecho의 개발자가 어떤 세부 방안을 적용해서 Janus 를 설계했는지 ...

일단 미디어서버의 SFU 기능인 비디오 데이터 1 : N 송수신 처리부를 어떤 세부 설계 기법으로

소스를 설계했는지 거의 대부분 분석이 되었읍니다 ...

미디어서버의 SFU 기능인 오디오 데이터 1 : N 송수신 처리부를 어떤 세부 설계 기법으로

소스를 설계했는지 조금 더 분석이 필요 합니다 ...

 

 

 

 

제 소개를 하겠읍니다 ...

 

DMBTEC       HP : 010-3350-6509      이메일 :  sayhi7@daum.net 

일인기업 (개인사업자 기업) DMBTEC 기술자문 장석원 입니다 ...

 

연락주셔도 좋읍니다 ....


HOME  :  https://dmbtec.blogspot.com/

 

DMBTEC 기술자문 분야 - 미디어서버 분야 :: 전기차 모터제어 분야 :: 로라통신 - 모드버스통신 분야

메일로 문의사항을 보내 주시면, 최대한 빠른 시간안에 검토해서 연락드리도록 하겠읍니다 ....

dmbtec.blogspot.com

 

 

 

 

 

Janus WebRTC 미디어 서버의 오픈소스가 복잡하다보니 세부적으로 보다 보니 아래의 함수들의 파악이 필요해 보입니다 ....

 

 

Janus 서버 videoroom 관련 ...

 

 

 

Janus 서버 transport 관련 ...

 

Janus 서버 event 관련 ...

 

Janus 서버 core 관련 ...

 

 

 

제 소개를 하겠읍니다 ...

 

DMBTEC       HP : 010-3350-6509      이메일 :  sayhi7@daum.net 

일인기업 (개인사업자 기업) DMBTEC 기술자문 장석원 입니다 ...

 

연락주셔도 좋읍니다 ....


HOME  :  https://dmbtec.blogspot.com/

 

DMBTEC 기술자문 분야 - 미디어서버 분야 :: 전기차 모터제어 분야 :: 로라통신 - 모드버스통신 분야

메일로 문의사항을 보내 주시면, 최대한 빠른 시간안에 검토해서 연락드리도록 하겠읍니다 ....

dmbtec.blogspot.com

 

 

 

 

 

 

 

 

 

 

 

 

 

WebRTC Janus_gateway 서버 소스의 설계 구조 소개 입니다 ...

 

 

janus-gateway GitHub 소스를 다은로드하면

 

janus-gateway 디렉토리에 있는 소스들이 Janus 서버 Core 단 소스 입니다 ...

 

그리고

janus-gateway/plugins 디렉토리에 있는 소스가 

WebRTC 미디어 서버 동작시 필요한 주요 기능들의 플러그인 함수들 입니다 ...

 

 

 

 

제 소개를 하겠읍니다 ...

 

DMBTEC       HP : 010-3350-6509      이메일 :  sayhi7@daum.net 

일인기업 (개인사업자 기업) DMBTEC 기술자문 장석원 입니다 ...

 

연락주셔도 좋읍니다 ....


HOME  :  https://dmbtec.blogspot.com/

 

DMBTEC 기술자문 분야 - 미디어서버 분야 :: 전기차 모터제어 분야 :: 로라통신 - 모드버스통신 분야

메일로 문의사항을 보내 주시면, 최대한 빠른 시간안에 검토해서 연락드리도록 하겠읍니다 ....

dmbtec.blogspot.com

 

 

 

아래는 구글의 자료인데 크롬 브라우져 WebRTC 보안인증 자료인데 살펴 보세요 ..

 

 

아래의 DTLS-sRTP 보안인증 절차 규격 자료를 참고하세요. 위의 내용과 비교 검토해 보십시요 ...

 

 

 

아래는 WebRTC 에서 DTLS-sRTP 보안설정을 하기위한 WebRTC API 로 보안을 설정한 케이스 소개 입니다 ...

 

 

 

Janus 서버 소스에는 DTLS-sRTP 로 동작시 WebRTC 보안인증을 ECDH ciphers 로 지정할 경우, 이것이 서버에서 Negotiating 처리동작을 안할수 있으니, 공통적으로 동작하는 P-256 으로 ECDH ciphers 를 설정해서 사용하는 Janus 소스자료를 첨부 합니다 ...

 

 

https://www.openssl.org/.../man3/SSL_CTX_set_tmp_dh.html

위의 OPENSSL 라이브러리 설명 사이트의 내용에서 ECDH ciphers 관련 세부 설명이 있으니 참고하시면 좋을 것 같습니다 …

 

Janus 서버 소스에서 다음과 같이 설정하고 있습니다

Specify an ECDH group for ECDHE ciphers, otherwise they cannot be negotiated when acting as the server. Use NIST's P-256 which is commonly supported.

EC_KEY *ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);

SSL_set_tmp_ecdh(dtls->ssl, ecdh);

 

자세히 검토하시면 좋을 것 같습니다 …

 

 

아래는 웹 브라우져에서 지원하는 Cipher Suites 목록인데 조금 된 자료 입니다 ...

 

 

 

 

 

 

 

 

제 소개를 하겠읍니다 ...

 

DMBTEC       HP : 010-3350-6509      이메일 :  sayhi7@daum.net 

일인기업 (개인사업자 기업) DMBTEC 기술자문 장석원 입니다 ...

 

연락주셔도 좋읍니다 ....


HOME  :  https://dmbtec.blogspot.com/

 

DMBTEC 기술자문 분야 - 미디어서버 분야 :: 전기차 모터제어 분야 :: 로라통신 - 모드버스통신 분야

메일로 문의사항을 보내 주시면, 최대한 빠른 시간안에 검토해서 연락드리도록 하겠읍니다 ....

dmbtec.blogspot.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Janus 서버의 기본 보안 설정이 DTLS-sRTP 이므로 dtls_ciphers 설정값에서 보안 암호화 방법을 얻어내고

Janus_dtls_srtp_init 함수에서 Janus 서버의 DTLS-sRTP 보안인증 초기화 처리를 합니다 ...

Janus 서버의 OPENSSL 라이브러리를 사용해서 보안인증시 selfsigned certificate 방식으로 인증서 설정 파라미터가 설정 될겁니다 ...

 

제가 파악한 부분은 여기까지 입니다 ...  

 

 

 

 

제 소개를 하겠읍니다 ...

 

DMBTEC       HP : 010-3350-6509      이메일 :  sayhi7@daum.net 

일인기업 (개인사업자 기업) DMBTEC 기술자문 장석원 입니다 ...

 

연락주셔도 좋읍니다 ....


HOME  :  https://dmbtec.blogspot.com/

 

DMBTEC 기술자문 분야 - 미디어서버 분야 :: 전기차 모터제어 분야 :: 로라통신 - 모드버스통신 분야

메일로 문의사항을 보내 주시면, 최대한 빠른 시간안에 검토해서 연락드리도록 하겠읍니다 ....

dmbtec.blogspot.com

 

 

 

 

 

 

 

제가 파악한 WebRTC  DTLS/sRTP  패킷 처리관련  JANUS 서버의 처리함수 소개 입니다 ...

 

 

 

 

 

제 소개를 하겠읍니다 ...

 

DMBTEC       HP : 010-3350-6509      이메일 :  sayhi7@daum.net 

일인기업 (개인사업자 기업) DMBTEC 기술자문 장석원 입니다 ...

 

연락주셔도 좋읍니다 ....


HOME  :  https://dmbtec.blogspot.com/

 

DMBTEC 기술자문 분야 - 미디어서버 분야 :: 전기차 모터제어 분야 :: 로라통신 - 모드버스통신 분야

메일로 문의사항을 보내 주시면, 최대한 빠른 시간안에 검토해서 연락드리도록 하겠읍니다 ....

dmbtec.blogspot.com

 

 

 

 

 

 

 

아래의 Janus 서버 오픈소스의 함수 리스트를 살펴 보시면 Janus 서버가 WebRTC 와 관련해서 어떤 동작구조로 동작하는지 파악하실수 있을 겁니다 ...

 

 

 

 

 

 

 

 

제 소개를 하겠읍니다 ...

 

DMBTEC       HP : 010-3350-6509      이메일 :  sayhi7@daum.net 

일인기업 (개인사업자 기업) DMBTEC 기술자문 장석원 입니다 ...

 

연락주셔도 좋읍니다 ....


HOME  :  https://dmbtec.blogspot.com/

 

DMBTEC 기술자문 분야 - 미디어서버 분야 :: 전기차 모터제어 분야 :: 로라통신 - 모드버스통신 분야

메일로 문의사항을 보내 주시면, 최대한 빠른 시간안에 검토해서 연락드리도록 하겠읍니다 ....

dmbtec.blogspot.com

 

 

 

 

 

Janus 미디어 서버 비디오 룸 처리 서비스중 Janus 서버의 SDP 구현 함수  

 

 

 

 

 

제 소개를 하겠읍니다 ...

 

DMBTEC       HP : 010-3350-6509      이메일 :  sayhi7@daum.net 

일인기업 (개인사업자 기업) DMBTEC 기술자문 장석원 입니다 ...

 

연락주셔도 좋읍니다 ....


HOME  :  https://dmbtec.blogspot.com/

 

DMBTEC 기술자문 분야 - 미디어서버 분야 :: 전기차 모터제어 분야 :: 로라통신 - 모드버스통신 분야

메일로 문의사항을 보내 주시면, 최대한 빠른 시간안에 검토해서 연락드리도록 하겠읍니다 ....

dmbtec.blogspot.com




 

 

 

RTP 패킷 전송부분 관련된 Janus 서버 오픈소스의 주요함수 입니다 ...

Janus 미디어서버에서는 피어단들에서 전송되는 sRTP 패킷을 수신해서 릴레이 서버역할을 하는 SFU 미디어서버 기능의 릴레이 RTP 패킷 전송부분이 제가 판단하기에 중요하다고 생각해서 아래에 주요함수를 열거했읍니다 ...

 

 

 

 

 

제 소개를 하겠읍니다 ...

 

DMBTEC       HP : 010-3350-6509      이메일 :  sayhi7@daum.net 

일인기업 (개인사업자 기업) DMBTEC 기술자문 장석원 입니다 ...

 

연락주셔도 좋읍니다 ....


HOME  :  https://dmbtec.blogspot.com/

 

DMBTEC 기술자문 분야 - 미디어서버 분야 :: 전기차 모터제어 분야 :: 로라통신 - 모드버스통신 분야

메일로 문의사항을 보내 주시면, 최대한 빠른 시간안에 검토해서 연락드리도록 하겠읍니다 ....

dmbtec.blogspot.com




 

 

 

 

 

아래에 소개된 Janus 미디어 서버 주요함수를 소개 드립니다 ...

함수명만 가지고도 Janus 미디어 서버 내부 동작이 유추가 가능하실겁니다 ....

 

 

 

 

 

제 소개를 하겠읍니다 ...

 

DMBTEC       HP : 010-3350-6509      이메일 :  sayhi7@daum.net 

일인기업 (개인사업자 기업) DMBTEC 기술자문 장석원 입니다 ...

 

연락주셔도 좋읍니다 ....


HOME  :  https://dmbtec.blogspot.com/

 

DMBTEC 기술자문 분야 - 미디어서버 분야 :: 전기차 모터제어 분야 :: 로라통신 - 모드버스통신 분야

메일로 문의사항을 보내 주시면, 최대한 빠른 시간안에 검토해서 연락드리도록 하겠읍니다 ....

dmbtec.blogspot.com




 

 

 

 

 

 

 

 

WebRTC 의 오디오 믹싱 처리에 대해 그동안 고민했던것을 정리해서 적어보려 합니다 ....

 

피어단의 SDP 협상과정 처리후 오디오 데이터도 얻을수 있는데 ...

WebRTC 는 기본적으로 sRTP(Secured RTP) Packet 으로 피어단들끼리 오디오 데이터를 주고 받읍니다 ...

sRTP 패킷은 기본으로 ECDSA 보안인증 시이퀀스에 의해 암호화 처리가 된다고 WebRTC 규격에 표시되 있읍니다 ...

여러개의 피어단의 오디오 데이터를 믹싱처리를 WebRTC 미디어서버에서 처리하려면 ....

피어단에 전송되는 오디오 패킷이 기본적으로 sRTP(Secured RTP) Packet 으로 전송되었다면

미디어 서버단에서 이를 복호화 처리를 해줘야 RTP 오디오 데이터 패킷을 얻을수 있읍니다 ...

이 RTP 패킷의 오디오 데이터의 RTP 헤더부분을 제거해줘야 원래의 오디오 데이터를 얻을수 있읍니다 ...

여기서 얻어진 원래의 오디오 데이터의 경우, 에코 캔셀레이션 과 노이즈 억압 을 처리하기 위한 WebRTC Audio 처리

제어 옵션이 인에이블 처리되면, 에코 캔셀레이션 과 노이즈 억압 기능이 브라우져 내부엔진에서 동작을 하게 됩니다 ...

이렇게 해서 얻은 오디오 데이터들은 다수의 피어단들에서 미디어서버로 전송되면 위의 과정을 거쳐 미디어서버에 전달되는데 ...  제 판단에는 여러 피어단들중  에코 캔셀레이션 과 노이즈 억압 처리를 한 오디오 데이터가 일정 쓰레숄드 이하의 오디오데이터만 가지고 있다면 그 오디오 데이터는 음성신호가 없는것으로 판단해서 오디오 데이터 믹싱시 제외하고 믹싱처리를 해주면 여러 피어단들로부터 전송된 오디오 데이터를 좀 더 안정된 음질로 오디오 데이터 믹싱 처리가 가능할것 같읍니다 ...

 

위의 내용은 오디오 데이터 처리 관련 저의 그동안의 분석 내용을 정리한것 입니다 ...

부족한 점이나 개선사항있으시면 알려주시면 감사하겠읍니다 ...

 

제 소개를 하겠읍니다 ...

 

DMBTEC       HP : 010-3350-6509      이메일 :  sayhi7@daum.net 

일인기업 (개인사업자 기업) DMBTEC 기술자문 장석원 입니다 ...

 

연락주셔도 좋읍니다 ....


HOME  :  https://dmbtec.blogspot.com/

 

DMBTEC 기술자문 분야 - 미디어서버 분야 :: 전기차 모터제어 분야 :: 로라통신 - 모드버스통신 분야

메일로 문의사항을 보내 주시면, 최대한 빠른 시간안에 검토해서 연락드리도록 하겠읍니다 ....

dmbtec.blogspot.com




 

 

 

 

 

 

 

 

 

 

 

WebRTC 미디어서버는 다수의 피어단들로부터 1 대 다 통신처리를 처리해야 합니다 ...

WebRTC 로 미디어서버를 설계시

SDP 정보에는 피어단들의 ICE 후보자 정보들이 포함되고, 또한 피어단들의 코덱 정보들이 포함됩니다 ...

SDP 정보에는 어떤 ICE 정보와 어떤종류의 코덱을 사용하는지에 대한 정보가 포함되서 시그널링 서버를 통해 서로 정보를 교환하게 됩니다 ...

STUN 서버를 통해 상대방의 피어단과 나의 네트웍 정보(ICE 후보자 정보)를 얻을수 있읍니다 ...

TURN 서버는 피어단들끼리 통신이 어려울때 TURN 서버가 피어단의 데이터를 상대 피어단으로 릴레이 전송을 하게 됩니다 ...

글로벌 대기업의 웹 브라우져에는 WebRTC 엔진이 내장되 있읍니다 ...

이 WebRTC 엔진의 API 를 사용해서 피어단 의 ICE 후보자 정보도 포함해서 SDP 정보를 획득할수 있고

또한 피어단의 코덱정보도 포함해서 SDP 정보도 얻을수 있읍니다 ...

내가 연결한 PC 의 SDP 정보를 상대방 피어단에 전송해서 나의 PC의 SDP 정보를 상대방 피어단도 서로 알수있게 한후 미디어 데이타 통신이 시작하게 됩니다 ...

WebRTC 규격에는 피어단들끼리 미디어 데이터 송수신시 sRTP(Secured RTP) Packet 으로 송수신 처리가 가능 합니다 ...

브라우져의 WebRTC 엔진의 API 로 미디어서버를 설계하려면 ...

기본적으로 WebRTC API 가 제공하는 기능인 피어단의 SDP 정보 획득 및 획득후 상대방 원격 피어단으로 SDP 정보 전송이 처리되야 하고, 피어단들은 미디어 정보가 있으니 SDP 정보에 코덱정보가 있다라고 표시해서 미디어서버로 송신하고 미디어서버는 카메라나 마이크가 없으므로 미디어데이터가 없으므로 코덱정보가 없다라고 SDP 정보를 생성해서 피어단들로부터 미디어 데이터를 미디어서버로 수신처리를 하면 피어단들의 미디어데이터를 미디어서버가 얻을수 있읍니다 ...

다자간 화상회의 구현시에는 이렇게 획득한 피어단들의 미디어 데이터 정보를 다수의 피어단들로 다시 재전송해야하는 처리를 하는것을 미디어서버중 SFU 처리 기능이라고 부르는데 이 부분의 설계가 미디어서버의 설계의 전부 다 입니다 ...

피어단들로부터 미디어서버가 미디어데이터를 가져올때, 피어단의 화면해상도를 어떤 상태로 미디어 데이터 정보를 가져오느냐에 따라 네트웍 트래픽량이 결정되므로 피어단의 화면 해상도에 따른 미디어 데이터 전송방법에 따라 최적화 방안을 검토하면 된다.

 

WebRTC 의 구현시 가장 중요한게 SDP 정보의 획득 및 이 획득된 정보를 원격 피어단들로 전송 처리하는것 인데

이 SDP 정보에는 미디어서버와 피어단이 어떤 네트웍 구성으로 서로 접속되 있고 또 어떤 코덱을 어떤 방법으로 사용할지에 대한 정보를 다 가지고있고 미디어서버와 피어단이 미디어데이터를 주고받기 위해서 사전에 필요한 서로간의 세부협상절차가 SDP 정보에 다 들어 있읍니다 ... 

 

 

제 소개를 하겠읍니다 ...

 

DMBTEC       HP : 010-3350-6509      이메일 :  sayhi7@daum.net 

HOME  :  https://dmbtec.blogspot.com/

 

DMBTEC 기술자문 분야 - 미디어서버 분야 :: 전기차 모터제어 분야 :: 로라통신 - 모드버스통신 분야

메일로 문의사항을 보내 주시면, 최대한 빠른 시간안에 검토해서 연락드리도록 하겠읍니다 ....

dmbtec.blogspot.com

일인기업 (개인사업자 기업) DMBTEC 기술자문 장석원 입니다 ...

 

연락주셔도 좋읍니다 ....

 

 

 

 



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

저는 그동안 WebRTC 설계 국제규격관련 분석 및 검토작업을 약 일년 넘게 진행했읍니다 ...

제가 개발총괄로 일하다 보니

WebRTC 규격으로 개발할때 개발 구현을 직접적으로 처리시 검토분석이 필요한 부분이 어느것이고 이것과 관련된 세부 기술이슈가 어떤것이 있고 이것을 파악하려면 어떤 부분의 세부분석자료가 필요한지 등등을 그동안 진행했읍니다 ...

WebRTC 로 다자간 화상회의 구현을 하려면

WebRTC 규격이 원래 P2P 통신이 기본 설계 개념으로 규격이 작성되 있기에 ...

1 대 다 통신을 WebRTC 로 구현하려면 미디어서버단의 구현 설계 기술이 필요하고

WebRTC 미디어서버단의 오픈소스가 Janus 서버가 있고 ...

이 Janus 오픈소스로 커스토마이징 설계해서 국내의 업체가 화상회의 구현을 상용화 출시를 했읍니다 ...

Janus 오픈소스도 오픈소스다 보니 개발에 참조해서 개발하라는 소스이지 최적화해서 개발한 소스는 아니라서

국내의 업체가 개발한 WebRTC 화상회의 구현도 Janus 소스로 하다 보니 상용화이후 개선이 필요한 부분의 개발이

필요하기에 미디어서버 오픈소스인 Janus 서버의 내부 동작원리를 정확히 파악해야만 미디어서버의 동작성능을

최적화한 구현이 가능해 집니다 ...

 

제가 그동안 일년반동안 WebRTC 관련규격들을 검토분석하다보니 느낀건데 ...  가장 중요한 부분은 ...

WebRTC 규격이 어떤 동작구조로 세부적으로 동작하는지 파악해야 하는데 이것을 제대로 파악하려면

국내 어느 업체라 해도 세부분석에 시간투자없이는 쉽게 파악이 안되서 세부진행시 결코 쉽지않습니다 ...

 

다자간 화상회의 구현시 핵심은

피어단들과 미디어서버단과 다중통신 처리를 네트웍 트래픽을 최소화해서 구현하려면

미디어서버의 다중통신 처리 부분설계시 피어단과 서로 어떻게 서로 협상절차를 진행해야

가장 최적의 통신 트래픽 구현이 가능한지가 핵심인데 ...

검토해야할 설계 포인트가 몇가지가 있는데 이것을 어떻게 처리해서 최적의 통신 트래픽을 구현하는가가 핵심인데

국내의 각 업체마다 설계 포인트가 각각 다르기 때문에 개발업체별로 미디어서버의 통신 트래픽 처리 성능도

업체별로 성능이 다 다른 구조 입니다 ...

 

저도 기본적으로 그동안 일년 넙게 검토분석을 했기 때문에

미디어서버의 트래픽을 최소화하기 위한 제가 생각하는 설계 구현안을 갖고 있읍니다 ...

 

WebRTC 규격이 한가지만 검토하면 되는게 아니고 최소 10 가지를 동시에 검토분석을 해야 세부적인 구현을 위한

검토가 가능하고, WebRTC 규격이 그동안 10 여년동안 시간이 흐르면서 전에 제정된 규격의 미비점을 보완한 규격 수정작업이 그동안 진행됬읍니다 ...

WebRTC 규격을 이해하려면 WebRTC 규격이 그동안 10 년동안 어떤 방향성을 갖고 규격이 발전된 방향으로 수정작업이 진행됬는지 WebRTC 규격의 성능개선을 위한 개선작업의 히스토리의 이해도 필요합니다 ...

 

제 소개를 하겠읍니다 ...

 

DMBTEC       HP : 010-3350-6509      이메일 :  sayhi7@daum.net 

HOME  :  https://dmbtec.blogspot.com/   기술자문 장석원 입니다 ...

 

DMBTEC 기술자문 분야 - 미디어서버 분야 :: 전기차 모터제어 분야 :: 로라통신 - 모드버스통신 분야

메일로 문의사항을 보내 주시면, 최대한 빠른 시간안에 검토해서 연락드리도록 하겠읍니다 ....

dmbtec.blogspot.com

 

 

 

 

 

 

 

저는 요즘 일본회사 기술고문 계약을 6 개월 마치면서 요즘 WebRTC 다자간 화상회의 설계 나 K POP 스타 공연실황 방송 플랫폼 설계쪽을 공부하면서 분석중 입니다 ...  제 글이 부족한 점 있으시면 의견 주시면 감사하겠읍니다 ...

 

K-POP 플랫폼 설계중 K POP 스타의 공연실황을 전세계 구독자에게 방송하기 위한 플랫폼 설계에 대해 이야기해 보려 합니다 ...   

수천만명의 구독자가 방송 시청을 구현하려면 멀티캐스트 통신에 대해 분석이 필요 합니다 ...

제 생각을 말씀드려 보겠읍니다 ...

구독자가 멀티캐스트 통신을 하려면 구독자가 집이든 회사든 공유기에 접속된 PC 에 접속하고 있을 겁니다 ...

공유기에 접속된 PC 가 멀티캐스트 통신을 하려면 공유기가 IGMP 프로토콜을 지원해야만 멀티캐스트 통신이 가능 합니다 ...  만일 공유기가 IGMP 프로토콜을 지원치 않는다면 공유기로 IGMP 패킷에 그룹주소를 명기해서 IGMP 프로토콜을 지원하는 라우터로 전송이 필요 합니다 ... 이때 공유기가 유니캐스트 통신만을 지원할 경우 유미캐스트로 캡슐화된 IGMP 패킷을 전송해서 IGMP 프로토콜을 지원하는 라우터까지 전달된후 유니캐스트로 캡슐화된 패킷을 다시 멀티캐스트 트래픽으로 변환하는 과정을 멀티캐스트 터널링 제어 기술이라고 하고 저는 이 터널링 제어 기술이 K POP 플랫폼 설계 기술의 가장 핵심이라고 판단 합니다 ...

이때 필요한 기술이 멀티캐스트 백본 기술 입니다 ...    이것은 멀티캐스트 터널링으로 호스트들을 접속 가능하게 해주는 가상 멀티캐스트 네트웍 기술이 필요 합니다 ...

멀티캐스팅 데이터가 225.100.1.7 에서 225.100.1.8 로 전송하고 수신할 경우 ...

멀티캐스트 225.100.1.8 에 접속된 구독자들이 라우터로부터 IGMP 데이터 패킷을 받기 위해서는 IGMP 패킷에 멀티캐스트 그룹주소 225.100.1.7 을 명기해서 라우터로 전송하게 되고 라우터는 멀티캐스팅 라우팅 테이블을 검토해서 어느 구독자로 데이터를 보내야할지를 알수있게 됩니다 ... 

 

저도 아직 100 % 확실하게 파악된것은 아니고 아 이렇구나 라는것을 이해할 정도는 파악하고 있읍니다 ...

 

저도 K POP 플랫폼 공연실황 방송 부분 설계기술을 사업화하려고 공부중이고요

가장 핵심이 멀티캐스트 터널링 제어 기술이라고 생각 합니다 ...

 

제 소개를 하겠읍니다 ...

 

DMBTEC  10 년을 유지해 온 일인기업 개인사업자 기업 입니다 ...

HOME :  https://dmbtec.blogspot.com/     57 세 장석원 개발총괄 입니다 ...

 

DMBTEC - ( 카메라 / 블루투스 / WIFI / LTE / LoRa/ Motor Control ) 임베디드리눅스 / STM32 펌웨어 개발

메일로 문의사항을 보내 주시면, 최대한 빠른 시간안에 검토해서 연락드리도록 하겠읍니다 ....

dmbtec.blogspot.com

E-Mail :  sayhi7@daum.net    DMBTEC 개발총괄 장석원 입니다 ....

 

관련 내용 위의 메일주소로 연락주셔도 좋읍니다 ...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Skills

· 오픈소스 WebRTC 미디어서버 세부 기술자문 및 개발용역 분야 커스토마이징 개발 가능

· 카메라센서 3A 튜닝 세부기술 자문 및 개발용역 분야 커스토마이징 개발 가능

· 인공지능 딥러닝 구현 세부기술 자문 및 개발용역 분야 세부 분석 경험 있음 (약 70 % 분석 성공)

· 저전력 장거리 통신방식인 로라통신 세부기술 기술자문 및 개발용역 분야 커스토마이징 개발 가능

· 임베디드리눅스 커널 이미지센서 및 ISP 드라이버 수정설계 분야 커스토마이징 개발 가능

· 임베디드리눅스 커널 WIFI 칩셋 드라이버 포팅 및 소켓 송수신 어플 설계 분야 커스토마이징 개발 가능

 

Experiences

· Image 센서 및 ISP 리눅스커널 드라이버 및 3A 튜닝 수정설계 및 자문분야

  - 이미지센서 Exposure 제어 처리구조 및 커스토마이징 설계 가능

  -  Image 센서 및 ISP 리눅스커널 리눅스커널 드라이버 수정설계 세부 구현 노하우 파악성공

· WebRTC Janus 오픈소스 미디어서버 수정설계 및 자문분야

  - Janus 오픈소스 미디어서버 세부 소스  커스토마이징 설계 가능

  - Janus 오픈소스 미디어서버 대용량 서비스로 확장설계 세부 구현 노하우 파악성공

· 인공지능 딥러닝 구현 세부기술 자문 및 개발용역 및 자문분야

  - 딥러닝 음성합성 모델인 Tacotron 및 Fastspeech 모델 세부 설계구조 70 % 파악 성공

  - 딥러닝 GAN 모델중 StyleGAN 모델 세부 설계구조 70 % 파악 성공

· 저전력 장거리 통신방식인 로라통신 세부기술 기술자문 및 개발용역 분야

   - SemTech 사 LoRa 통신 칩셋으로 국제 LoRa 통신 규격대로 Class A 통신 구현 노하우 보유

   - LoRa 통신 칩셋으로 국제 LoRa 통신 규격대로 Class A 통신 구현시 보안인증 절차 70 % 파악 성공

· WIFI 통신 세부기술 기술자문 및 개발용역 분야

   - 리눅스커널에서 네트웍 프로토콜 스택 부분중 데이타 통신을 위한 Socket 통신부 설계구조 60 % 파악 성공

   - 리눅스커널에서 네트웍 프로토콜 스택 부분중 데이타 통신을 위한 드라이버 포팅 및 

     Socket 송수신부 커스토마이징 설계 노하우 파악 성공

 

Programming Languages

- Linux Kernel Device Driver 수정설계 및 Linux 어플 수정설계 능력 보유

- Linux GCC Cross-Compiler 개발환경 셋팅 및 개발환경에서 드라이버 및 어플 개발 가능

 

 

위의 분야 기술개발 및 기술자문 협의 요청주시면 협의후 기술자문 및 개발용역 진행이 가능한 상태 입니다 ...

 

DMBTEC  대표/기술자문 총괄  장석원 입니다 ...

HP :  010-3350-6509

E-Mail  :   sayhi7@daum.net   

위의 자문분야 기술자문 및 개발용역 관련 문의를 위의 연락처로 연락 부탁드립니다 ...


'Kernel Porting > Android 관련' 카테고리의 다른 글

Android 2.2 Froyo Stagefright Source Location ....  (0) 2010.06.27
http://android.git.kernel.org/?p=platform/frameworks/base.git;a=tree;f=media;h=91e2a760e992342cd01359e8bd3ad35022ddaafc;hb=HEAD

위의 사이트를 자세히 살펴 보시면
Android 2.2 Froyo Stagefright Codec Source 를 찾으실수 있읍니다 ...

참고하시기를 ...


'Kernel Porting > Android 관련' 카테고리의 다른 글

안드로이드 파일시스템 구조 ...  (0) 2011.02.23
자료출처 : http://microsoft-personal-operating-systems.hostweb.com/TopicMessages/microsoft.public.windowsce.embedded/2095530/1/Default.aspx

I placed eboot at the start of Flash chip whose physical addreass base is
0x60000000, and place Os image at 0x60080000. In the Bootloadermain() I
added the following code:

case BL_JUMP:
// (5) final call to launch the image. never returned

if((dwAction == BL_JUMP)&&(dwLaunchAddr == 0))
{
EdbgOutputDebugString("marviny -- BL_JUMP mode returned from
OEMPreDownload()!!!!\n");
dwLaunchAddr = 0x60080000;
EdbgOutputDebugString("So we JUMP to default address at 0x%X...\r\n",
dwLaunchAddr);
//
// Delay 1 Millisecond to flush the Uart fifo and stop the UART.
//
if(bEthLaunch)
{
DelayInuSec(1000);
// OEMUartStop();
}

((PFN_LAUNCH)(dwLaunchAddr))();

EdbgOutputDebugString("SpinForever...\r\n");
SPIN_FOREVER;
}

There is no Launch() function in my Bsp, but there is a typedef:

typedef VOID (*PFN_LAUNCH)(VOID);

'Kernel Porting > Windows 관련' 카테고리의 다른 글

WINCE 어드레스 맵핑 ....  (0) 2008.02.08



// BANK_A BOOT AREA
#define  OEM_MEM_BOOTLOADER_START  0x00000000
#define  OEM_MEM_BOOTLOADER_SIZE  0x200
#define  OEM_MEM_BOOTLOADER_SAVE_START  0x00008000
#define  OEM_MEM_BOOTLOADER_SAVE_SIZE  0x200
#define  OEM_MEM_PAGE_TABLE_START  0x00010000
#define  OEM_MEM_PAGE_TABLE_SIZE  0x1000
#define  OEM_MEM_BOOTARG_START  0x00018000
#define  OEM_MEM_BOOTARG_SIZE  0x600
#define  OEM_MEM_MBOOT_START  0x00020000
#define  OEM_MEM_MBOOT_SIZE  0x3f800
#define  OEM_MEM_IMAGE_SHARE_ARGS_PA_START  0x00080000
#define  OEM_MEM_IMAGE_SHARE_ARGS_PA_SIZE  0x180000
#define  OEM_MEM_OSIMAGE_START  0x80200000
#define  OEM_MEM_NANDSAVE_BUFFER_START  0x83900000


#include <windows.h>

#include <bsp.h>

typedef void (ApplicationFunction)(void);
#define ApplicationStart ((ApplicationFunction*)OEM_MEM_MBOOT_START)

extern"C"
extern void ReadNand( unsigned int* Dst, unsigned int NANDPage, int Size4 );

extern"C"
void BootMain(void)
{
 // Nand use fixed power
 // Nand interface is not shared any gpio
 // NAND_nWP seted to Low ( only read, write protected ) but Anything will do.
 //--------------------------------------------------------------------------
 // Read copy from NAND Flash
 ReadNand( (unsigned int*)OEM_MEM_MBOOT_START, OEM_NAND_MBOOT_START, OEM_NAND_MBOOT_SIZE);

 for (register int i=0; i<OEM_NAND_BOOTLOADER_SIZE; i++)  //copy bootloader except cpu vectors area for nand save
  *(unsigned char*)(i+OEM_MEM_BOOTLOADER_SAVE_START)= *(unsigned char *)(i);

 //--------------------------------------------------------------------------
 // go to MultiBootloader
 ApplicationStart();
}




OEM_SYSTEM_ADDRTABLE.h

// Virtual,  Physical,  Size(MB)
// Hole Space Address
 0x80000000,  0x00000000,    64,   // BANK_A
 0x88000000,  0x40000000,    32,   // BANK_B
 0x90200000,  0x80000000,     1,   // nSCS0
 0x90300000,  0x84000000,     1,   // nSCS1
 0x90400000,  0x88000000,     1,   // nSCS2
 0x90500000,  0x8c000000,     1,   // DTK:EthernetI/O
 0x90600000,  0x8d000000,     1,   // DTK:EthernetMem
 0x90700000,  0x8e000000,     1,   // DTK:SRAM
 0x90800000,  0x8f000000,     1,   // DTK:Debug
 0x90900000,  0x9c000000,     1,   // NANDFlash
 0x94000000,  0xa0000000,    64,   // PCMCIA#0IO
 0x98000000,  0xa4000000,    64,   // PCMCIA#1
 0x9c000000,  0xa8000000,    64,   // PCMCIA#0MEM
 0x90a00000,  0xbc000000,     1,   // IDE
 0x90000000,  0xc0000000,     1,   // NOMALIO
 0x90100000,  0xe0000000,     1,   // FASTIO
 0,



#include <windows.h>
#include <mes_mp2530f.h>
#include <OEM_SYSTEM.h>

const DWORD g_oalAddressTable[] = {
 #include "OEM_SYSTEM_ADDRTABLE.h"
};

extern void KernelStart(PDWORD pAddress);

void BootMain(PDWORD pAddressTable)
{
 KernelStart(pAddressTable);
}






자료출처 : http://www.kelp.or.kr

== 다시 나온 pixel 찍기 소스
===============================
/*
* fbpixel2.c : Frame buffer draw pixel example(using mmap)
*
* Copyright(C) 2002 holelee
*
*/

#include <stdio.h>
#include <stdlib.h> /* for exit */
#include <unistd.h> /* for open/close .. */
#include <fcntl.h> /* for O_RDWR */
#include <sys/ioctl.h> /* for ioctl */
#include <sys/mman.h> /* for mmap */
#include <linux/fb.h> /* for fb_var_screeninfo, FBIOGET_VSCREENINFO */

#define FBDEVFILE "/dev/fb"

typedef unsigned char ubyte;

unsigned short makepixel(ubyte r, ubyte g, ubyte b)
{
return (unsigned short)(((r>>3)<<11)|((g>>2)<<5)|(b>>3));
}

int main()
{
int fbfd;
int ret;
struct fb_var_screeninfo fbvar;
unsigned short pixel;
int offset;
unsigned short *pfbdata;

fbfd = open(FBDEVFILE, O_RDWR);
if(fbfd < 0)
{
perror("fbdev open");
exit(1);
}

ret = ioctl(fbfd, FBIOGET_VSCREENINFO, &fbvar);
if(ret < 0)
{
perror("fbdev ioctl");
exit(1);
}

if(fbvar.bits_per_pixel != 16)
{
fprintf(stderr, "bpp is not 16\n");
exit(1);
}

pfbdata = (unsigned short *) mmap(0, fbvar.xres*fbvar.yres*16/8, PROT_READ|PROT_WRITE, MAP_SHARED, fbfd, 0);

if((unsigned)pfbdata == (unsigned)-1)
{
perror("fbdev mmap");
exit(1);
}

/* red pixel @ (0,0) */
pixel = makepixel(255,0,0); /* red pixel */
*pfbdata = pixel;

/* green pixel @ (100,50) */
offset = 50*fbvar.xres+100;
pixel = makepixel(0,255,0); /* green pixel */
*(pfbdata+offset) = pixel; /* draw pixel */


/* blue pixel @ (50,100) */
offset = 100*fbvar.xres+50;
pixel = makepixel(0,0,255); /* blue pixel */
*(pfbdata+offset) = pixel; /* draw pixel */

/* white pixel @ (100,100) */
offset = 100*fbvar.xres+100;
pixel = makepixel(255,255,255); /* white pixel */
*(pfbdata+offset) = pixel; /* draw pixel */

munmap(pfbdata, fbvar.xres*fbvar.yres*16/8);
close(fbfd);
exit(0);
return 0;
}

+ Recent posts