Skip to content

11 19 회의

Seungheon Han edited this page Nov 30, 2024 · 1 revision

썸네일 생성 흐름 가설


흐름

  1. Room 생성

    • 사용자가 방송 송출을 위해 Room을 생성.
  2. Producer 생성

    • Room에 대해 createProducer() 호출:
      • Video Producer 생성.
      • Audio Producer 생성.
  3. PlainTransport 생성

    • Producer 생성 시, 미디어 스트림 전송을 위해 PlainTransport를 새로 생성.
  4. Consumer 생성

    • PlainTransport에서 Consumer를 생성:
      • Video Producer만 사용하여 Consumer 생성.
  5. Record 서버로 데이터 전송

    • PlainTransport를 통해 Record 서버에 미디어 스트림 데이터 전송.
  6. 썸네일 생성

    • Record 서버:
      1. 미디어 스트림 데이터를 수신.
      2. FFmpeg를 사용해 프레임 캡처.
      3. 캡처된 이미지를 Object Storage에 저장.

주요 로직

Producer 생성 시점

  • createProducer() 호출 시 PlainTransport를 생성:
    • Video ProducerAudio Producer가 각각 생성됨.

PlainTransport에서 Consumer 생성

  • PlainTransport에서 Consumer를 생성할 때 Video Producer만 사용:
    • consumerService.createConsumers() 메서드로 Consumer 생성.
    • 예제 코드:
      // 단일 Consumer 생성
      this.consumer.createConsumer();
      
      // 여러 Producer로 Consumer 생성
      const [consumer] = this.consumer.createConsumers([producer]);

Transport 연결

  • transport.connect() 호출로 Record 서버와 연결.
  • 이후 Record 서버는 데이터를 처리하고 썸네일 생성 작업 수행.

요약

  • PlainTransport와 Consumer 생성:

    • Video Producer를 활용해 Consumer를 생성.
    • Consumer 생성 후 Record 서버와 Transport 연결.
  • 썸네일 생성:

    • Record 서버에서 미디어 스트림 데이터를 받아 FFmpeg으로 처리.
    • 생성된 썸네일을 Object Storage에 저장.

👥 팀 강점

🧑‍💻 개발 일지

📌 ALL

📌 FE

📌 BE

💥 트러블 슈팅

📌 FE

📌 BE

🤔 고민

📚 학습 정리

📌 김광현

📌 백지연

📌 전희선

📌 한승헌

🤝 회의록

🗒️ 데일리 스크럼

💬 팀 회고


👨‍👩‍👧‍👦 소개

🌱 문화

🔨 기술 스택

⚙️ 서비스 아키텍쳐

🚧 CI/CD

🌊 Flow

💭 6주를 보내면서

Clone this wiki locally