• Janus - WebRTC

    AV1, H.265 and Janus walk into a bar…

    It’s been a few weeks since we went quickly through most of the things cooking in Janus. We did a quick overview on a lot of different changes and enhancements, but I felt it was time to dig a bit deeper in one topic in particular, that is the efforts we’ve spent on getting Janus to support AV1 and H.265. A new codec war? If you’re as old as I am (in WebRTC years, at least), you’ll probably remember the “First Codec War”: the one that had VP8 and H.264 face each other in a battle to the death. Eventually,…

  • Janus - Meetecho - WebRTC

    What’s cooking in Janus?

    It’s been a while since I last wrote a blog post, here: more precisely, it was more than 4 months ago when I documented our efforts in getting Real-Time Text support to WebRTC and the SIP plugin. I realized that, for the amounts of things we work on every day, we also do a pretty bad job at telling people about it, which means many may not actually be aware of cool new features or experimentations we’ve started, or even completed. This is even more important now, in a world that has so suddenly and dramatically changed in these past…

  • IETF - Janus - SIP - WebRTC

    Real-time text, SIP and WebRTC

    Real-time text (RTT) has been around for quite some time. Many people actually confuse RTT with Instant Messaging (IM), while the two are quite different, not only in terms of user experience but also from a technological perspective. In fact, where IM envisages people exchanging more or less complete messages among each other only after a trigger of some sort (e.g., when the enter key or a send button is pressed), RTT has text exchanged while it’s being typed. This means that any party in the conversation can, at any time, see the text while the person is typing it,…

  • IETF - Janus - WebRTC

    Simulcast and Janus: what’s new? (and where’s my SSRC?)

    There are several exciting features in WebRTC, but one of the most interesting ones you can take advantage of is definitely simulcast. Rather than explaining what simulcast is, if you want to have a good and in-depth overview of that and why it is useful I definitely encourage you to give this excellent webrtcHacks article by Oscar Divorra a read. That’s where this useful picture comes from: To summarise in a very brief way (seriously, read the article!), simulcast is a way to send multiple streams at the same time (typically different qualities of the same source), thus allowing recipients,…

  • Janus - WebRTC

    Data Channels broadcasting with Janus

    I recently read an announcement from a WebRTC company, celebrating the addition of data channel broadcasting to their solution as an industry first. This made me smile, as Janus has supported data channels almost since day one, which were followed shortly thereafter by integration in most of the plugins for heterogeneous use cases. Anyway, this also made me realize that we probably didn’t do a good enough job at making people aware of this functionality, which is what I’ll try to do in this post. I’ll also try to briefly introduce data channels in the first place, so please indulge me…

  • Janus - WebRTC

    Capturing WebRTC traffic in Janus

    Capturing WebRTC traffic looks relatively easy, and most of the times it really is: you just need to launch tools like tcpdump or Wireshark on the machine of one of the peers (or on any machine that is in the media path), and then have a look at the file that has been generated, which most of the times will be a .pcap or .pcapng file. This kind of activity is especially useful when trying to debug connectivity issues or other WebRTC-related problems: in fact, applications like Wireshark automatically recognize standard protocols like STUN and DTLS, that is the procotols WebRTC PeerConnections are founded upon,…

  • Janus - WebRTC

    Streaming live to YouTube via WebRTC with Firefox (kinda)

    We all read the news recently about YouTube opening the doors to WebRTC as a way to start a live stream. The webrtcHacks guys, and the amazing Philipp Hancke in particular, immediately did their usual great job in studying how that works. Among other things, they found out that, as too often happens (and without any valid reason at all, really), this only works if you’re using Chrome. Firefox? No luck. Edge? Get out of here! Safari? Well, I don’t care much about Safari, to be honest… 🙂 Anyway, this got me thinking. What about playing with this myself, to…

  • Janus - WebRTC

    Tutorial: writing a Janus video call plugin in Lua

    Just a few days ago we released a new Janus plugin, one that will allow users to write custom plugins in Lua rather than using C. It is currently available as a pull request on the Janus Github repo, as it’s still work in progress. Rather than explaining how the plugin works or what it does (please refer to the lengthy description on the pull request for that), the purpose of this blog post is to show how easy it can be to write a new plugin from scratch using Lua: in particular, we’ll create a simple video call plugin,…

  • Janus - WebRTC

    Correlating information from Janus event handlers

    In the last blog post we introduced the Janus Event Handlers, and how they can be used to be asynchronously notified about whatever is happening within a Janus instance. We also presented a real example, where we saved the information associated with an EchoTest plugin session and the related WebRTC PeerConnection to a database for some analysis and evaluations. While a useful introduction, that article was not a comprehensive view of what can be done with events, especially in a complex application that may involve multiple multimedia streams, or even multiple Janus plugins at the same time. In fact, when…

  • Janus - WebRTC

    Playing with event handlers in Janus: a practical example

    While playing with Janus and using its features in creative ways can be quite fun, managing and monitoring a Janus instance often isn’t, and can be problematic. Applications may not be working as expected, PeerConnections may be broken for different reasons, or simply tracking what’s happening in a specific plugin can be very hard to figure out. Luckily enough, Janus does provide some tools to help with that. Some months ago, for instance, we introduced the Admin API and how it can be used to inspect the internals of sessions and handles, in particular with respect to WebRTC connections from the Janus perspective.…