توسعه فناوری پخش زنده یا live video
- 1399/10/13
- 656
- سایر مقاله ها
معرفی فناوری لایو ویدئو یا پخش زنده
امروزه سرعت بخشیدن به روند تعاملات فردی و گروهی و همچنین معاملات تجاری، از اهمیت ویژه ای برخوردار است تا حدی که می توان گفت رشد صنعت نیز به اندازه این مسئله مورد توجه نیست. ضرورت این امر را می توان در تغییراتی چون ارتقا پست الکترونیکی به Slack یا تغییر بلاگ نویسی به توییت کردن، مشاهده نمود. همچنین ظهور تکنولوژی پخش زنده یا همان live video به عنوان یک رسانه، بیش از هر چیز دیگری ما را متوجه اهمیت این تعاملات گروهی می کند. برای درک بهتر این مسئله می توانید به پذیرش اجتماعی سریع برنامه هایی مانند Instagram Live ، Doctor on Demand و Houseparty نگاه کنید.
علت این گرایش و پذیرش سریع این فناوری لایو ویدیو را می توان در عوامل آشکاری مانند پیشرفت سخت افزار ، بهبود اتصالات شبکه و مهمتر از آن تغییر گرایشات و رفتارهای مصرف کننده دانست اما، یکی از اصلی ترین کاتالیزورها، پیشرفت فناوری ارتباطات است که به طور خاص، به آن ارتباطات وب لحظه ای یا web real time connection) WebRTC) می گویند.
WebRTC استانداردی است که برقراری ارتباطات بدون افزونه و بی درنگ یا همان ارتباطات real time در مرورگر را امکان پذیر می کند. این استاندارد با بهره گیری ازعناصر اساسی برای ایجاد ارتباطات با کیفیت بالا، مانند شبکه، صدا و اجزای ویدیویی، در برنامه های گفتگوی صوتی و تصویری مورد استفاده قرار می گیرد. این مولفه ها، هنگامی که در مرورگر قرار می گیرند، از طریق JavaScript API قابل دسترسی هستند و به توسعه دهندگان این امکان را می دهند تا به راحتی برنامه WebRTC خود را پیاده سازی کنند.
WebRTC استانداردی است که فناوری جدید پخش زنده را سرعت می بخشد. امروزه برنامه های بسیار خوبی برای چت های تصویری ساده در بازار موجود است، با این حال توسعه دهندگانی که با تکنولوژی WebRTC در حال ساخت این قابلیت هستند، نگرش و دیدگاه های ما را درباره پخش زنده و تأثیر آن بر برنامه ها و تجربیات وبگردی را، به طور کامل تغییر داده اند.
به طور معمول ، با برنامه های live video ، طول تماس در یکی از سه باکت قرار می گیرد:
- یک به یک
- گروه کوچک
- پخش مستقیم (livestream) در مقیاس بزرگ
اکنون نگاهی به پخش مستقیم یا livestream داشته باشیم . تکنولوژی پخش مستقیم یکی از روشهای اجرای فناوری live video است که با گذشت زمان بهبود یافته و در حال تعاملی تر شدن است. این تکنولوژی به مخاطبان امکان می دهد که در پخش زنده تعامل داشته باشند، بجای اینکه فقط منفعلانه آن را تماشا کنند. به عنوان مثال ، همه ما دیده ایم که روزنامه نگاران و مفسران از طریق اسکایپ به گزارشات خبری می پیوندند و یک تماس زنده تلویزیونی را برقرار می کنند – البته این تجربه می تواند برای کاربر نهایی بی نقص تر نیز شود. تصور کنید از یک برنامه تلفن همراه برای CNN استفاده می کنید و علاوه بر مشاهده، در یک تماس تلویزیونی زنده نیز شرکت کنید. اگر شما یک توسعه دهنده یا developer هستید که می خواهد یک برنامه پخش مستقیم تعاملی ایجاد کند ، مسیرهای مختلفی دارید که می توانید برای معماری برنامه خود دنبال کنید. WebRTC عنصری است که امکان برقراری ارتباط را فراهم می کند. WebRTC یک فناوری اساسی است و نمی توان آن را به عنوان یک راه حل یا یک نرم افزار در نظر گرفت. برای درک بهتر این مطلب، WebRTC را می توانید چیزی شبیه HTML یا JavaScript بدانید.
سناریوهای سنتی پخش ویدئو
در دنیای پخش سنتی ، سازوکار عملی برای ارائه جریانهای رسانه ای، شامل پخش CDN ها و واحدهای کنترلی چند نقطه ای (MCU) است که جریان های رسانه را به هم متصل کرده و مسیریابی می کنند. این رویکرد برای یک سناریوی صرفا مشاهده استفاده می شود، یعنی شما تعاملی ندارید و صرفا ناظر هستید. سناریوهای سنتی دارای مزایا و معایب متعددی می باشد.
علیرغم اینکه این رویکرد برای توزیع محتوای سنتی و یک به یک مفید می باشد و می تواند تعداد زیادی از کاربران را پشتیبانی کند ، اما معایبی نیز دارد. پروتکل های پخش جریانی سنتی مانند RTMP ، HLS ، MPEG-DASH و موارد دیگر ، تأخیر بالایی دارند (که گاهی بیش از 30 ثانیه است). از آنجا که این پروتکل ها، برای پخش ویدئوهای on-demand (VOD) طراحی شده اند و این نوع ویدیو نباید تاخیر زیادی داشته باشند، بنابراین دارای بافر داخلی هستند. اگر چندین شرکت کننده در انتشار رسانه حضور داشته باشند ، MCU ها به طور سنتی جریان ها را رمزگشایی ، ترکیب و مجددا رمزگذاری می کنند. اگر چه این مورد برای چندین کانال استاتیک کار می کند ، اما قطعاً در مواردی که محتوای انبوه تولید شده توسط کاربر دارید، مفید و مقیاس پذیر نیستند. همچنین، MCU ها عمدتا محدود به عملکرد محاسبات هستند و باعث می شوند در مقیاس بالا این تجهیزات بسیار گران باشد.
SFU چیست؟
با ظهور WebRTC و موتورهای رسانه ای بهینه شده، برای تأخیر کم و ارتباطات گروهی کوچک ، MCU های سنتی با واحدهای حمل و نقل انتخابی (SFU) جایگزین شده اند. برای درک بهتر مسئله، SFU ها را به عنوان روترهای رسانه ای در نظر بگیرید ، یعنی جایی که هیچ یک از جریان های ورودی با هم تداخل ندارند ، بلکه بسته ها به سمت مشترکان مناسب هدایت می شوند. با توجه به اینکه هیچ کدگذاری واقعی در اینجا اتفاق نمی افتد، مقیاس گذاری خوشه ای از SFU ها برای ارائه تعداد زیادی از جلسات رسانه ای، از جنبه محاسباتی کارآمدتر است. اگرچه این یک روش موثر و مفید است ، اما مقیاس بندی یک نمونه واحد SFU برای ده ها هزار شرکت کننده، واقعاً دشوار است.
برای فهم بهتر آنچه گفته شد این سناریو را مجسم کنید : به یک عده فکر کنید که یک بازی Super Bowl را تماشا می کنند و همچنین در مورد بازی با یکدیگر صحبت می کنند. در این سناریو ، شما می خواهید همه جریان های رسانه ای تا حد امکان تأخیر کمی داشته باشند. یکی دیگر از معایب این طرح این است که، هر بیننده یک کپی از جریان را به سمت دستگاه خود می کشد، این ارتباط می تواند از نظر پهنای باند کاملاً فشرده شده باشد، به ویژه هنگامی که مصرف کنندگان با دستگاه های موبایل هستند که از شبکه های تلفن همراه محدود استفاده می کنند. همانند اکثر فناوری ها، شما معمولاً به یک راه حل ترکیبی فکر می کنید به این معنی که از هر یک از روش ها قسمتی را انتخاب کرده و یک روش مناسب ارائه دهید. اولین قدم این است که بتوانید نقاط پایانی خود را به گروه های مجزا زیر تقسیم کنید:
- On-Stage: مسیر رسانه ای با تأخیر کم برای افراد روی صحنه. اساساً، این گروه شرکت کنندگانی هستند که در جلسه به صورت زنده حضور دارند. به این افراد گره های پایانی گفته می شود که به عنوان گروهی از افراد حاضر در پانل، می باشند.
- In-Line: مسیر رسانه ای با تأخیر کم برای افراد خارج از صحنه. اساساً، این گروه متشکل از شرکت کنندگانی است که در حال مشاهده محتوا هستند، اما مایل به شرکت در آن نیز می باشند. این یک مرحله میانی است که می خواهید در آن تأخیر پخش جریانی مستقیم را با شرکت کننده ای که می خواهد شروع به تعامل کند و نیاز به همگام سازی دارد ، تراز کنید.
- خارج از صحنه: مسیر رسانه ای با تأخیر زیاد برای افراد خارج از صحنه. این گروه افرادی هستند که در حالت فقط مشاهده صرف هستند اما به طور بالقوه می توانند به مرحله بعدی برسند.
اکنون ، کل معماری سیستم به این مسئله محدود می شود: اطمینان از اینکه همه افراد گروه on stage و گروه in line دارای کمترین زمان تاخیر ممکن هستند و افراد در گروه خارج از صحنه با تأخیر نسبتاً بالایی نظاره گر ویدیو هستند. اکنون می توان اطمینان حاصل کرد که همه افراد در گروه های داخل صحنه و درون خط به SFU متصل هستند، جایی که آن ها از پروتکل هایی مانند RTP برای رسیدن به کمترین مسیر رسانه ای ممکن و در نتیجه کمترین زمان تاخیر، استفاده می کنند. سپس SFU می تواند جریان ها را به MCU هدایت کند که آنها را از طریق CDN با جریان سنتی ادغام شده و CDN رسانه ها را به سمت تعداد بسیار زیادی از شرکت کنندگان هدایت می کند. منطق برنامه باعث می شود که افراد در گروه in line برای رفتن به صحنه به صورت صف کشیده وارد صحنه شوند و افرادی که صحنه را ترک می کنند به سمت حالت فقط مشاهده سیستم، هدایت می شوند.
آیا می توانیم حتی بهتر عمل کنیم؟
با کمک مهندسی سیستم های هوشمند، می توان این عملکرد را ارتقا داد. می توان در دسته ای از SFU ها به جای استفاده از یک ساختار سست و آزاد، آن ها را به صورت یک ساختار درختیTREE- B به یکدیگر متصل کرد تا توزیع کنندگان بتوانند به ریشه آن بروند و مشترکین نیز می توانند جریان های خود را از طریق گره های برگ به اشتراک بگذارند. این یک درخت n تایی یا به اصطلاح n-ary است. با استفاده از این درخت می توان تعداد زیادی جریان را در زمان واقعی با تاخیر بسیار پایین به شرکت کنندگان ارائه داد. در روش های فعلی که برای این کار استفاده می شود چندین مشکل و مسئله وجود دارد که با استفاده از این موارد حل می شود. به عنوان مثال، اگر ما از RTP برای ارسال رسانه و RTCP برای دریافت بازخورد استفاده کنیم ، این امکان وجود دارد که با احتمال بالایی مقدار بازخورد RTCP که با سرعت در حال ارسال است، مسیر باند را تحت فشار قرار دهد. این اتفاق زمانی می افتد که شما با شرکت کنندگان بیشتری در تماس هستید. حتی اگر نوعی خاتمه هوشمند RTCP اجرا شود، برای فعال کردن یک رویداد با کیفیت بالا به تکنیک هایی مانند simulcast / SVC نیاز دارید.
نتیجه
شایان ذکر است که " آخرین قطعه از پازل " زمانی تکمیل شد که اپل قابلیت پشتیبانی از WebRTC را که به safari اضافه کرده بود، را اعلام کرد. در حال حاضر توسعه دهندگان می توانند از استانداردهای WebRTC در هر مرورگری بدون محدودیت استفاده کنند. این تقریباً فرصت های بی شماری را برای تغییر نگرش ما نسبت به پخش زنده و همین طور تأثیر آن بر تجربه ی کاربری، بوجود آورده است. هم تراز بودن پیشرفت های سخت افزاری ، بهبود اتصالات شبکه ای، تغییر در رفتار مصرف کنندگان و همچنین امکان استفاده از فناوری هایی مانند WebRTC، بیانگر آمادگی بازار برای پذیرش هرچه بیشتر این تکنولوژی می باشد. اما ، برای بهره گیری از این فناوری ، استفاده توسعه دهندگان از یکی از رویکردهای معماری ارائه شده در بالا بسیار حیاتی و مهم می باشد زیرا این جریان مستقیم تعاملی با کاربران نهایی باید یک تجربه ویدئویی یکپارچه برای کاربر نهایی به ارمغان آورد تا برای کاربران لذت بخش باشد. بدیهی است هرچه به سمت جلو پیش می رویم این روند بهبود می یابد زیرا همگامی رشد دانش مهندسی سیستم در کنار رشد قابلیت های سخت افزاری سیستم ها، این جریان را سرعت می بخشد.