CLI app to do video calls but from the terminal. Just fun little project that let's you chat with friends in a retro kinda way - while staying in your CLI.
Download an official release from here. Tweak your .clivrt
as needed (a bit manual right now :disappointed_relieved:). Run the app ./clivrt
.
Once in the app you'll see status across the bottom for both a connection to the chat server π’ (text) and direct to other users π€ (video/audio). Initially, both will be disconnected. Type login
to login to the default chat server as an anonymous user (you can use --server
and --user
to connect to a private server and set your username). A locked lock π indicates a secure connection and an unlocked lock π indicates insecure.
Once logged in you can see who else is online with lookup
. You can text chat to everyone with say <message>
. And you can directly call someone with call <user>
.
When you are done with your call, hangup
.
When you are ready to leave the server logout
or just quit
Use tab to autocomplete any of the following:
The file is is located in the same folder as the cli executable and named .clivrt
, it will be used for default config. Here's an example:
[DEFAULT]
signalinghosturl = wss://signaling-s-dudash-dev.apps.sandbox.x8i5.p1.openshiftapps.com
autoanswer = true
loglevel = WARN
videostyle = just-ascii
webcam = /dev/video0
framerate = 30
frame_interval = 4
video_size = 800x600
You can debug and run with:
pipenv run python clivrt.py
This app utilizes WebRTC. From mozilla: "WebRTC is a fully peer-to-peer technology for the real-time exchange of audio, video, and data, with one central caveat. A form of discovery and media format negotiation must take place, as discussed elsewhere, in order for two devices on different networks to locate one another. This process is called signaling and involves both devices connecting to a third, mutually agreed-upon server. Through this third server, the two devices can locate one another, and exchange negotiation messages."
The main reasons WebRTC was picked for this are:
The supported platform is currently just linux. If you're on windows you can use WSL. This project uses pipenv for dependency management.
We'd love contributions! Please make sure you are working against an documented issue. If it's something that might require approval and discussion please tag and socialize the idea with an owner first (@dudash or @andykrohg).
This project uses the awesome open source work from many other folks. There are a few key projects this wouldn't be possible without: