프로젝트 소개

P2P Media Loader는 웹 브라우저 페이지에서 라이브 및 주문형 비디오를 피어 투 피어로 전송하기 위한 오픈소스 JavaScript 라이브러리입니다. HTML5 video, WebRTC 데이터 채널, Media Source Extensions와 같은 브라우저 기술을 사용하며, 플러그인이나 애드온 없이 널리 쓰이는 HTML5 플레이어와 통합됩니다. 이 라이브러리는 흔히 P2P CDN, 하이브리드 CDN, 멀티 CDN, P2PTV 또는 엔터프라이즈 CDN(eCDN)으로 불리는 대규모 P2P 메시 네트워크를 구축하도록 설계되었습니다. 동일한 HLS 또는 MPEG-DASH 스트림을 시청하는 시청자들은 미디어 세그먼트를 실시간으로 공유할 수 있으며, 이를 통해 오리진 서버와 CDN의 부하를 줄이고 대역폭 비용을 낮추며 사용 가능한 총 대역폭을 늘릴 수 있습니다. 주요 기능: - 적응형 비트레이트 스트리밍을 포함해 HLS 또는 MPEG-DASH를 통한 라이브 및 VOD 스트림을 지원합니다. - Hls.js 및 Shaka Player 엔진과 함께 작동하며, 라이브러리 API와의 사용자 정의 통합을 통해 Vidstack, Clappr, MediaElement, Plyr, DPlayer, OpenPlayerJS, PlayerJS 같은 플레이어와 통합할 수 있습니다. - 최신 데스크톱 및 모바일 브라우저에서 실행됩니다: Chrome, Firefox, Safari(macOS, iPadOS, iOS 17.1+), Windows의 Edge. 또한 네이티브 iOS 및 Android 앱에 내장하고 네이티브 플레이어와 함께 사용할 수도 있습니다. - 간단한 구성에서는 서버 측 소프트웨어가 필요하지 않습니다. 기본적으로 공용 WebTorrent 트래커와 공용 STUN 서버를 사용합니다. 더 큰 규모의 배포에서는 wt-tracker, Aquatic, OpenWebtorrent Tracker, bittorrent-tracker 같은 오픈소스 구현을 사용해 전용 트래커를 운영할 수 있습니다. 작동 방식: 라이브러리를 실행하는 각 브라우저 인스턴스는 피어 역할을 합니다. 처음에는 빠른 재생 시작을 위해 미디어 세그먼트를 소스 서버나 CDN에서 HTTP(S)로 가져옵니다. 그런 다음 라이브러리는 스트림 세부 정보와 ICE 후보를 WebTorrent 트래커에 알리고, 같은 스트림을 시청하는 피어 목록을 받아 연결한 뒤 피어로부터 추가 세그먼트를 다운로드하고 이미 가진 세그먼트를 공유합니다. 사용 가능한 피어가 없으면 기존 스트림처럼 HTTP(S)를 통해 계속 다운로드합니다. 이 프로젝트는 코어, Hls.js 통합, Shaka Player 통합을 위한 npm 패키지와 구형 브라우저 및 스마트 TV를 위한 ES 모듈 및 IIFE CDN 빌드를 제공합니다. 문서에는 API 문서, 웹 및 네이티브 모바일 통합 가이드, v3에서 v4로의 마이그레이션 가이드, 데모, FAQ, 기술 개요가 포함됩니다. 관련 소프트웨어로는 고성능 WebTorrent 트래커가 있습니다.