Skip to content

streamserver-cvn - media streaming server which distributes audio/video MPEG-TS read via named pipe to HTTP streaming clients

Notifications You must be signed in to change notification settings

canvon/streamserver-cvn

Repository files navigation

streamserver-cvn

A media streaming server (cvn aka canvon attempt), which distributes audio/video MPEG-TS (MPEG Transport Stream) read via pipe to HTTP streaming clients.

That is, you can produce a stream (e.g., a screencast from your Desktop) with some other program, then feed it to streamserver-cvn which will let other people access/see it by pointing their media player of choice (e.g., mpv, VLC, ...) at an URL such as http://YOUR_IP_HERE:8000 .

It's based on Qt, but does not use or provide any GUI functionality. (yet?) (Here it's just a way of having a full framework at one's fingertips while using C++, plus optionally having an event loop easily.)

Development environment

At the time of writing (2019-05-13), the streamserver-cvn project is developed by canvon on the operating system (OS) Debian 9 (a GNU/Linux distribution), with the C++ compiler GCC g++ 6.3.0 and the cross-platform C++ application framework Qt 5.7.1.

Usually, the code is developed (written, auto-completed) in the Integrated Development Environment (IDE) Qt Creator (4.2.0), but especially when working on another machine, e.g. remotely via SSH (Secure Shell, remote terminal access), the terminal (console) text editor VIM (e.g., 8.0) is used instead.

When you happen to be using such an environment, too, compilation and use should be working as expected. Lower versions (especially of Qt or the C++ compiler) will likely not work.

For building in the development environment, see BUILDING: Building in development environment.

Termux App on Android

Within the Termux App on the Android (mostly: smartphone, tablet, TV) operating system, a Debian-like environment exists (even uses APT and dpkg). Recently (as of mid-2019), the possibility of having an X11-based graphical environment was added, which also brought along precompiled Qt 5 (see above), thus making use of streamserver-cvn on my smartphone a theoretical possibility.

It turns out compiling the project was quite possible (after fixing two missing includes, see commit 17e33b2eee7ba94673c39adbab0940f642045282), and the resulting binaries worked. (Initial test made 2019-05-11.)

streamserver-cvn was tested with these versions:

  • Android 7
  • Termux 0.68
  • clang 8.0.0
  • Qt 5.11.2

For building in Termux, see BUILDING: Building in Termux.

For producing compatible input for streamserver-cvn, you may try to use the mpv video player in encoding mode; e.g.:

scm/build-streamserver-cvn$ mpv --loop=inf ~/storage/.../FOO.mkv \
  --o=- --of=mpegts | ./streamserver-cvn-cli/streamserver-cvn-cli \
  /dev/fd/0

Note the --o=- which enables encoding mode with output to stdout, and the --of=mpegts which specifies the output format. The mpv output is then piped into streamserver-cvn-cli, which is instructed to serve its HTTP stream from /dev/fd/0, otherwise known as stdin.

When this is running (it may take a few seconds for mpv to start up), you can, e.g., go to the VLC App and enter the stream URL as: http://localhost:8000

Or open an Editor, write the http://YOUR_IP_HERE:8000 out (insert your actual IP addess or, e.g., a DynDNS hostname pointing at you, or at your router and a port forwarded to your device). You can then try to play it on your TV with a Raspberry Pi attached running Kodi: Mark the URL as for copy & paste, then choose "Send" and, in the following dialog (which may take some seconds to start up), tap the option to play on Kodi, provided by the Kore Kodi remote App... (TODO: Could this be done easier via Termux:API..?)

About

streamserver-cvn - media streaming server which distributes audio/video MPEG-TS read via named pipe to HTTP streaming clients

Resources

Stars

Watchers

Forks

Packages

No packages published