Live streaming from your terminal

Related tags

Command Line tstream
Overview

TStream - Streaming from terminal

๐Ÿ™‹โ€โ™‚๏ธ Come stream at tstream.club

TStream

How to start streaming

Please refer to this link

Upcoming features

  • One command to stream terminal session to web => just like tty-share
  • In room Chat
  • Voice chat
  • Stream playback
  • User management system
Comments
  • Build instructions

    Build instructions

    Thanks for this, it's pretty cool concept. ~~It would be cool if we could set a password to restrict the stream to just selected users. Is that on the to-do?~~ [Edit] I just saw it's planned, sorry.

    Any plans on adding build instructions? I'm not a big fan of downloading precompiled binaries, which also makes it more difficult to upgrade than just git pull and build. It would also allow using tstream on ARM devices, which are now very widespread.

    Not related, but I may as well mention it just in case: while the stream worked flawlessly when viewed on a Debian machine in Firefox and Chromium, glitches appeared on my Solus machine from Firefox (Chromium not tested) with part or all of the text being rendered as square characters, mostly $PS1, but not only. In Nyxt browser, the web page only shows up briefly before it turns 100% white with nothing displayed. Both issues are probably not related to tstream itself and may be just local issues but never know, maybe tstream uses something that is not properly supported in all configurations.

    What is tserver used for? Is that for hosting your own instance of the website?

    opened by Kabouik 8
  • Improve stream quality and big changes in how we send data

    Improve stream quality and big changes in how we send data

    TL;DR:

    • we stream data in block( contains many write requests in one block )
    • Now users watching the stream will be delayed with the actual stream
    • Much smoother and less lagging for both streamer and viewer
    • Streamers need to upgrade to version 1.3.0 to be able to stream

    Technical note

    In the previous version, any single change on the streamer's terminal is sent to the viewer. There are some problems with this approach:

    • Many changes are very small ( I.e: newline ) => inefficient use of request
    • In a short period of time we have many changes => too many requests With this version, we send messages by block. Each block is all messages generated in a period. This block is also being gzipped before being sent. This way we have some advantages:
    • fewer requests since we send a block of data every x (3) seconds.
    • By gzipped we reduced the message's size by around 7 folds. also, gzip is very fast so it's not a problem.

    But this prevents users from watching the stream in super near real-time.

    But I think 3 seconds lag is fine, it's how youtube and twitch works anw.

    opened by qnkhuat 2
  • Add voice chat and UI improvement (v1.2.0)

    Add voice chat and UI improvement (v1.2.0)

    Important

    All tstream client has to upgrade to v1.2.0 to be able to stream

    Server

    • Add an SFU voice server. Currently only allow one producer for one room ( still has some bug with syncPeers )
    • Changed all the messages to using JSON (used text on the previous version) => this affects all components

    TStream client

    • Add voice command /unmute and /mute
    • Allow 3 chars roomname

    Viewer UI

    • Add simple search for live stream in home page
    • Add volume control in room
    • Responsive for mobile

    Doc

    • Add discord server in README
    opened by qnkhuat 1
  • Add voice chat and UI improvement (v.1.2.0)

    Add voice chat and UI improvement (v.1.2.0)

    Server

    • Add an SFU voice server. Currently only allow one producer for one room ( still has some bug with syncPeers )
    • Changed all the messages to using JSON (used text on the previous version) => this affects all components

    TStream client

    • Add voice command /unmute and /mute
    • Allow 3 chars roomname

    Viewer UI

    • Add simple search for live stream in home page
    • Add volume control in room
    • Responsive for mobile

    Doc

    • Add discord server in README
    opened by qnkhuat 1
  • Chat tui

    Chat tui

    TUI chat

    • Start with command tstream -chat. It'll auto-detect streaming session to open chat
    Screen Shot 2021-07-14 at 12 48 04

    Improves and secures streamer - server connectivity

    • Add authorization for streamer connection.
      • Streamer connecting flow:
        • Send a POST API to the server to request create room. this request contains a secret that'll be used as the room's secret
        • Initialize a WebSocket connection
          • Send a secret
          • server verifies. if match with room secret => authorize connection

    CHAT

    • UI refactor a bit. but still needs a lot more work
    • UI add /name command so viewers can change their name
    • server => refactor message packaging
    opened by qnkhuat 1
  • Big PR

    Big PR

    Server

    • add boltDB : this DB acts as a permanent cache. Currently, it only stores room info.
    • There is a coroutine to periodically sync state from RAM to DB
    • add a new app: POST /api/room : streamer must call this to request create room before connecting via WebSocket. This API performs some checks:
      • version checking of TStream. if the version is not compatible => return 426 to streamer
      • In case streamer requests to add a room already existed => user wants to reconnect, or maybe the room is taken by someone else. The server then checks the secret of the request with the room's Secret => if match then allows users to proceed

    TStream

    • Add check if the user starts TStream inside a TStream session: using TSTREAM_SESSION env
    • When TStream is started it will generate a config at ~/.tstream.conf. Currently store: secret, and username
    • Version checking, display message require user to upgrade if fails

    Viewer

    • Add show recent streams on home page
    • Improve room state checking to display the right status
    • Improve responsiveness
    opened by qnkhuat 1
  • Unable to specify Server with tstream.

    Unable to specify Server with tstream.

    First I started tserver

    $ ./tserver 
    TStream server v1.3.2
    Serving at: localhost:3000
    

    When another terminal is opened and TStream is launched with the same option as an example, streaming starts with https://tstream.club/

    $ ./tstream -server http://localhost:3000                                                                                             
    TStream v1.3.2                                                                                                                                                 
    โœ” Username: โ–ˆatoken                                                                                                                                            
    โœ” Stream title: hogeโ–ˆ                                                                                                                                          
    Press Enter to continue!                                                                                                                                       
    ๐Ÿ”ฅ Streaming at: https://tstream.club/matoken 
    

    If you change the server fromhttp://localhost:3000 to http://localhost:3000/, it has become an error

    $ ./tstream -server http://localhost:3000/
    TStream v1.3.2
    โœ” Username: โ–ˆatoken
    Stream title: hoge
    Press Enter to continue!
    Failed to connect to server
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x6575a2]
    
    goroutine 1 [running]:
    golang.org/x/term.restore(0x0, 0x0, 0x0, 0x1c)
            /go/pkg/mod/golang.org/x/[email protected]/term_unix.go:57 +0x22
    golang.org/x/term.Restore(...)
            /go/pkg/mod/golang.org/x/[email protected]/term.go:43
    golang.org/x/crypto/ssh/terminal.Restore(...)
            /go/pkg/mod/golang.org/x/[email protected]/ssh/terminal/terminal.go:64
    github.com/qnkhuat/tstream/pkg/ptyMaster.(*PtyMaster).Restore(...)
            /go/src/github.com/qnkhuat/tstream/tstream/pkg/ptyMaster/ptyMaster.go:90
    github.com/qnkhuat/tstream/pkg/streamer.(*Streamer).Stop(0xc0000c5220, 0xc00002a4e0, 0x1b)
            /go/src/github.com/qnkhuat/tstream/tstream/pkg/streamer/streamer.go:272 +0x10f
    github.com/qnkhuat/tstream/pkg/streamer.(*Streamer).Start(0xc0000c5220, 0x1b, 0xba69d9)
            /go/src/github.com/qnkhuat/tstream/tstream/pkg/streamer/streamer.go:90 +0x3f8
    main.main()
            /go/src/github.com/qnkhuat/tstream/tstream/cmd/tstream.go:165 +0xb25
    

    Debian sid amd64 environment tserver_1.3.2_linux_x86_64.tar.gz And TStream_1.3.2_linux_x86_64.tar.gz was used.

    opened by matoken 1
Releases(v1.3.3)
Get live cricket score right in your terminal.

cric Get cricket score right in your terminal. How to use?! Make sure you have Node.js installed on your machine and just type the following command w

Tushar Choudhari 2 Feb 4, 2022
Terminal stock ticker with live updates and position tracking

Ticker Terminal stock watcher and stock position tracker Features Live stock price quotes Track value of your stock positions Support for multiple cos

Ani Channarasappa 4.4k Jan 8, 2023
Pi-fetch - get a summary of your pi-hole stats from your terminal

pi-fetch get a summary of your pi-hole stats from your terminal _ ___ _ _ ___|_|___| _|___| |_ ___| |_ | . | |___| _| -_| _

wise 0 Jan 9, 2022
๐Ÿš€ Get Youtube Live stream chat feed without any authentication!

youtube-live-chat-downloader Fetches Youtube live chat messages with no authentication required. How does it work? The request for fetching live chat

Abhinav Raut 11 Oct 17, 2022
A twitch focused command line tool for producing, archiving and managing live stream content. Built for Linux.

twinx is a live-streaming command line tool for Linux. It connects streaming services (like Twitch, OBS and YouTube) together via a common title and description.

Kris Nรณva 26 Oct 17, 2022
Stonks is a terminal based stock visualizer and tracker that displays realtime stocks in graph format in a terminal.

Stonks is a terminal based stock visualizer and tracker. Installation Requirements: golang >= 1.13 Manual Clone the repo Run make && make install Pack

Eric Moynihan 518 Dec 16, 2022
Are you programming and suddenly your stomach is rumbling? No problem, order your Ifood without leaving your favorite text editor โค๏ธ

vim-ifood Vocรช ta programando e de repente bateu aquela fome? Sem problemas, peรงa seu Ifood sem sair do seu editor de texto favorito โค๏ธ Are you progra

Felipe Volpone 4 Jun 2, 2022
gomerge is a tool to quickly bulk merge several pull requests from your terminal.

Gomerge is a tool to quickly enable you to bulk merge Github pull requests from your terminal. The intention of this tool is to simplfy, and eventually automate the merging of github pull requests. This tool should be able to run on most systems.

Cian Gallagher 41 Dec 28, 2022
YouTube client on your terminal

MeowTube YouTube client on your terminal Table of Contents About Getting Started Usage Contributing About MeowTube is a CLI (Command Line Interface) t

Abdul Fattah Ikhsan 27 Jul 29, 2022
๐ŸŽ„ A Christmas tree right from your terminal!

ctree ?? A Christmas tree right from your terminal! ?? Demo โŒ› No Refresh Don't want the tree to refresh every 2 seconds? Easy! Just add the --no-refre

Matthew Gleich 39 Dec 20, 2022
โ“๐Ÿ–ผ Find the anime scene by image using your terminal

What Anime CLI โ“ ?? > This application is basically a ?? wrapper around trace.moe PREVIEW Usage ?? Get Anime By Image File ?? what-anime file anime.jp

Ilya Revenko 759 Jan 2, 2023
Draw images in your ANSI terminal with true color

___ _____ ____ / _ \/ _/ |/_/ /____ ______ _ Made with love by Eliuk Blau / ___// /_> </ __/ -_) __/ ' \ https://github.com/eliukblau/pix

Eliuk Blau 898 Dec 14, 2022
The personal information dashboard for your terminal

WTF (aka 'wtfutil') is the personal information dashboard for your terminal, providing at-a-glance access to your very important but infrequently-need

WTFUtil 14.4k Dec 31, 2022
Advanced ANSI style & color support for your terminal applications

termenv lets you safely use advanced styling options on the terminal. It gathers information about the terminal environment in terms of its ANSI & col

Christian Muehlhaeuser 1.3k Dec 31, 2022
GIFs in your terminal

gifwrap GIFs in your terminal. Install Download the latest binary or install with Go: go install github.com/liamg/gifwrap/cmd/gifwrap@latest Usage Usa

Liam Galvin 48 Jan 2, 2023
Share your terminal as a web application

GoTTY - Share your terminal as a web application GoTTY is a simple command line tool that turns your CLI tools into web applications. Installation Dow

Iwasaki Yudai 17.4k Jan 8, 2023
Typing test in your terminal

Typer Typing test in your terminal Installation go get github.com/maaslalani/typer/cmd/typer Usage To begin a typing test simply type typer. This wil

Maas Lalani 321 Jan 6, 2023
๐Ÿ™๐Ÿฑ๐Ÿ–ฅ๏ธ GitHub stats in your terminal

?? ?? ??๏ธ octotui - GitHub stats in terminal Inspired by metrics & github-profile-summary-cards & github-tui ?? Data - irevenko/octostats TUI - termui

Ilya Revenko 202 Dec 25, 2022