IPFS 비디오 스토리지 기반 온라인 비디오 웹사이트

IPFS 분산 스토리지 네트워크 기반의 비디오 온라인 재생 웹사이트

프로젝트 코드 클라우드 주소: https://gitee.com/baldness_and_coldness/ipfs_streaming

1. IPFS 소개

IPFS는 완전히 새로운 하이퍼미디어 텍스트 전송 프로토콜로 대상은 Http 하이퍼텍스트 전송 프로토콜이지만 Http 프로토콜과 달리 IPFS 프로토콜은 분산형 프로토콜입니다.

탈중앙화란?

중앙화와 탈중앙화

중앙화 : 모든 데이터는 중앙 서버에 저장되며 모든 클라이언트는 중앙 서버에서 서비스를 요청해야 합니다.

장점 : 높은 데이터 보안, 기능 구현 용이

단점 : 중앙 서버에 대한 의존도가 높음, 단일 장애 지점이 발생하기 쉬움, 성능 병목 현상

탈중앙화 : 네트워크에 참여하는 모든 노드는 클라이언트이자 서버이며 모든 노드는 동등한 상태를 갖습니다.

장점 : 네트워크 단계가 더 안정적이고 성능이 더 좋습니다.

단점 : 복잡한 통신 프로토콜 설계

2. 프로젝트 소개

IPFS 분산 스토리지 네트워크를 사용하여 비디오 데이터를 저장하고 브라우저를 통해 비디오 업로드 및 온라인 재생 기능을 실현하십시오.

3. 프로젝트 구조

아키텍처 다이어그램
주로 브라우저 페이지 , Node.js 서버IPFS 네트워크의 세 부분으로 구성됩니다 .

4. 프로젝트 설치

1. ffmpeg 설치 ( https://blog.csdn.net/chy466071353/article/details/54949221
참조 ) 2. ipfs 설치 ( https://blog.csdn.net/lhx0525/article/details/103528680 참조 ) 3. ipfs를 초기화하고 ipfs 데몬을 실행하여 데몬 프로세스를 시작합니다. 4. npm install은 관련 종속성 패키지를 설치합니다. 5. npm start는 프로젝트를 실행합니다 . 6. 브라우저 URL: http://localhost:3000/






효과 그림 1효과 그림 2

5. 프로젝트 진행

동영상 업로드

업로드된 동영상은 온라인에서 보다 원활하게 재생되어야 하므로 HLS 프로토콜에 따라 동영상을 슬라이스 처리하고 구체적인 구현은 ffmpeg 툴킷으로 완료합니다.

1: 브라우저가 비디오를 서버에 업로드합니다.
2: 서버가 업로드된 데이터를 블록으로 분할한 다음 IPFS 네트워크로 보냅니다.
3: IPFS 네트워크가 데이터 저장을 완료한 후 해당 고유 해시 코드를 서버에 반환합니다. , 서버는 이를 유지하여 해당 m3u8 파일을 생성합니다.
IPFS 데이터

(동영상 업로드 관련 코드는 프로젝트의 server.js에 있습니다.)
동영상 재생

1. 브라우저가 서버에 요청을 시작하고 비디오 이름을 통해 응답 인덱스 파일 .m3u8을 찾습니다.
2. 서버가 인덱스 파일을 반환합니다
. 3. 브라우저가 IPFS 시스템에서 .m3u8의 해당 파일을 요청합니다.
4. IPFS가 반환합니다. TS 데이터

(온라인 동영상 재생 관련 코드는 프로젝트의 play.js 및 app.js에 있습니다.)

프로젝트의 핵심은 다음과 같습니다.

1. ffmpeg를 사용하여 비디오 분할 및 재생

2. js 툴킷 ipfs-api를 통해 js 코드를 사용하여 IPFS 네트워크를 운영합니다.

제한된 리소스로 인해 독립적인 데이터베이스가 도입되지 않았으며 m3u8 파일은 Node.js 서버에서만 유지될 수 있습니다.

가능하면 독립적인 데이터베이스를 구축하고 모든 m3u8 파일과 ts 파일을 IPFS 네트워크에 저장하고 m3u8 파일의 액세스 연결을 mysql에 저장해야 합니다.

이를 통해 접속 속도를 크게 높일 수 있음과 동시에 클릭순 정렬, 핫리스트 등의 기능 구현이 용이하다.

추천

출처blog.csdn.net/awsl_6699/article/details/123505190