https://github.com/harshalmittal4/peer2peertube
A live video streaming :computer: platform based on peer-to-peer architecture.
https://github.com/harshalmittal4/peer2peertube
live-streaming peer-to-peer python-vlc video-sharing
Last synced: 3 months ago
JSON representation
A live video streaming :computer: platform based on peer-to-peer architecture.
- Host: GitHub
- URL: https://github.com/harshalmittal4/peer2peertube
- Owner: harshalmittal4
- License: mit
- Created: 2018-10-20T12:43:58.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2019-01-30T16:36:08.000Z (over 6 years ago)
- Last Synced: 2025-05-15T04:32:58.262Z (5 months ago)
- Topics: live-streaming, peer-to-peer, python-vlc, video-sharing
- Language: Python
- Homepage:
- Size: 1.08 MB
- Stars: 36
- Watchers: 1
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# A decentralized, scalable peer-to-peer video sharing platform to achieve efficient live-streaming.
- We have implemented a peer-to-peer network architecture to overcome the common problems of server-failure and overloading in the client server model. **The project mainly focusses on scalability and achieving minimum source to end delay with playback continuity in live streaming.**
- The video file from the sender side is sent in chunks of 2048 bytes to the peer requesting it instantly. At the receiver side, the content is simultaneously buffered and starts streaming for which we have made use of python-vlc.
- Currently, to locate a file, the client needs to go through the network of all the peers to find whether a file is present or not. To avoid this, the backend of central tracker is implemented which will keep a list of ip addresses ***vs*** files stored by all the users present in the network.
- Now, instead of going to each peer to check for the file, the tracker can be used to get the users who have the requested file, and download the files simultaneously from them.### Usage
```
python main.py :server-port : Port to listen for incoming requests.
max-peers : Max number of peers you wish to have in the swarm.
peer-ip/peer-port: IP address/port of any existing peer in the swarm (known beforehand).
```### Future Prospects
- Along with live streaming, the video file also gets downloaded. A better option could be to have the video being played directly without having any download space requirements, i.e. as the chunk is played, it gets deleted for the next chunk to be recieved at the same location.
- The implementation is in python (an interpreter). Converting the code into a compiler oriented language like C++ may improve the performance.### References
- Computer Networks: A Top-down Approach by Behrouz A. Forouzan
- [Peerflix - Streaming torrent client for Node.js](https://github.com/mafintosh/peerflix)
- https://perso.telecom-paristech.fr/drossi/paper/rossi13p2p-b.pdf
- [Python VLC](https://pypi.org/project/python-vlc/)### Contributors
- [Aniket Singh](https://github.com/aniketsingh03)
- [Harshal Mittal](https://github.com/harshalmittal4)
- [Harshit Bansal](https://github.com/harshitbansal05)
- [Vishal Sharma](https://github.com/VishalCR7)