This project is a secure peer-to-peer (P2P) video streaming service, designed to facilitate direct video streaming between users. The frontend is built using React, providing a dynamic and responsive user interface. The backend is powered by simple-peer, Express.js, and Node.js, ensuring efficient handling of peer-to-peer connections and server-side functionalities.
- Real-Time Video Streaming: Direct P2P video streaming for reduced latency and increased efficiency.
- Responsive UI: A React-based frontend that adapts to various screen sizes and devices.
- Easy Navigation: User-friendly interface with intuitive controls for streaming and viewing videos.
- Secure Connections: Implementation of secure peer connections to ensure privacy and data integrity.
- Private and Public Rooms: Allows video streaming to the users that are intended to view the streams.
- User Chat Functionality: Allows users a chat box to message communicate.
- User Authentication: Uses MongoDB and JSON Web Tokens(JWT) to authenticate users before creating/joining a room
- AES Encrypted Video Streaming: Uses AES encryption to encrypt the video stream from the host to the users
- Encrypted Video Download: Transmits an encrypted video file to user via HTTPS download request
Before you begin, ensure you have the following installed:
- Node.js (v12 or higher)
- npm (Node Package Manager)
- A modern web browser (Chrome, Firefox, etc.)
- Clone the Repository
git clone git@github.com:Sujeev-Uthayakumar/p2p-video-streaming.git
- Install Backend Dependencies
npm install
- Install Frontend Dependencies
cd frontend/ npm install
-
Start the Backend Server
npm run start
-
Run the React Frontend
npm run start
The React app will launch in your default browser at localhost:3000. With the Express api server running at localhost:3001, which the React app will use to establish the peer-to-peer connection.