Mô tả

TL;DR - you'll learn WebRTC in this course - how to get a video feed and setup a video chat between browsers with just JavaScript. The first section and a few later projects are front-end only, the connection section and later projects require Node.js and Socketio.


It's 2023. Whether because of the pandemic, chat bots, or cost savings, working remote is a thing. Telemedicine is a thing. Talking to people 6 time zones away is a thing. You can abstract your users from your app to Zoom because it always works, but you lose all control and tracking of the interaction.

Enter webRTC.

WebRTC is one of the browsers must mind blowing apis. It allows access to the mic, camera, even the screen AND to share them across a network socket DIRECTLY to another browser. No server (mostly) or other middleman to add bandwidth, bugs, and chaos.

Along with websockets, webRTC presents the video-side of browser real-time communication, bridging one of the last gaps in both human and web-based communication. There's a good chance if you're reading this, you've heard about webRTC. Maybe even done a tutorial on it. But how far did you get? In my experience, the vast majority of the material on the web goes no farther than a quick-start, zoom clone. You don't learn how anything works, never look at the docs, and are stuck at the end wondering what to do now. Is that all webRTC can do? The remaining shred of material is waaaaay over everyone's head. The fact that the webRTC was released about the same time as the websocket API  and most developers still don't know how to use it is evidence of the gap.

This course is the first step to alleviate that! It is not a quick start guide to webRTC. There are loads of those all over the Internet. You should definitely look elsewhere if you are wanting a 10 minute intro to the 3-4 things you need to know to make a basic zoom clone. On the other hand, if you are looking to really learn one of the most awesome JavaScript APIs that no one seems to know, you should stick around. Like Express and other JavaScript/Node pieces, it's getting passed over in the wave to learn just enough to get to the term "full-stack developer." My main goal is to help you figure out how to go from being a good developer to a great developer. Understanding... not just knowing a few methods... WebRTC is part of that!

I first used webRTC in 2015 for a startup similar to telemedicine. I've been following since and have been frustrated that it hasn't gotten more mainstream notice due to Apple's reluctant support, but mostly because devs don't know it. It opens the way for so many improvements to existing applications and obvious groundwork for new ones. Let's change that :) Prepare to for a detailed look at webRTC and start going in-app real-time video/screen chat.

What we cover:

Front-end only portion

  • getUserMedia() - getting access to the mic and camera in the browser

  • playing the feed in a <video />

  • MediaStream and MediaStreamTrack - what makes up a video feed

  • Constraints - getSupportedConstraints() and getCapabilities() - seeing what this browser can do

  • applyConstraints - changing the feed on the fly

  • Recording video/audio and playing it back

  • Capturing the Screen for screen share and recording it

  • Changing input/output devices in your feed

Back-End required (node, socketio)

  • RTCPeerConnection - the heart of webRTC

  • Creating an offer and an answer

  • Setting RTCSessionDescription

  • The Signaling Process

  • Build a signaling server with socketio

  • Gathering ICE Candidates

  • Building a React app w/redux that uses webRTC



Bạn sẽ học được gì

Connect two or more computers audio/video streams

Set up a signaling server to act as a middle man to negotiate the connection

How to integrate webRTC into a React App w/redux

Code organization to minimize confusion as your app grows

Manage 4 (yes 4) different async sources to create an incredible web app

Yêu cầu

  • Need to be familiar with getUserMedia() or have taken part 1
  • Experience with JavaScript and Node (not a ninja, but decent exposure)
  • We use socketio to build our signaling server. You must know it, or be able to follow me
  • For later sections: Access to a Linux machine (like AWS, Azure, DigitalOcean, etc)

Nội dung khoá học

5 sections

Introduction to webRTC

7 lectures
A brief note before you watch the next video...
00:22
Introduction
04:23
All my code (github link)
00:00
Getting the codebase for a specific video
04:03
How I code
03:57
What is webRTC and what does it do?
04:55
But it's 2023: Why would I use webRTC over an SDK (Zoom)?
05:52

Project - getUserMedia playground - (lame) project that teaches you the basics

11 lectures
Project file setup
02:50
getUserMedia - where everything starts
12:52
Play the feed, getTracks(), and MediaStreamTracks
07:16
A few UI updates
08:50
Constraints overview - getSupportedConstraints() and getCapabilities()
10:05
Changing resolution, framerate, aspect ratio - applyConstraints()
08:14
Recording a feed - MediaRecorder and webRTC
12:38
Update buttons
04:31
Capturing the screen
09:38
Getting available input/outputs with enumerateDevices()
09:24
Loading up input/output options
10:32

rtcPeerConnection - Stream video, peer to peer

21 lectures
Section Demo & Overview
05:57
rtcPeerConnection and signaling
07:21
Signaling Part 1 - SDP
02:58
Signaling Part 2 - ICE (and STUN)
06:56
File Structure
07:26
local RTC
13:39
setLocalDescription()
04:07
Socket.io and HTTPS setup
09:26
Connection TaskList
05:45
Connection TaskList - part 2
12:29
emit newOffer
09:05
Emit iceCandidates
08:18
Load existing and new offers on all clients
09:08
Create answer
08:52
Error handling the signaling process
07:51
Emitting answer
07:17
Listening for answer and setRemoteDescription(answer)
06:28
Apply ICE candidates - Part 1
08:06
Apply ICE candidates - Part 2
05:16
Add tracks from remote peer - MAGIC!!
05:34
Loading on another device on the same network
04:37

webrtc and React - a TeleLegal site

46 lectures
Project Demo
05:30
Project Structure and Front-end Setup
05:33
Chrome and localhost certs
00:20
Back-end Setup
07:53
Creating a JWT & link to simulate scheduling
10:43
Add React-Router for our front-end
05:26
Setup Join-Video route and get the decoded data in React
08:11
Add starting components
09:32
Wire up redux and make callStatus reducer
07:37
Add action buttons, bootstrap, and fontawesome
07:27
getUserMedia() and store the stream in redux
09:20
Create peerConnection and store it in redux
06:44
Thinking through where our functions belong (& a few bug fixes)
06:14
Abstracting the Video and Audio buttons
07:36
Adding the local video feed
09:37
Add our tracks to the peerConnection
07:58
Enable and disable (mute) the local video feed
06:23
Display local video inputs (camera options)
11:20
Set new video device on select
06:53
replaceTracks()
08:18
Abstract DropDown component
03:07
Set up AudioButton component
10:57
Switch Audio Input and Output Devices
10:53
Start, mute, unmute audio
09:53
Organize offers on backEnd and add uuid
07:47
createOffer() once the tracks are shared
13:08
Add Dashboard markup for professional
04:48
Optional - Overview of markup
01:52
Authenticate professional
09:44
socket refactoring
09:08
Reorganize Appointment Data
03:14
Pull Appointment Data
09:24
Listen for offers on the client
10:59
Create join video route for professional
05:36
Add Call Info to Professional Video Page
03:44
Create Answer and set Descriptions
10:12
Review Task List and Cheer for Our Progress
06:32
Emit Answer Up To Server
07:57
Listen for New Answer On the Client
11:49
Emit Ice Candidates To Server
09:17
Send Ice Candidates to clients
12:38
Add Ice Candidates to Peer Connection
11:36
AddTracks and... VICTORY!!! (test app)
05:34
Fix 2 small bugs
02:19
Make the HangupButton do something!
05:24
ReplaceTracks on change device
07:53

Deploying Our App To AWS

9 lectures
Drawing Out And Explaining The Process
15:24
Warning... this section is deploying, not WebRTC and might be hard :)
00:16
Setting up a (hopefully) free AWS server to run our app on
35:57
Getting a Domain &Setting It To Point At Our Server & Install Apache
17:23
Pulling files onto our server from github and building React
19:34
htaccess file and vhost for next lecture
00:12
Vhost - Telling Apache Where Our Sites Are
12:16
Reverse Proxy Vhost - For the backend
00:08
HTTPS and Reverse Proxy Vhost
23:27

Đánh giá của học viên

Chưa có đánh giá
Course Rating
5
0%
4
0%
3
0%
2
0%
1
0%

Bình luận khách hàng

Viết Bình Luận

Bạn đánh giá khoá học này thế nào?

image

Đăng ký get khoá học Udemy - Unica - Gitiho giá chỉ 50k!

Get khoá học giá rẻ ngay trước khi bị fix.