ورود / عضویت 021-91015555
منو

Streaming زنده یا Live Stream چیست؟

تاریخ انتشار:۱۲-۰۶-۱۳۹۹

streaming یک روش انتقال داده است و زمانی استفاده می‌شود که شخصی در فضای اینترنت می‌خواهد فیلم یا ویدیو تماشا کند. این راهی برای نمایش بیت به بیت یک ویدئو در لحظه است که معمولا این داده‌ها از محل حافظه از راه دور برداشت می‌شود. در واقع با انتقال چند ثانیه از یک فایل در لحظه در فضای اینترنت، دیگر نیاز به دانلود کل فایل پیش از تماشا نیست.

streaming زنده قابلیتی است که به هنگام تماشای ویدیو، در لحظه و بدون درنگ ارسال می‌شود و شما قادر هستید که بدون نیاز به ضبط یا ذخیره ویدیو، آن را تماشا کنید. امروزه، گزارشات تلویزیونی، ویدیو بازی های stream و ویدیوهای شبکه‌های اجتماعی همگی می‌توانند stream زنده باشند.

تفاوت میان streaming معمولی و streaming زنده مانند تفاوت میان بازیگری است که یک مونولوگ از پیش حفظ شده را بازگو می‌کند و بازیگری است که فی‌البداهه حرف میزند و بازی می‌کند. در اولی، ابتدا محتوای نمایش از پیش نوشته و آماده می‌شود و سپس به مخاطب عرضه می‌شود. در صورتی که در دومی، مخاطب محتوایی را دریافت می‌کند که بازیگر در لحظه از خود بروز می‌دهد – درست شبیه به streaming زنده.

واژه‌ی live stream معمولا به stream اخبار و گزارشات زنده مربوط است: اتصال یک محتوا به تعداد بسیاری گیرنده که در یک لحظه به تعداد زیادی کاربر متصل می‌شود. تکنولوژی‌های ارائه دهنده ویدیو کنفرانس مانند Skype، FaceTime و Google Hangouts Meet بر اساس پروتکل‌های ارتباط در لحظه (RTC) کار می‌کنند.

stream زنده از لحاظ تکنیکی چگونه عمل می‌کند؟

این‌ها مراحلی است که در پشت صحنه stream زنده رخ می‌دهد:

  • قسمت بندی
  • فشرده سازی
  • رمز گذاری
  • توزیع شبکه‌ی تحویل محتوا (CDN)
  • مخفی کردن CDN
  • رمز گشایی
  • پخش ویدیو

 

ضبط ویدیو

streaming زنده با داده‌های خام (raw data) ویدیو آغاز می‌شود؛ اطلاعات تصویری که با دوربین تصویر برداری شده است. اطلاعات تصویری از طریق وسیله‌ی محاسباتی که با دوربین به آن متصل است، به صورت داده‌های دیجیتالی در می‌آیند. به عبارتی دیگر، در عمقی‌ترین سطح به کد‌های دیجیتالی ۰ و ۱ تبدیل می‌شوند.

 

قسمت بندی

هر ویدیو شامل اطلاعات دیجیتالی بسیاری است و به همین دلیل است که دانلود کردن یک فایل ویدیویی خیلی بیشتر از یک فایل PDF یا یک عکس طول می‌کشد. برای همین عملا ارسال کل ویدیو به صورت یکجا از طریق اینترنت ممکن نیست و به همین دلیل ویدیوی streaming زنده به قسمت‌های چند ثانیه‌ای تقسیم می‌شوند.

 

فشرده سازی و کدگذاری

در ادامه، ویدیوی قسمت بندی شده فشرده و کدگذاری می‌شود. داده‌ها با حذف اطلاعات تصویری اضافه و زائد فشرده می‌شوند. برای مثال، اگر در فرم اول یک ویدیو شخصی در پس زمینه خاکستری مشغول صحبت کردن باشد، بقیه پس زمینه‌های مشابه نیاز به پردازش ندارند.

فشرده سازی ویدیو شبیه به اضافه کردن یک وسیله به اتاق نشیمن است. نیازی نیست هر بار تمام دکوراسیون و وسایل اتاق را تغییر دهید. کافی است برای ایجاد تغییرات هر بار یک میز یا یک صندلی به اتاق اضافه کنید. علی رغم اینکه هر بار با عوض کردن یک جزء از اتاق، مثلا یک میز یا یک تابلو، می‌توان چیدمان اتاق را حفظ کرد و آن را دستخوش تغییرات عمده نکرد، اما در نظر داشته باشید که در صورت لزوم ایجاد تغییرات به صورت گسترده‌تر نیاز است. همین‌طور همه‌ی فرم‌های یک video stream نیاز به پردازش ندارد. در واقع فقط قسمت‌هایی از ویدیو را پردازش می‌کنیم که در فرم‌ها شاهد تغییرات هستیم، مانند حرکات دهان یک شخص که در هر فرم نسبت به فرم قبلی متفاوت است و حالت دیگری به خود می‎گیرد.

“کد گذاری” فرایندی است که طی آن داده‌ها را به یک قالب جدید تبدیل می‌کنیم. داده‌های ویدیوهای stream زنده به یک قالب دیجیتالی تبدیل می‌شوند که برای انواع مختلف دستگاه‌ها قابل شناسایی و بازخوانی است. موارد زیر برخی از استاندارد‌های رایج کدگذاری ویدیو هستند:

  • H.264
  • VP9
  • AV1
  • HEVC

 

توزیع و ذخیره‌سازی CDN

وقتی که stream زنده قسمت‌بندی، فشرده‌سازی و کد گذاری شد (که همه‌ی این فرایندها در تنها چند ثانیه انجام می‌شود!)، باید برای میلیون‌ها بازدید کننده در دسترس قرار گیرد. وقتی که چندین بیننده در مکان‌های مختلف همزمان از stream استفاده می‌کنند، برای حفظ کیفیت بالا و کمترین تاخیر در پخش CDN آن را توزیع می‌کند.

CDN یک شبکه‌ی توزیع سرورها می‌باشد که محتوا را از طرف یک سرور اصلی ذخیره و ارائه می‌کند. استفاده از یک CDN منجر به اجرای سریع‌تر ویدیو می‌شود زیرا درخواست کاربر نیازی به انتقال به سرور اصلی ندارد و در عوض توسط نزدیک‌ترین سرور CDN کنترل و اجرا می‌شود. همچنین بررسی و اجرای درخواست‌ها و ارائه محتوای درخواست شده، حجم لود بر روی سرور اصلی را کاهش می‌دهد. در نهایت، CDNها ارائه‌ی محتوای خوب و با کیفیت را به کاربران در همه‌ی نقاط جهان ممکن می‌سازد، زیرا سرورهای CDN به جای توزیع در یک منطقه جغرافیایی خاص، در سراسر جهان مستقر شده‌اند.

همچنین CDN، هر قسمت از یک stream زنده را موقتا ذخیره می‌کند. بنابراین اکثر بیننده‌ها، در واقع stream زنده را از ذخیره‌های موقت CDN دریافت می‌کنند و سرور اصلی درگیر نمی‌شود. همچنین این ذخیره سازی موقت، stream زنده را به زمان واقعی نزدیک‌تر می‌کند، هرچند اطلاعات ذخیره شده چند ثانیه عقب‌تر از زمان حال هستند زیرا زمان رفت و برگشت (RTT) به سرور اصلی کم می‌شود.

 

کد گشایی و پخش ویدیو

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

 

streaming زنده و پخش ویدپو

 

یک مثال

تصور کنید علی یک ویدیو لایو را روی موبایل خود آغاز می‌کند و محمد که در آن طرف کشور زندگی می‌کند و تعدادی از دوستان علی لایو او را روی موبایل خود پخش می‌کنند. لایو آغاز می‌شود و علی دوربین موبایل خود را رو به خود قرار می‌دهد و می‌گوید “سلام به همه!” چه عملیاتی باید طی شود تا همین بخش از ویدیوی علی، یعنی “سلام به همه”، به محمد که در آن سوی کشور مشغول تماشای ویدیو است و بقیه کسانی که لایو را تماشا می‌کنند برسد؟

در ابتدا، موبایل علی همان بخش از ویدیو را کد گذاری و فشرده می‌کند. اگر، به طور مثال، علی در آشپزخانه این لایو را ضبط می‌کند، دیوار آشپزخانه در فرم اول ضبط و ثبت می‌شود و پس زمینه در بقیه فرم‌ها تا زمانی که تغییر نکند ثابت می‌ماند.

اکنون اپلیکیشنی که علی از آن استفاده می‌کند، حالت کد گذاری و فشرده شده این حرف او یعنی “سلام به همه” را به اپلیکیشن‌های CDN ارسال می‌کند. خوشبختانه یکی از سرورهای CDN چند کیلومتر آن طرف‌تر از خانه‌ی محمد است. بنابراین درخواست موبایل وی برای بخش اول لایو به سرعت پاسخ داده می‌شود. بقیه بینندگان، بسته به موقعیت جغرافیایی که دارند، تاخیر بیشتر یا کمتری را تجربه می‌کنند.

تلفن همراه محمد همان قسمت از ویدیو را کد گشایی کرده و از حالت فشرده خارج می‌کند. بنابراین دیوار آشپزخانه علی در همه فرم‌ها ظاهر می‌شود. و در نهایت، تنها چند ثانیه پس از آنکه علی در آشپزخانه خود از آن سوی کشور می‌گوید “سلام به همه”، محمد صدا و تصویر وی را در حال سلام کردن در موبایل خود شنیده و مشاهده می‌کند.

 

چرا CDN برای stream زنده اهمیت دارد؟

پهنای باند

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

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

 

انتقال محتوای در سطح جهانی

CDNها قادرند به تمام مخاطبین در همه‌جا محتوا را انتقال دهند زیرا در تمام نقاط جهان گسترده شده‌اند. یک سرور اصلی در نیویورک نمی‌تواد با موفقیت و کیفیت محتوا را در اختیار مخاطبین در تهران قرار دهد. و این موضوع در زمانی که پای محتوای سنگینی مانند ویدیو در میان باشد بیشتر به چشم می‌آید. با این وجود، یک CDN می‎‌تواند یک محتوا را از هر نقطه‌ای در شبکه‌ی خودش منتقل و اجرا کند. به طوری که شخصی در تهران که در حال تماشای یک stream زنده از نیویورک است، می تواند به جای اینکه منتظر بارگیری آن از نیویورک باشد، از یک سرور در تهران آن را دریافت کند.

 

تاخیر و کاهش RTT

استفاده از سرورهای CDN برای انتقال محتوا در سطح جهانی باعث می‌شود زمان رفت و برگشت داده‌ها به سرور اصلی کاهش یابد و در نتیجه stream زنده با کمی تاخیر برای بیننده پخش خواهد شد. با استفاده از سرورهای CDN، درخواست و پاسخ‌های مکرر رفت و برگشتی به آن‌ها برای دریافت داده‌های یک فیلم، چه از نظر فاصله و چه از نظر زمانی کوتاه‌تر است. زیرا درخواست یک بیننده برای تماشای فیلم دیگر نیازی به انتقال به منبع اصلی ارائه‌دهنده stream ندارد و همینطور بالعکس، داده‌های stream نیز نیاز به انتقال از سرور اصلی را ندارند؛ و همین موضوع تاخیر در پخش را به حداقل می‌رساند و تا جای ممکن stream زنده را در زمان حال برای بیننده پخش می‌کند.

 

حجم کاری

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

 

ذخیره‌سازی یا cashing

CDN قسمت‌های یک stream زنده را ذخیره می‌کند. سپس می‌تواند به جای استفاده از سرور اصلی برای دریافت داده‌ها، قسمت‌های ذخیره شده را منتقل کند.

به نظر می‌رسد که ارائه streamهای زنده از طریق اطلاعات ذخیره شده غیرمنطقی و متناقض باشد. اگر یک stream زنده باشد، چطور ممکن است ارسال یک داده ذخیره بشود و با چند ثانیه تاخیر سریع‌تر از سرور اصلی منتقل شود و در دسترس بیننده قرار گیرد؟ درست است که stream زنده‌ای که ذخیره شده است با مقداری تاخیر پخش می‌شود، اما با این وجود باز هم از سرور اصلی سریع‌تر است. زمان رفت و برگشت داده‌ها به سرور اصلی بسیار زیاد است و حتی باعث می‌شود بیش از حالت ذخیره شده در CDN عقب بیافتد. بنابراین کاربران با استفاده از CDN تاخیر کمتری را تجربه می‌کنند.

خدمات ابری زیرساخت (laaS)
فقط با چند کلیک سرور ابری خود را بسازید!
شروع کنید