لطفا جهت اطلاع از آخرین دوره ها و اخبار سایت در
کانال تلگرام
عضو شوید.
آموزش تسلط بر 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
نمایش نظرات