Web Monetized Video Calls – A Demo -

Image by Tumisu on Pixabay, modified by myself.

Right now, we live in a world where all of our communication has moved online. My friends and I used to meet once a month to play an escape room, now we play using an online game and Jitsi. My mom, who is a midwife, used to give seminars for pregnant women, now I taught her how to use Zoom to still be able to do her work and make a living. She still needs to somehow get a signature from the pregnant women, however, in order to invoice the health insurance for the seminar fee (I’m German, health insurance covers everything ;–) ). It would be so much more convenient if the women were paying while attending her online seminar.

Obviously, midwives are not the only occupation group that could benefit from an instantaneously incoming payment stream while delivering a service. Psychiatrists, teachers and tutors, fitness trainers, nutrition coaches, etc. come to mind right away. Additionally, real world content creators like musicians, who depend on live concerts to make a living, would be able to livestream it from anywhere in the world. And academics could host conferences virtually while attendees pay a fee to the organizers.

Web Monetization is an open-source JavaScript browser API that allows for a payment stream from the user/client to the website which is delivering content. It facilitates the Interledger Protocol (ILP) for said payment stream, making it currency agnostic. Hence, it is exactly the technology that can make monetized video calls happen and allows service providers to reach an international audience.

I started looking into implementing a web monetized version of a video call system about three weeks ago and quickly landed on Jitsi Meet since it is completely open source. However, Jitsi is so feature rich that a robust web monetized version will take me a little while to develop. In the meantime, I wanted to give an idea of what I have in mind and created a simple demo on Glitch using the Jitsi API.

If you can’t wait to try it out, here is the link: https://wm-video-call-demo.glitch.me/

The demo

The welcome page asks the host of an online meeting or video call to specify a room name and a payment pointer that will receive the streamed payments from the attendees.

Once they submit the form, hosts are redirected to a page that includes an embedded Jitsi meeting with the given room name. Additionally, there is a link displayed to share with attendees. Note that the hosts themselves do not stream any payments while being in the meeting.

Once attendees have obtained the link from the host, those that have Web Monetization enabled can join the meeting and stream micropayments while staying actively on the site. If they leave the tab and Web Monetization stops, they are automatically removed from the video call.

A potential attendee that does not have Web Monetization enabled will not be able to access the room on the demo page.

Here is a recording of the entire flow:


Why it’s just a demo

Let me address the elephant in the room first. Micropayments are too small to cover any consulting fees. Coil streams on average $0.36 per hour on behalf of our members. In the short term, features like tipping or manually increased payment rates could be an alternative. Ideally, however, the host can specify a stream rate when creating the room.

Additionally, the video call is created using the Jitsi API and embedded into the demo page. A demo call called “my-important-meeting-2020” can be found on https://wm-video-call-demo.glitch.me/room/my-important-meeting-2020. The call itself, however, is hosted on Jitsi Meet and can be accessed on https://meet.jit.si/my-important-meeting-2020, circumventing the necessity to stream micropayments. Even if I hosted my own version of Jitsi Meet, the link to the actual room can be found when inspecting the HTML.

The only solution seems to be to bake Web Monetization right into the Jitsi Meet implementation, which is open-source, and not to rely on the API. But there is still a sneaky way for the tech nerd to circumvent payment. You can simply open the browser development tools and change the payment pointer in the HTML head. The host cannot instantaneously verify that they are receiving payments. To address this problem, the ILP community are working on STREAM receipts, which will allow third parties to verify payments into a certain wallet before serving content. Once this feature is rolled out, I’m keen to build a bullet-proof version of the Web Monetized video call system.

All the resources

* The demo

* The source code

* Jitsi

* Jitsi Meet implementation

* Jitsi Meet API

* Web Monetization

* Interledger Protocol

* STREAM receipt RFC

* STREAM receipt implementation

Thanks to Ben and Tiffany for helping me write this post.