Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ennuicastr/ennuicastr
Ennuicastr is a system for recording multiple users distributed across the world in a well-synchronized way, without significant loss, over the web.
https://github.com/ennuicastr/ennuicastr
audio webrtc
Last synced: 3 months ago
JSON representation
Ennuicastr is a system for recording multiple users distributed across the world in a well-synchronized way, without significant loss, over the web.
- Host: GitHub
- URL: https://github.com/ennuicastr/ennuicastr
- Owner: ennuicastr
- Created: 2019-08-21T20:02:48.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-05-13T19:49:21.000Z (9 months ago)
- Last Synced: 2024-05-21T20:14:29.263Z (9 months ago)
- Topics: audio, webrtc
- Language: TypeScript
- Homepage: https://ecastr.com/
- Size: 3.39 MB
- Stars: 69
- Watchers: 5
- Forks: 5
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Ennuicastr is a system for recording multiple users distributed across the
world in a well-synchronized way, without significant loss, over the web.There are a few problems that arise with distributed recording:
* Voice-over-IP solutions are the natural way to distribute voice
communication, but all sacrifice completeness for performance. That is, all
suffer loss in a way that should not be necessary to record. Ennuicastr uses
existing voice-over-IP technology (namely, WebRTC) for the actual live
communication component.* Recording each user's audio separately usually requires that each user
perform their own recording manually, and then send the audio to a central
source. Aside from causing synchronization nightmares (see the next bullet
point), this demands a fair amount of expertise from each user, and is very
fragile: If even one user's audio doesn't work out, usually the only viable
backup is a single recording of all users. Ennuicastr resolves this by
packaging recording into a simple web-app, and sending the recorded audio
live to a central server.* Distributed users have different clocks. Even with initial synchronization,
the clocks have different crystals, and so will drift naturally from each
other over time. The traditional technique of having every user record
separately, even when no one makes any mistakes, still creates headaches for
editing, as the tracks will drift out of sync. Ennuicastr resolves both of
these problems by having the client software synchronize its time with the
server *continuously*, and timestamp *every* frame of audio data. Server-side
software can then resolve the timestamped audio frames into continuous
streams which are correclty in sync, by removing or adding silence as
necessary.* Most communication software does considerable processing, to make
communication more pleasant, but for editing a recording, this preprocessing
is at best unnecessary, and at worst counterproductive. Ennuicastr resolves
this by... well... not doing it. Recorded audio is as raw as possible. It can
even be recorded in lossless FLAC if you so choose.Note that this repository includes only client-side software; the server side
is in ennuicastr-server. A small example server is provided in this repository
for testing.Ennuicastr is licensed under the ISC license, and can be used for more-or-less
any purpose so long as you retain the copyright notices.Ennuicastr has a number of dependencies each under their own compatible
license. See the directories vad and libav for more information on them.No documentation is provided for running your own instances of Ennuicastr or
for its protocol.