0.1.27 • Published 2 years ago

@pplink/media-infra-client v0.1.27

Weekly downloads
183
License
UNLICENSED
Repository
github
Last release
2 years ago

@pplink/mediasoup-client

Structure

MediaInfraClient

  • media-infra-client 외부에서 직접적으로 사용하도록 유도된 대표 클래스

MediaDevice

  • mediasoup-clientDevice 를 래핑
    • Device: 하나의 MR에 대한 RTP 연결을 담당
    • 현재는 한개의 MR과만 연결되고 한개의 Device만 생성함.

MediaSignalingService

  • MA와의 소켓 메시징 담당

ProduceManager

  • 송출중인 트랙을 관리
  • 네트워크가 끊기더라도 기억했다가 다시 송출
  • Pause, Resume, Close 등 한번 송출한 트랙에 대한 작업들을 하도록 노출되는 클래스

ConsumeManager

  • 수신중인 트랙을 관리
  • 네트워크가 끊기는 경우 파괴된 후 새롭게 만들어진다 (기존 인스턴스 사용 불가)
  • Pause, Resume을 통해 일시정지, 다시 수신가능

연결흐름

MIC 사용 시작하기

  1. 유저가 고객사 서비스(페이지콜)에 접속
  2. 고객사 서버에서 MA에 접속 요청 → MA는 인증 후 토큰 발급. 발급된 토큰 정보는 Session 테이블에 3일동안 저장, 이후 만료됨
  3. 고객사 클라이언트에서 이 토큰을 넣어 MIC 사용

    // 2. PCA Server
    const { url, token } = await fetch("https://media.pplink.io/v1/api/connect");
    return {
      statusCode: 200,
      body: { url, token }
    };
    
    // 3. PCA Client
    const { url, token } = await fetch("https://pagecall.io/connect");
    const mic = new MediaInfraClient(url, token);

MIC 생성 직후 준비작업

소켓 연결

  • 미디어는 UDP(RTP)로 교환되지만, 어디로 어떻게 보내야 하는지, 다른 어떤 미디어를 받아야 하는지에 대한 정보는 직접 구현한 시그널링으로 교환 해주어야 한다. (여기서는 WebSocket 이용)
    • RTP Capabilities 교환하고 결정된 내용을 바탕으로 transport 생성
    • MR이 클라이언트끼리 서로 produce, consume할 수 있는지 조율 → 거의 발생하지 않으나 browser에서 지원하는 코덱의 종류에 따라 실패할 수 있음
  • MA가 MR과 클라이언트 사이의 필요한 정보 교환을 중개해준다.
  • MIC가 생성되자마자 넣어준 URL, Token으로 소켓연결 요청을 보냄
  • MA는 토큰을 확인해 허가된 유저일 경우 연결을 맺고, 그렇지 않으면 끊어버림

RTP Capabilities 교환

  • RTP capabilities
    • 코덱, RTP Header Extension
      • 서버 또는 클라이언트가 받을 수 있는 코덱, extension이 무엇인지 명세된 정보이다.
  • RTP parameters
    • 코덱, RTP Header Extension, 인코딩, RTCP
      • 보내는 미디어의 코덱과 extension등이 어떻게 설정되어 있는지에 대한 정보이다.
    • RTP send parameters: Producer가 서버에 보내는 내용
    • RTP receive parameters: Consumer가 서버에게 받는 내용
  • 보내는 사람은 받는 사람의 RTP capabilities를 알아야 뭘 보내줄 지 정할 수 있음
    • MIC는 MR의 RTP cap을 알아야 어떻게 전송해야 하는지 결정할 수 있음
    • MR은 MIC의 RTP cap을 알아야 어떻게 전송해야 하는지 결정할 수 있음
  • RTP capabilties의 교환이 필요하다 → 연결이 되자마자 MR은 자신의 RTP capabilities를 알려주면서 MIC에게도 알려달라고 요청함

Produce and Consume

Produce

  • 미디어를 보내는 행위를 Produce라고 함
  • MIC.produceTrack 을 호출해 트랙 송출을 시작

Consume

  • 미디어를 받는 행위를 Consume이라고 함
  • 받을 준비가 되었다는 메시지를 보내야 Consume이 시작된다. MIC.listenTrack
  • MIC.listenTrack 함수에 콜백함수를 넣어 이후 생성되는 ConsumeManager를 subscribe 할 수 있음.

Record

  • produceTrack을 통해 생성된 ProduceManager에서 startRecord, stopRecord를 통해 녹화 시작, 중단 가능.
0.1.27

2 years ago

0.1.26

2 years ago

0.1.26-test0

2 years ago

0.1.26-test1

2 years ago

0.1.25-test

2 years ago

0.1.24-test0

2 years ago

0.1.25

2 years ago

0.1.24

2 years ago

0.1.23-devneo

3 years ago

0.1.23

3 years ago

0.1.22

3 years ago

0.1.21-neo0

3 years ago

0.1.20-devneo

3 years ago

0.1.20

3 years ago

0.1.21

3 years ago

0.1.19

3 years ago

0.1.18

3 years ago

0.1.17

3 years ago

0.1.16-neo

3 years ago

0.1.16-neo3

3 years ago

0.1.16-neo4

3 years ago

0.1.16-neo5

3 years ago

0.1.16-neo6

3 years ago

0.1.16-neo7

3 years ago

0.1.16-neo2

3 years ago

0.1.15

3 years ago

0.1.16

3 years ago

0.1.14-devneo1

3 years ago

0.1.14

3 years ago

0.1.13

3 years ago

0.1.12

3 years ago

0.1.11

3 years ago

0.1.10

3 years ago

0.1.9

3 years ago

0.1.9-dev1

3 years ago

0.1.9-dev0

3 years ago

0.1.8

3 years ago

0.1.8-dev1

3 years ago

0.1.8-dev2

3 years ago

0.1.8-dev0

3 years ago

0.1.7

3 years ago

0.1.6

3 years ago

0.1.5-devneo2

4 years ago

0.1.5-devneo1

4 years ago

0.1.5-dev1

4 years ago

0.1.5-dev0

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.1-dev2

4 years ago

0.1.1-dev0

4 years ago

0.1.1-dev1

4 years ago

0.1.0

4 years ago

0.1.0-dev2

4 years ago

0.1.0-dev1

4 years ago

0.0.36

4 years ago

0.0.36-dev8

4 years ago

0.0.36-dev7

4 years ago

0.0.36-dev4

4 years ago

0.0.36-dev6

4 years ago

0.0.36-dev3

4 years ago

0.0.36-dev2

4 years ago

0.0.36-dev1

4 years ago

0.0.36-dev0

4 years ago

0.0.35-dev0

4 years ago

0.1.0-dev0

4 years ago

0.0.35

4 years ago

0.0.34

4 years ago

0.0.33

4 years ago

0.0.33-rc1

4 years ago

0.0.33-rc0

4 years ago

0.0.32

4 years ago

0.0.31

4 years ago

0.0.30

4 years ago

0.0.29-dev2

4 years ago

0.0.29-dev1

4 years ago

0.0.29-dev0

4 years ago

0.0.29

4 years ago

0.0.27

4 years ago

0.0.28

4 years ago

0.0.26

4 years ago

0.0.25

4 years ago

0.0.24

4 years ago

0.0.23

4 years ago

0.0.23-dev.1

4 years ago

0.0.23-dev.0

4 years ago

0.0.22

4 years ago

0.0.21

4 years ago

0.0.20

4 years ago

0.0.19

4 years ago

0.0.18

4 years ago

0.0.15

4 years ago

0.0.16

4 years ago

0.0.17

4 years ago

0.0.14

4 years ago

0.0.13

4 years ago

0.0.11

4 years ago

0.0.10

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago