Book Image

Getting Started with WebRTC

By : Rob Manson
Book Image

Getting Started with WebRTC

By: Rob Manson

Overview of this book

WebRTC delivers web-based real-time communication and is set to revolutionize our view of what the Web really is. Streaming audio and video from browser to browser, as well as opening raw access to the camera and microphone, is already creating a whole new dynamic web. WebRTC also introduces real-time data channels that will allow interaction with dynamic data feeds from sensors and other devices. This really is a great time to be a web developer! Getting Started with WebRTC provides all of the practical information you need to quickly understand what WebRTC is, how it works, and how you can add it to your own web applications. It includes clear working examples designed to help you get started building your own WebRTC-enabled applications right away. Getting Started with WebRTC will guide you through the process of creating your own WebRTC application that can be applied in a number of different real-world situations, using well documented and clearly explained code examples. You will learn how to quickly and easily create a practical peer-to-peer video chat application, an audio only call option, and how a Web-Socket-based signaling server can also be used to enable real-time text-based chat. You will also be shown how this same server and application structure can easily be extended to include simple drag-and-drop file sharing with transfer updates and thumbnail previews.
Table of Contents (15 chapters)
Getting Started with WebRTC
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Stream processing options


Once you have set up any video stream from either a local or remote source to display within a <video> element on your page, you can then access this data to process it in any number of ways. You can create filters to change colors, create chromakey effects, or do facial/object recognition, just to name a few.

Here's a brief overview of how you access the data within these streams to set up this type of processing:

  1. Set up a <canvas> element in the DOM.

    • declaratively then via getElementById or similar

    • createElement("canvas"), then appendChild()

  2. Get a 2D drawing context for <canvas>.

    canvas_context = canvas.getContext('2d');
  3. Draw the <video> frames onto <canvas>.

    canvas_context.drawImage(video, top, left, width, height);
  4. Get the RGBA Uint8ClampedArray of the pixels.

    context.getImageData(top, left, width, height).data;
  5. Loop through the typed array to process pixel rows and columns.

    for (...) { for (...) { … } …  }
  6. Render results.

    • using HTML/JS/CSS...