Home
Softono

StreamZ

Open source MIT Dart
29
Stars
4
Forks
0
Issues
1
Watchers
6 years
Last Commit

 About StreamZ

A simple video streaming application made with Dart, JavaScript, HTML, CSS & :heart:

Platforms

Web Self-hosted iOS Android

Languages

Dart

Links

Need Help Installing StreamZ?

We provide expert installation service for this software. Our team will install, configure, and secure StreamZ on your server. plans start at just $30.

streamZ

A simple video streaming application made with Dart, JS, HTML, CSS & :heart:

Show some :heart: by putting :star:

Recently I wrote an article, explaining how to deploy it using systemd in LAN, which can be found here.

what does it do ?

  • A streaming service, intended to run in small network(s) ( may be in your home network ), which lets you stream movies to any device present in that network & having a standard browser installed ( yeah HTML5 support required )
  • Backend, fully written in Dart, leveraging power of dart:io & dart:isolate
  • Frontend, powered by HTML, CSS & last but not least Javascript ( yeah not using any UI framework )
  • Audio-Video playing is done using HTML5 <video> element, which can play mp4 & webm video(s) generally

how can I use it ?

  • If you're on Linux, then I've already compiled streamZ into an executable binary ( using dart2native compiler ), which can be simply run on any Linux Machine, cause that executable binary is one self-sufficient one ( but not yet platform-agnostic, which will change is near future ).
  • Then download this compressed file, and unzip it into a suitable location on your machine.
  • You'll get a directory tree like below
$ wget https://github.com/itzmeanjan/streamZ/releases/download/v1.0.1/streamZ.zip # consider downloading zip, using wget from terminal
$ cd
$ unzip streamZ.zip # unzipping it
$ cd streamZ # getting into actual directory
$ tree -h
.
├── [4.0K]  final
│   └── [7.8M]  streamZ
└── [4.0K]  frontend
    ├── [4.0K]  images
    │   └── [ 318]  favicon.ico
    ├── [4.0K]  pages
    │   └── [1.0K]  index.html
    ├── [4.0K]  scripts
    │   └── [9.7K]  index.js
    └── [4.0K]  styles
        └── [2.0K]  index.css

6 directories, 5 files
  • Now get into ./final directory & run executable binary, which will start a media streaming server on http://0.0.0.0:8000
$ cd final
$ ./streamZ # running movie steaming server
[+]streamZ_v1.0.0 listening ( streamZ0 ) ...

[+]streamZ_v1.0.0 listening ( streamZ1 ) ...

  • To check, open browser from same machine & type http://localhost:8000 into address bar, you'll get a list of all movies present under ~/Videos/ directory, which is default video storing directory on Linux running machines.
  • You can also access this streaming service by opening _http://x.x.x.x:8000/_,on any device's browser, present in LAN
  • Where x.x.x.x is nothing but Local IP Address of machine, running streamZ

  • If you want to dig deeper, simply fork this repo & clone it in you machine
  • Make sure you've installed Dart SDK & you're on *nix platform
  • Because I gonna use systemd.service to keep this streaming service alive in background, always, even after system restarts it'll auto start itself
  • You need to make sure, you've ~/Videos/ directory present on your system, cause we'll read from that directory ( every 30 minutes ), to ensure all mp4 & webm videos, present in aforementioned directory, are listed in movie playlist
  • If you're having a lot of traffic, consider using multiple Isolates to handle traffic efficiently. Just update int count = 2; on line 100 of ./bin/main.dart to whatever value you intend to use, that many Isolate(s) will be created on boot, they'll distributedly handle whole traffic coming in.
  • I've also written one systemd unit file, which can be used for deploying streamZ, so that it'll keep running always ( autostart after failure & system boot )
  • Consider using so, by modifying this systemd unit file

how does it look like ?

screenCapture_1

screenCapture_2

screenCapture_3

Feel free to check source code to dig deeper ( it's pretty well documented )

Hope it helps ... :wink: