Announcement: 📢 Dekho is back! After being a dead for nearly two years, we're reviving this project to explore the fundamentals of audio and video streaming once again. You can track our progress on the revival of the project in this milestone here.
Dekho is a research and study project aimed at understanding and mastering the intricacies of audio and video streaming. Our primary focus was on implementing the HLS (HTTP Live Streaming) protocol to build an on-demand live streaming server.
However, expect things to change in the upcoming versions while we shape this into something more refined.
- Install the
make
utility because we have created a Makefile to ease the setup - Clone the repository
- Create an Appwrite storage bucket
- Make sure that you make a note of
APPWRITE_KEY
,APPWRITE_PROJECT_ID
and theBUCKET_ID
.
- Make sure that you make a note of
- Now we are moving to the dependency installation steps.
- This project needs
go version go1.22.2
,ffmpeg
utility andpsql (PostgreSQL) 16.3
database. - To install these, and the Go dependencies, run
make install
.- The
make install
takes care of installing go, ffmpeg and psql dependencies. - Run
make start-postgres
to start the postgres service. - Create a database user by running this command
sudo -u postgres createuser -s username_here -P
-P
will prompt for a password.- Enter the
psql
shell by running this commandsudo -u postgres psql
and create a database by runningCREATE DATABASE <database_name>;
. - Create a
.env
file using template.env as a reference.
- The
- Once the dependencies are installed successfully, run
make cleanstart
. - This command will create all the necessary folders and start the server on
http://127.0.0.1:8000
- If you just want to run the server, run:
make start
- If you just want to clean up, run:
make clean
- Server: Go
- Database: SQLite
- Storage: Appwrite Storage
- Video Processing: FFMPEG for breaking down videos into .ts chunks
- Video Player: HLS.js
- Frontend: HTML, CSS, JS
Our journey has been greatly enriched by the insights and guidance from various resources. A pivotal article that set us on the right path is "Learning the basics of video streaming with Golang" by Rohit Mundra.
For a comprehensive list of resources that have been instrumental in our learning and development process, please refer to our documentation.
We welcome any queries or contributions to the project. If you have any questions or suggestions, please feel free to reach out to us:
Stay tuned for upcoming blog posts and updates on our progress. If you haven't heard from us in a while, feel free to bug us about it!