Skip to content

Chirag-And-Dheeraj/Dekho

Repository files navigation

Dekho: An on-demand video streaming server

Some Achievements ✨

We launched Dekho on Peerlist in the 3rd Week of January 2025 and we had a pretty good response.

Project of the week Project of the week

Star History

Star History Chart

Overview

Dekho is a research and study project aimed at understanding and learning about audio and video streaming. Our primary focus was on implementing the HLS (HTTP Live Streaming) protocol to build an on-demand video streaming server.

Setup Instructions

Basic Steps

  • Clone the repository
  • Create an Appwrite storage bucket
    • Make sure that you make a note of APPWRITE_KEY, APPWRITE_PROJECT_ID and the BUCKET_ID.

With Docker

  • Install docker-compose on your machine.
  • cd into the root of the repository.
  • Just run docker-compose up to start the server.

Without Docker

  • Install the make utility because we have created a Makefile to ease the setup
  • Now we are moving to the dependency installation steps.
  • This project needs go version go1.23, ffmpeg utility and psql (PostgreSQL) 16.3 database.
  • To install these, and the Go dependencies, run make install-dev.
    • The make install-dev takes care of installing PostgreSQL, Go, FFMpeg, golang-migrate and Go 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 command sudo -u postgres psql and create a database by running CREATE DATABASE <database_name>;.
    • Create a .env file using .env.local as a reference.
  • 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

Technologies Used

  • Server: Go
  • Database: PostgreSQL
  • Storage: Appwrite Storage
  • Video Processing: FFMPEG for breaking down videos into .ts chunks
  • Video Player: HLS.js
  • Frontend: HTML, CSS, JS

Project Architecture

Architecture Diagram

Key Resources

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.

Getting Involved

We welcome any queries or contributions to the project. If you have any questions or suggestions, please feel free to reach out to us:

Updates and Blog Posts

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!

About

A research/study project for understanding and learning the fundamentals of audio/video streaming.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5