# I made a video call app (with 15-second ping)

**URL:** <https://support.delta.chat/t/i-made-a-video-call-app-with-15-second-ping/2800>\
**Category:** Mini Apps\
**Created:** [November 16, 2023, 1:19pm UTC](https://support.delta.chat/t/i-made-a-video-call-app-with-15-second-ping/2800 "2023-11-16T13:19:18Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![WofWca](https://support.delta.chat/user_avatar/support.delta.chat/wofwca/32/1702_2.png) [@WofWca](https://support.delta.chat/u/WofWca)\
**Post date:** [November 16, 2023, 1:19pm UTC](https://support.delta.chat/t/i-made-a-video-call-app-with-15-second-ping/2800/1 "2023-11-16T13:19:18Z")

</div>

Another giant leap for mankind. A webxdc app for actual video calls over actual email (albeit with 15-second ping (but [it may improve soon](https://github.com/deltachat/deltachat-core-rust/pull/4904))).

> **[GitHub - WofWca/video-call-over-email: No cap. With 15-second ping though.](https://github.com/WofWca/video-call-over-email/)**
>
> No cap. With 15-second ping though.

 ![A simplistic video call app UI](https://support.delta.chat/uploads/default/original/2X/3/335afb0a3a394408b65f2475a724b530aafdcf82.jpeg)

This is just a prototype.

## Usage

Unfortunately, as of 2023-11-16, sending audio/video **won’t work** on unmodified versions of Delta Chat, but [this may change](https://support.delta.chat/t/allow-access-to-camera-geolocation-other-web-apis/2446) in the near future.

_Receiving_ video does work on regular Delta Chat.  
If you don’t want to bother modifying Delta Chat — hit me up, I’ll show you the app in action.

### Modifying Delta Chat

Below are instructions on how to modify Delta Chat. But make sure **not to launch any webxdc apps** that you don’t trust on the modified version of Delta Chat as it is **insecure**. Tested on Delta Chat 1.40.4.

1. Download [Delta Chat Desktop](https://delta.chat/).

2. Find the `DeltaChat/resources/app.asar` file in the app folder.

3. Open it as a ZIP file.

4. Open the `tsc-dist/main/deltachat/webxdc.js` file inside the archive.

5. Find the line

6. Save the modified app.asar file.

7. After you’re done playing around with this app, make sure to remove the line you added, or simply reinstall Delta Chat.

### Running the app

1. Launch Delta Chat.
2. Build an `.xdc` file with `./create-xdc.sh`, or just [download it from the “Releases” section](https://github.com/WofWca/video-call-over-email/releases/latest/download/webxdc-video-call.xdc).
3. Send the `.xdc` file to a chat.
4. Wait for some other chat members to launch the app.
5. Press “Start sending my media”; or just wait for others to send theirs.

Keep in mind that video data takes a lot of space. Make sure not to waste the storage quota on your email server. The expected bitrate in this app for audio + video is ~50 MB / hour per member and ~2 MB / hour per member for just audio.

## Why

Because it’s funny.

And it might actually become an actually useful video call app, when:

- [the ratelimit](https://github.com/deltachat/deltachat-core-rust/blob/212751f173139aab3daadcd77388b3551004cabe/src/context.rs#L382) gets much better than 1 email per 10 seconds
- webxdc apps can be [allowed camera permission](https://support.delta.chat/t/allow-access-to-camera-geolocation-other-web-apis/2446)
- A way is found to not fill up email servers with audio/video data (maybe something like “ephemeral webxdc messages”)

## How it works

Nope, it’s not WebRTC.

1. Record 10 seconds of your camera stream with a [`MediaRecorder`](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream_Recording_API).
2. Serialize the data.
3. Send it over email (with [`webxdc.sendUpdate()`](https://docs.webxdc.org/spec/sendUpdate.html)).
4. Repeat from step 1.

When we receive data, deserialize it and display it using [Media Source Extensions API](https://developer.mozilla.org/en-US/docs/Web/API/Media_Source_Extensions_API).

## Web demo (no email involved)

If you just want to see how the app feels, without actually communicating with anyone using email, go to [https://wofwca.github.io/video-call-over-email/](https://wofwca.github.io/video-call-over-email/) .

---

<div class="post-metadata">

**Author:** ![link2xt](https://support.delta.chat/user_avatar/support.delta.chat/link2xt/32/1971_2.png) [@link2xt](https://support.delta.chat/u/link2xt)\
**Post date:** [November 17, 2023, 2:31am UTC](https://support.delta.chat/t/i-made-a-video-call-app-with-15-second-ping/2800/3 "2023-11-17T02:31:48Z")

</div>

There is a related thread about voice chat over IRC:

> [@Voice Chat by in-band signaling](https://support.delta.chat/t/voice-chat-by-in-band-signaling/1712):
>
> [[Introducing "VoIRC" - voice-chat over IRC] ](https://www.youtube.com/watch?v=0R--_ATzE6o) what you guys think about this

---

<div class="post-metadata">

**Author:** ![adbenitez](https://support.delta.chat/user_avatar/support.delta.chat/adbenitez/32/2323_2.png) [@adbenitez](https://support.delta.chat/u/adbenitez)\
**Post date:** [November 17, 2023, 2:58pm UTC](https://support.delta.chat/t/i-made-a-video-call-app-with-15-second-ping/2800/4 "2023-11-17T14:58:22Z")

</div>

I would recommend focusing on audio calls:

it would be interesting if the app could do noise cancellation and then like Mumble/Murmur detect when there is actual sound/speech and only send the stream if there is actually activity, in silient times you don’t send anything that will be much better for performance, most of the time people speak in a “push to talk” mode so if you can detect the pauses and avoid sending unnecessary silent continuously the app could work even needing less resources

video is big/heavy and phone-call-quality level of voice communication could fit perfectly over email, just like sending voice messages in delta chat but in a easier way detecting when people talk

---

<div class="post-metadata">

**Author:** ![Stylus-Snuggle-Frett](https://support.delta.chat/user_avatar/support.delta.chat/stylus-snuggle-frett/32/1957_2.png) [@Stylus-Snuggle-Frett](https://support.delta.chat/u/Stylus-Snuggle-Frett)\
**Post date:** [November 17, 2023, 4:39pm UTC](https://support.delta.chat/t/i-made-a-video-call-app-with-15-second-ping/2800/5 "2023-11-17T16:39:34Z")

</div>

I find this concept appealing!

My suggestion is that upon implementation, Delta Chat should continuously buffer the last second of audio locally.

Then, when the mumble detection is activated, it can send the buffer and stream the rest of the audio. This way, if there is a delay before the mumble detection identifies that it should start transmitting, any speech that occurred during that delay won’t be missed because it has been buffered.

---

<div class="post-metadata">

**Author:** ![WofWca](https://support.delta.chat/user_avatar/support.delta.chat/wofwca/32/1702_2.png) [@WofWca](https://support.delta.chat/u/WofWca)\
**Post date:** [November 17, 2023, 5:56pm UTC](https://support.delta.chat/t/i-made-a-video-call-app-with-15-second-ping/2800/6 "2023-11-17T17:56:05Z")

</div>

> [@adbenitez](#):
>
> noise cancellation

It’s natively possible, with `getUserMedia({ noiseCancelation: { ideal: true }`.

> [@adbenitez](#):
>
> detect when there is actual sound/speech

I don’t think there is a native way to do this, but in a different project of mine [I do it with Web Audio API](https://github.com/WofWca/jumpcutter/blob/46499f6dc3a2fa46bd8f70c378eb5159b986d722/src/entry-points/content/SilenceDetector/SilenceDetectorProcessor.ts#L101-L108).

> [@adbenitez](#):
>
> avoid sending unnecessary silent continuously

Good idea, though I think this currently is not the biggest blocker. The biggest one is the rate limit.

* * *

Your words about the “don’t send silence” helped me to come up with another stupid idea: with the current rate limit, we could bring down the delay from 10 seconds down to, say, 2s by limiting the duration of your speech to 12 seconds. Then you’d have to wait for a minute to be able to speak again. That is, when you start speaking, we send your voice every 2 seconds, reaching the rate limit of 6 after ~12 seconds.

---

<div class="post-metadata">

**Author:** ![jjvv](https://support.delta.chat/user_avatar/support.delta.chat/jjvv/32/2025_2.png) [@jjvv](https://support.delta.chat/u/jjvv)\
**Post date:** [January 12, 2024, 12:12pm UTC](https://support.delta.chat/t/i-made-a-video-call-app-with-15-second-ping/2800/7 "2024-01-12T12:12:00Z")

</div>

I made this account just to tell you that seeing this made my day. Bravo!

Blew my mind… meaning some small part of my brain is still screaming that this is abhorrent and how is it even possible, while the rest of me is grinning like a madman because (1) what an amazing hack this is and (2) this could be another small step (hah!) to a future where everyone happily uses open, privacy-friendly communication tools.

If I had any time/energy to code outside of my regular job, I would be all over webxdc for making boardgames and collab tools.

---

<div class="post-metadata">

**Author:** ![WofWca](https://support.delta.chat/user_avatar/support.delta.chat/wofwca/32/1702_2.png) [@WofWca](https://support.delta.chat/u/WofWca)\
**Post date:** [January 12, 2024, 12:29pm UTC](https://support.delta.chat/t/i-made-a-video-call-app-with-15-second-ping/2800/8 "2024-01-12T12:29:34Z")

</div>

Awwwwww

Even my wife doesn’t give me as much love 🤗 🤗 🤗 (jk jk… unless??)

I’m happy that you liked it!

---

<div class="post-metadata">

**Author:** ![WofWca](https://support.delta.chat/user_avatar/support.delta.chat/wofwca/32/1702_2.png) [@WofWca](https://support.delta.chat/u/WofWca)\
**Post date:** [June 21, 2024, 12:36pm UTC](https://support.delta.chat/t/i-made-a-video-call-app-with-15-second-ping/2800/9 "2024-06-21T12:36:27Z")

</div>

Honey, wake up. The sequel just dropped.

> [@I made a video call app (WITHOUT 15-second ping this time)](https://support.delta.chat/t/i-made-a-video-call-app-without-15-second-ping-this-time/3155):
>
> The long-awaited sequel to [Download webxdc-video-call.xdc](https://github.com/WofWca/webxdc-video-call/releases/latest/download/webxdc-video-call.xdc)[Source code (with updated README)](https://github.com/WofWca/webxdc-video-call/) What’s changed is that now it uses the recently added [webxdc real-time P2P channels](https://webxdc.org/docs/spec/joinRealtimeChannel.html), so now there is no 15-second delay (now it’s around 1 second), and you can actually do calls over it because of that (but remember that it’s still just a prototype). Usage: Enable “Realtime Webxdc Channels” in Delta Chat advanced settings. Refer to [“Usage” from the previous post](https://support.delta.chat/t/i-made-a-video-call-app-with-15-second-ping/2800#usage-1) (you’ll need to modify Delta Chat d…

---

<div class="post-metadata">

**Author:** ![WofWca](https://support.delta.chat/user_avatar/support.delta.chat/wofwca/32/1702_2.png) [@WofWca](https://support.delta.chat/u/WofWca)\
**Post date:** [June 6, 2025, 12:32pm UTC](https://support.delta.chat/t/i-made-a-video-call-app-with-15-second-ping/2800/10 "2025-06-06T12:32:15Z")

</div>

Small update: I reduced the ping down to ~6 seconds for Chatmail servers.  
It feels almost actually usable.

This is thanks to the somewhat recent introduction of [`webxdc.sendUpdateInterval`](https://webxdc.org/docs/spec/sendUpdate.html#messaging-layer-limits-for-sendupdate). For [nine.testrun.org](http://nine.testrun.org) the current value is 1 second, which we now utilize, instead of always delaying by 10 seconds.

Download the new version: [webxdc-video-call.xdc](https://github.com/WofWca/video-call-over-email/releases/download/v1.3.0/webxdc-video-call.xdc).  
(Remember that in order to run it you would need to modify Delta Chat. See new instructions in the repository).

---

<div class="post-metadata">

**Author:** ![r10s](https://support.delta.chat/user_avatar/support.delta.chat/r10s/32/1513_2.png) [@r10s](https://support.delta.chat/u/r10s)\
**Post date:** [October 6, 2026, 3:19pm UTC](https://support.delta.chat/t/i-made-a-video-call-app-with-15-second-ping/2800/11 "2026-10-06T15:19:37Z")

</div>


