آموزش تسلط بر webRTC - ویدیو و اشتراک گذاری صفحه نمایش در زمان واقعی

Mastering webRTC - real-time video and screen-share

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: کار با MediaStreams، میکروفون، دوربین و صفحه نمایش. اتصال مرورگرها - PeerConnection & Signaling، w/React Connect دو یا چند رایانه جریان‌های صوتی/تصویری راه‌اندازی یک سرور سیگنالینگ به عنوان یک واسطه برای مذاکره درباره اتصال نحوه ادغام webRTC در یک برنامه React با سازمان کد Redux برای به حداقل رساندن سردرگمی با رشد برنامه شما 4 (بله 4) منبع مختلف همگام را مدیریت کنید تا یک برنامه وب باورنکردنی ایجاد کنید. ما از socketio برای ساخت سرور سیگنالینگ خود استفاده می کنیم. باید آن را بدانید یا بتوانید من را دنبال کنید برای بخش‌های بعدی: دسترسی به یک ماشین لینوکس (مانند AWS، Azure، DigitalOcean و غیره)

TL;DR - در این دوره WebRTC را یاد خواهید گرفت - چگونه یک فید ویدیویی دریافت کنید و یک چت ویدیویی بین مرورگرها را فقط با جاوا اسکریپت تنظیم کنید. بخش اول و چند پروژه بعدی فقط front-end هستند، بخش اتصال و پروژه های بعدی به Node.js و Socketio نیاز دارند.


سال 2023 است. چه به دلیل همه‌گیری، ربات‌های چت یا صرفه‌جویی در هزینه، کار از راه دور یک چیز است. پزشکی از راه دور یک چیز است. صحبت کردن با افرادی که 6 منطقه زمانی دورتر هستند یک چیز است. می‌توانید کاربران خود را از برنامه خود به زوم انتزاع کنید زیرا همیشه کار می‌کند، اما کنترل و ردیابی تعامل را از دست می‌دهید.

webRTC را وارد کنید.

WebRTC یکی از مرورگرهایی است که باید به Apis های شگفت انگیز توجه داشته باشد. این اجازه می دهد تا به میکروفون، دوربین، حتی صفحه نمایش دسترسی داشته باشید و آنها را در یک سوکت شبکه به طور مستقیم در مرورگر دیگری به اشتراک بگذارید. سرور (بیشتر) یا واسطه دیگری برای اضافه کردن پهنای باند، اشکالات و آشفتگی وجود ندارد.

همراه با سوکت‌های وب، webRTC بخش ویدیویی ارتباط بلادرنگ مرورگر را ارائه می‌کند و یکی از آخرین شکاف‌ها را در ارتباطات انسانی و مبتنی بر وب پر می‌کند. اگر در حال خواندن این مطلب هستید، شانس خوبی وجود دارد که در مورد webRTC شنیده اید. شاید حتی یک آموزش در مورد آن انجام شود. اما تا کجا پیش رفتی؟ در تجربه من، اکثریت قریب به اتفاق مطالب موجود در وب فراتر از یک کلون زوم با شروع سریع نیست. شما یاد نمی‌گیرید که هر چیزی چگونه کار می‌کند، هرگز به اسناد نگاه نمی‌کنید، و در پایان به این فکر می‌کنید که اکنون چه کار کنید. آیا این تمام کاری است که webRTC می تواند انجام دهد؟ تکه مواد باقیمانده واآآی بالای سر همه است. این واقعیت که webRTC تقریباً همزمان با Websocket API منتشر شد و بیشتر توسعه دهندگان هنوز نمی دانند چگونه از آن استفاده کنند، گواه این شکاف است.

این دوره اولین قدم برای کاهش آن است! این یک راهنمای شروع سریع برای webRTC نیست. تعداد زیادی از آنها در سراسر اینترنت وجود دارد. اگر می خواهید یک معرفی 10 دقیقه ای برای 3-4 موردی که برای ایجاد یک کلون زوم اولیه باید بدانید، قطعاً باید به جای دیگری نگاه کنید. از طرف دیگر، اگر واقعاً به دنبال یادگیری یکی از عالی‌ترین APIهای جاوا اسکریپت هستید که به نظر می‌رسد هیچ کس نمی‌داند، باید در کنار آن باشید. مانند Express و سایر قطعات جاوا اسکریپت/نود، در موج از آن عبور می‌کند تا به اندازه کافی یاد بگیرد تا به اصطلاح «توسعه‌دهنده تمام پشته» برسیم. هدف اصلی من این است که به شما کمک کنم تا بفهمید چگونه از یک توسعه دهنده خوب به یک توسعه دهنده عالی تبدیل شوید. درک ... نه فقط دانستن چند روش ... WebRTC بخشی از آن است!

من برای اولین بار در سال 2015 از webRTC برای راه اندازی مشابه پزشکی از راه دور استفاده کردم. من از آن زمان دنبال می‌کنم و از اینکه به دلیل پشتیبانی بی‌میل اپل، بیشتر مورد توجه جریان اصلی قرار نگرفته، ناامید شده‌ام، اما بیشتر به این دلیل که توسعه‌دهندگان آن را نمی‌دانند. این راه را برای پیشرفت‌های بسیاری در برنامه‌های موجود و زمینه‌سازی آشکار برای برنامه‌های جدید باز می‌کند. بیایید آن را تغییر دهیم :) برای یک نگاه دقیق به webRTC آماده شوید و شروع به چت ویدیویی/صفحه‌ای هم‌زمان درون برنامه‌ای کنید.

آنچه ما پوشش می دهیم:

فقط قسمت جلویی

  • getUserMedia() - دسترسی به میکروفون و دوربین در مرورگر

  • پخش فید در <ویدئو/

  • MediaStream و MediaStreamTrack - چه چیزی یک فید ویدیویی را تشکیل می دهد

  • محدودیت‌ها - getSupportedConstraints() و getCapabilities() - دیدن کارهایی که این مرورگر می‌تواند انجام دهد

  • applyConstraints - تغییر فید در جریان

  • ضبط ویدئو/صوت و پخش آن

  • گرفتن صفحه برای اشتراک‌گذاری صفحه و ضبط آن

  • تغییر دستگاه های ورودی/خروجی در فید شما

Back-End مورد نیاز (node، socketio)

  • RTCPeerConnection - قلب webRTC

  • ایجاد پیشنهاد و پاسخ

  • تنظیم RTCSessionDescription

  • فرایند سیگنالینگ

  • یک سرور سیگنالینگ با سوکت بسازید

  • جمع آوری نامزدهای ICE

  • ساخت برنامه React با استفاده از webRTC




سرفصل ها و درس ها

مقدمه ای بر webRTC Introduction to webRTC

  • یک نکته کوتاه قبل از تماشای ویدیوی بعدی... A brief note before you watch the next video...

  • معرفی Introduction

  • همه کدهای من (لینک github) All my code (github link)

  • دریافت پایگاه کد برای یک ویدیوی خاص Getting the codebase for a specific video

  • نحوه کدنویسی How I code

  • webRTC چیست و چه کاربردی دارد؟ What is webRTC and what does it do?

  • اما سال 2023 است: چرا باید از webRTC روی SDK (Zoom) استفاده کنم؟ But it's 2023: Why would I use webRTC over an SDK (Zoom)?

پروژه - زمین بازی getUserMedia - پروژه (لنگ) که اصول اولیه را به شما می آموزد Project - getUserMedia playground - (lame) project that teaches you the basics

  • راه اندازی فایل پروژه Project file setup

  • getUserMedia - جایی که همه چیز شروع می شود getUserMedia - where everything starts

  • فید، getTracks() و MediaStreamTracks را پخش کنید Play the feed, getTracks(), and MediaStreamTracks

  • چند به روز رسانی رابط کاربری A few UI updates

  • نمای کلی محدودیت ها - getSupportedConstraints() و getCapabilities() Constraints overview - getSupportedConstraints() and getCapabilities()

  • تغییر وضوح، نرخ فریم، نسبت ابعاد - applicationConstraints() Changing resolution, framerate, aspect ratio - applyConstraints()

  • ضبط فید - MediaRecorder و webRTC Recording a feed - MediaRecorder and webRTC

  • دکمه های به روز رسانی Update buttons

  • گرفتن صفحه نمایش Capturing the screen

  • دریافت ورودی/خروجی های موجود با enumerateDevices() Getting available input/outputs with enumerateDevices()

  • در حال بارگیری گزینه های ورودی/خروجی Loading up input/output options

rtcPeerConnection - پخش ویدئو، همتا به همتا rtcPeerConnection - Stream video, peer to peer

  • بخش نسخه ی نمایشی و نمای کلی Section Demo & Overview

  • rtcPeer اتصال و سیگنالینگ rtcPeerConnection and signaling

  • سیگنالینگ قسمت 1 - SDP Signaling Part 1 - SDP

  • قسمت 2 سیگنالینگ - ICE (و STUN) Signaling Part 2 - ICE (and STUN)

  • ساختار فایل File Structure

  • RTC محلی local RTC

  • setLocalDescription() setLocalDescription()

  • راه اندازی Socket.io و HTTPS Socket.io and HTTPS setup

  • لیست وظایف اتصال Connection TaskList

  • لیست وظایف اتصال - قسمت 2 Connection TaskList - part 2

  • ارائه جدید پیشنهاد emit newOffer

  • انتشار iceCandidates Emit iceCandidates

  • پیشنهادات موجود و جدید را برای همه مشتریان بارگیری کنید Load existing and new offers on all clients

  • پاسخ ایجاد کنید Create answer

  • خطا در مدیریت فرآیند سیگنالینگ Error handling the signaling process

  • در حال انتشار پاسخ Emitting answer

  • گوش دادن به پاسخ و setRemoteDescription (پاسخ) Listening for answer and setRemoteDescription(answer)

  • درخواست نامزدهای ICE - قسمت 1 Apply ICE candidates - Part 1

  • درخواست نامزدهای ICE - قسمت 2 Apply ICE candidates - Part 2

  • اضافه کردن آهنگ از همتا از راه دور - MAGIC! Add tracks from remote peer - MAGIC!!

  • بارگیری روی دستگاه دیگری در همان شبکه Loading on another device on the same network

webrtc و React - یک سایت TeleLegal webrtc and React - a TeleLegal site

  • نسخه ی نمایشی پروژه Project Demo

  • ساختار پروژه و راه اندازی Front-end Project Structure and Front-end Setup

  • راه اندازی Back-end Back-end Setup

  • ایجاد JWT و پیوند برای شبیه سازی زمان بندی Creating a JWT & link to simulate scheduling

  • React-Router را برای قسمت جلویی خود اضافه کنید Add React-Router for our front-end

  • مسیر Join-Video را راه اندازی کنید و داده های رمزگشایی شده را در React دریافت کنید Setup Join-Video route and get the decoded data in React

  • اجزای شروع را اضافه کنید Add starting components

  • redux را سیم کشی کنید و کاهنده وضعیت تماس را ایجاد کنید Wire up redux and make callStatus reducer

  • دکمه های اکشن، بوت استرپ و fontawesome را اضافه کنید Add action buttons, bootstrap, and fontawesome

  • getUserMedia() و استریم را در redux ذخیره کنید getUserMedia() and store the stream in redux

  • peerConnection را ایجاد کنید و آن را در redux ذخیره کنید Create peerConnection and store it in redux

  • فکر کردن در مورد اینکه توابع ما به کجا تعلق دارند (و چند رفع اشکال) Thinking through where our functions belong (& a few bug fixes)

  • چکیده کردن دکمه های ویدیو و صدا Abstracting the Video and Audio buttons

  • افزودن فید ویدیوی محلی Adding the local video feed

  • آهنگ های ما را به peerConnection اضافه کنید Add our tracks to the peerConnection

  • فید ویدیوی محلی را فعال و غیرفعال (بی صدا) کنید Enable and disable (mute) the local video feed

  • نمایش ورودی های ویدیوی محلی (گزینه های دوربین) Display local video inputs (camera options)

  • دستگاه ویدیویی جدید را در حالت انتخابی تنظیم کنید Set new video device on select

  • ()placeTracks replaceTracks()

  • جزء کشویی چکیده Abstract DropDown component

  • کامپوننت AudioButton را تنظیم کنید Set up AudioButton component

  • دستگاه های ورودی و خروجی صدا را تغییر دهید Switch Audio Input and Output Devices

  • شروع، بی صدا، لغو صوت Start, mute, unmute audio

  • پیشنهادات را در backEnd سازماندهی کنید و uuid را اضافه کنید Organize offers on backEnd and add uuid

  • پس از اشتراک گذاری آهنگ ها ()creativeOffer createOffer() once the tracks are shared

  • علامت گذاری داشبورد را برای حرفه ای اضافه کنید Add Dashboard markup for professional

  • اختیاری - مروری بر نشانه گذاری Optional - Overview of markup

  • احراز هویت حرفه ای Authenticate professional

  • بازسازی سوکت socket refactoring

  • سازماندهی مجدد داده های قرار Reorganize Appointment Data

  • داده های قرار را بکشید Pull Appointment Data

  • به پیشنهادات مشتری گوش دهید Listen for offers on the client

  • مسیر ویدیویی پیوستن را برای حرفه ای ایجاد کنید Create join video route for professional

  • اطلاعات تماس را به صفحه ویدیوی حرفه ای اضافه کنید Add Call Info to Professional Video Page

  • پاسخ ایجاد کنید و توضیحات را تنظیم کنید Create Answer and set Descriptions

  • فهرست وظایف را مرور کنید و پیشرفت ما را تشویق کنید Review Task List and Cheer for Our Progress

  • ارسال پاسخ به سرور Emit Answer Up To Server

  • برای پاسخ جدید در مورد مشتری گوش دهید Listen for New Answer On the Client

  • ارسال کاندیدهای یخ به سرور Emit Ice Candidates To Server

  • کاندیداهای یخ را برای مشتریان ارسال کنید Send Ice Candidates to clients

  • نامزدهای یخ را به اتصال همتا اضافه کنید Add Ice Candidates to Peer Connection

  • AddTracks و... پیروزی!!! (برنامه آزمایشی) AddTracks and... VICTORY!!! (test app)

  • رفع 2 اشکال کوچک Fix 2 small bugs

  • HangupButton را وادار به انجام کاری کنید! Make the HangupButton do something!

  • ReplaceTracks در تغییر دستگاه ReplaceTracks on change device

استقرار برنامه ما در AWS Deploying Our App To AWS

  • ترسیم و توضیح فرآیند Drawing Out And Explaining The Process

  • هشدار... این بخش در حال استقرار است، نه WebRTC و ممکن است سخت باشد :) Warning... this section is deploying, not WebRTC and might be hard :)

  • راه اندازی یک سرور AWS (امیدوارم) رایگان برای اجرای برنامه ما Setting up a (hopefully) free AWS server to run our app on

  • دریافت دامنه و تنظیم آن به سرور ما و نصب آپاچی Getting a Domain &Setting It To Point At Our Server & Install Apache

  • کشیدن فایل ها روی سرور ما از github و ساختن React Pulling files onto our server from github and building React

  • فایل htaccess و vhost برای سخنرانی بعدی htaccess file and vhost for next lecture

  • Vhost - به آپاچی می گوییم که سایت های ما کجا هستند Vhost - Telling Apache Where Our Sites Are

  • Reverse Proxy Vhost - برای باطن Reverse Proxy Vhost - For the backend

  • HTTPS و پروکسی معکوس Vhost HTTPS and Reverse Proxy Vhost

نمایش نظرات

آموزش تسلط بر webRTC - ویدیو و اشتراک گذاری صفحه نمایش در زمان واقعی
جزییات دوره
12.5 hours
93
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
743
4.9 از 5
ندارد
دارد
دارد
Robert Bunch
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Robert Bunch Robert Bunch

مدرس مدرسه کد، معمار و مهندس نرم افزار