Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

Peer-to-peer video chat using WebRTC

Project description

Build Status docs PyPI Docker Hub License

Camus is a video chat app that uses WebRTC for direct peer-to-peer communication. Users can create public or private rooms, optionally protected by a password. In addition to streaming audio and video from a webcam and microphone, Camus also provides screen sharing and text chat.

Features

  • Webcam streaming
  • Desktop sharing
  • Text chat
  • Room management (public/private, password/no password, guest limits)
https://raw.githubusercontent.com/mrgnr/camus/master/screenshots/0.2.0.png

Demo

You can find a live demo at https://camus.chat.

Running

Using Snap

Make sure you have snapd installed. Install Camus:

$ sudo snap install camus

Run Camus:

$ camus

Go to localhost:5000 in your browser. For local testing, you can visit the same room in multiple tabs and each tab will act as a separate client.

Using Python

Camus requires Python 3.7 or higher since it makes use of Quart and async syntax. As usual, it’s best to use a virtual environment.

Install Camus:

$ pip install camus-chat

Run Camus:

$ camus

Go to localhost:5000 in your browser. For local testing, you can visit the same room in multiple tabs and each tab will act as a separate client.

Using Docker

You can find a pre-built Docker image on Docker Hub. Use the following command to pull the image and run a container:

$ docker run -d -p 5000:5000 mrgnr/camus

Go to localhost:5000 in your browser. For local testing, you can visit the same room in multiple tabs and each tab will act as a separate client.

Using Heroku

Deploy to Heroku

Simply click the button above or see the deployment documentation for detailed instructions.

How it works

See the technical overview to understand how Camus works.

Development

See the development documentation for build & test instructions.

Roadmap

v0.1

  • [x] Audio/video streaming
  • [x] Desktop sharing
  • [x] Text chat
  • [x] Cross-browser support (using Babel, Adapter)
    • [x] Chromium/Chrome/Brave
    • [x] Firefox
    • [x] Safari
  • [x] Support TURN server

v0.2

  • [x] Rewrite the UI using React [PR #3, #4]
  • [x] Video feed controls (fullscreen, picture-in-picture, resolution, audio level, visibility) [PR #5]
  • [x] Configurable TURN server in the client [PR #6]
  • [x] Snap package [PR #7]
  • [ ] Make the UI accessible

v0.3+

  • [ ] Persistent storage (SQLite, Redis, and/or PostgreSQL)
  • [ ] User accounts, persistent user settings
  • [ ] Support SFU for client scalability

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for camus-chat, version 0.2.1
Filename, size File type Python version Upload date Hashes
Filename, size camus_chat-0.2.1-py3-none-any.whl (287.0 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size camus-chat-0.2.1.tar.gz (286.8 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page