WHPP(WebRTC HTTP 재생 프로토콜)

7341 단어 webrtc
브로드캐스트와 같은 비회의 시나리오에 대한 WebRTC 기반 미디어 스트리밍에 대한 관심이 증가함에 따라 RTC 세션 설정의 일부 측면을 표준화하고 이러한 시나리오에 대해 특별히 신호를 보낼 필요가 있습니다. 세션 설정 중에 SDP 제공 및 응답을 교환하는 메커니즘은 WebRTC 표준의 일부가 아니기 때문에 브로드캐스트 시나리오를 위해 WebRTC 기반 미디어 스트림을 수집하고 재생하기 위해 미디어 서버와 상호 작용하는 일반적인 방법이 없습니다.

우리는 종단 간 WebRTC 기반 스트리밍 솔루션의 POC 구현을 만들기 위해 노력해 왔습니다. 여기에는 WHIP 프로토콜을 기반으로 하는 클라이언트 및 서버 구성 요소와 미디어 서버 독립 WebRTC 브로드캐스트 플레이어가 포함됩니다.

그 작업의 일환으로 WebRTC HTTP 재생 프로토콜(WHPP)이라고 하는 WebRTC 기반 브로드캐스트 스트림을 소비하기 위해 재생 클라이언트 뷰어 세션을 협상하기 위한 HTTP 기반 프로토콜을 제안하고 있습니다.

이 제안은 살펴보고 피드백을 제공하려는 모든 사람을 위해 GitHub에서 사용할 수 있습니다: https://github.com/Eyevinn/webrtc-http-playback-protocol

또한 https://web.whip.eyevinn.technology/에서 실행 중인 수집 및 재생 구성 요소의 데모도 있습니다.

프로토콜 개요



재생 클라이언트는 서버 끝점에 POST 요청을 보내 세션을 시작합니다. 서버는 SDP 제안으로 응답합니다.

async connect() {
    const response = await fetch(channelUrl.href, {
        method: "POST",
        headers: {
          "Content-Type": "application/json"
        },
        body: '{}'
    });

    if (!response.ok) {
        return;
    }

    const offerResponse = await response.json();
    const locationHeader = response.headers.get('location');
    resourceUrl = new URL(locationHeader);

    await localPeer.setRemoteDescription({
        type: 'offer', 
        sdp: offerResponse.offer
    });

    const answer = await localPeer.createAnswer();
    await localPeer.setLocalDescription(answer);
}


클라이언트는 SDP 응답을 서버로 다시 전송하여 세션 설정을 완료합니다.

async sendAnswer() {
    const answerRequest = {
        answer: localPeer.localDescription.sdp
    }

    const response = await fetch(resourceUrl.href, {
        method: "PUT",
        headers: {
          "Content-Type": "application/json"
        },
        body: JSON.stringify(answerRequest)
    });
}


이 프로토콜(및 WHIP)의 의도는 HTTP를 통한 단일 SDP 교환으로 가능한 한 간단하게 세션 설정을 만드는 것입니다. 모든 미디어 스트림은 SDP에서 발표되어야 하며 서버만이 어떤 미디어 스트림이 전송되는지 알고 있습니다. 따라서 서버는 항상 SDP 제안을 보내는 쪽이고 재생 클라이언트는 SDP 응답을 보내는 쪽입니다.

연결


  • WHIP 클라이언트 및 서버 구현: https://github.com/Eyevinn/whip
  • 미디어 서버 독립 WebRTC 브로드캐스트 플레이어: https://github.com/Eyevinn/webrtc-player
  • WHPP 프로토콜 제안: https://github.com/Eyevinn/webrtc-http-playback-protocol

  • 아이빈 테크놀로지 소개



    Eyevinn Technology는 비디오 및 스트리밍을 전문으로 하는 독립 컨설턴트 회사입니다. 플랫폼이나 기술 공급업체와 상업적으로 연결되어 있지 않은 방식으로 독립적입니다.

    Eyevinn에서 모든 소프트웨어 개발자 컨설턴트는 오픈 소스 개발 및 오픈 소스 커뮤니티에 대한 기여를 위해 예약된 전용 예산을 가지고 있습니다. 이것은 우리에게 혁신, 팀 구성 및 개인 역량 개발을 위한 여지를 제공합니다. 또한 회사로서 오픈 소스 커뮤니티에 다시 기여할 수 있는 방법을 제공합니다.

    Eyevinn에 대해 더 알고 싶고 여기서 일하는 방법을 알고 싶습니다. [email protected] 로 연락주세요!

    좋은 웹페이지 즐겨찾기