استریم روشی برای انتقال داده است که برای تماشای ویدیو در اینترنت استفاده می شود. این روشی است برای ارائه یک فایل ویدئویی به صورت کمی در یک زمان، اغلب از یک مکان ذخیره سازی راه دور. با انتقال چند ثانیه از فایل در یک زمان از طریق اینترنت، دستگاه های سرویس گیرنده نیازی به دانلود کل ویدیو قبل از شروع پخش ندارند.
پخش زنده یا لایو استریم زمانی است که ویدیوی پخش شده به صورت بلادرنگ از طریق اینترنت ارسال می شود، بدون اینکه ابتدا ضبط و ذخیره شود. امروزه، پخشهای تلویزیونی، پخش استریم بازیهای ویدیویی و ویدئوهای رسانههای اجتماعی همگی میتوانند به صورت زنده پخش شوند.
در مورد تفاوت بین پخش معمولی و پخش زنده این مثال را در نظر بگیرید مثلا بازیگری که یک مونولوگ حفظ شده و بداهه یک سخنرانی را می خواند. در حالت اول، محتوا از قبل ایجاد می شود، ذخیره می شود و سپس به مخاطب منتقل می شود. در دومی، مخاطب محتوا را در همان لحظه ای دریافت می کند که بازیگر آن را ایجاد می کند - درست مانند پخش زنده.
اصطلاح پخش زنده یا لایو استریم معمولاً به پخش جریان های زنده اشاره دارد: اتصالات یک به چند که به طور همزمان برای چندین کاربر ارسال می شود. فناوریهای کنفرانس ویدیویی مانند Skype، FaceTime، و Google Hangouts Meet بر روی پروتکلهای ارتباطی همزمان (RTC) کار میکنند تا پروتکلهایی که توسط پخش جریانی زنده یک به چند استفاده میشوند.
لایو استریم یا پخش زنده در سطح فنی چگونه کار می کند؟
این مراحل اصلی است که در پشت صحنه در یک پخش زنده انجام می شود:
- فشرده سازی
- رمزگذاری
- تقسیم بندی
- توزیع شبکه تحویل محتوا (CDN).
- ذخیره سازی CDN
- رمزگشایی
- پخش ویدیو
- فیلمبرداری
پخش زنده با داده های ویدئویی خام شروع می شود: اطلاعات بصری ضبط شده توسط دوربین. در دستگاهی که دوربین به آن متصل است، این اطلاعات بصری به صورت داده های دیجیتالی نمایش داده می شود - به عبارت دیگر، 1s و 0s در عمیق ترین سطح.
فشرده سازی و رمزگذاری
در مرحله بعد، داده های ویدئویی قطعه بندی شده فشرده و کدگذاری می شوند. داده ها با حذف اطلاعات بصری اضافی فشرده می شوند. به عنوان مثال، اگر فریم اول ویدیو فردی را در حال صحبت در پس زمینه خاکستری نشان می دهد، پس زمینه خاکستری برای هیچ فریم بعدی که پس زمینه یکسانی دارند نیازی به رندر ندارد.
فشرده سازی ویدیو را مانند افزودن یک مبلمان جدید به اتاق نشیمن در نظر بگیرید. هر بار که یک صندلی یا میز کناری جدید اضافه می شود، لازم نیست مبلمان کاملاً جدید بخرید. درعوض، میتوان چیدمان اتاق را تقریباً یکسان نگه داشت و هر بار فقط یک قطعه را تغییر داد، و گاهی اوقات در صورت لزوم، تغییرات بزرگتری انجام داد. به طور مشابه، لازم نیست هر فریم از یک جریان ویدئو به طور کلی ارائه شود - فقط قسمت هایی که از فریم به فریم تغییر می کنند، مانند حرکت دهان یک فرد.
"رمزگذاری" به فرآیند تبدیل داده ها به فرمت جدید اشاره دارد. دادههای ویدئوی پخش زنده در قالب دیجیتال قابل تفسیری کدگذاری میشوند که دستگاههای مختلف آن را تشخیص میدهند. استانداردهای رایج رمزگذاری ویدیو عبارتند از:
H.264
H.265
VP9
AV1
تقسیم بندی
ویدئو شامل اطلاعات دیجیتالی زیادی است، به همین دلیل است که دانلود یک فایل ویدئویی بیشتر از دانلود یک PDF کوتاه یا یک تصویر طول می کشد. از آنجایی که ارسال یکباره همه داده های ویدیویی از طریق اینترنت عملی نخواهد بود، پخش جریانی ویدیو یا استریمینگ به بخش های کوچکتر به طول چند ثانیه تقسیم می شود.
توزیع و ذخیره سازی CDN
هنگامی که پخش زنده قطعه بندی، فشرده و رمزگذاری شد (همه اینها فقط چند ثانیه طول می کشد)، باید در دسترس ده ها یا میلیون ها بیننده ای قرار گیرد که می خواهند آن را تماشا کنند. به منظور حفظ کیفیت بالا با حداقل تأخیر در حین ارائه جریان به چندین بیننده در مکانهای مختلف، یک CDN باید آن را توزیع کند.
CDN یک شبکه توزیع شده از سرورها است که محتوا را از طرف یک سرور اصلی ذخیره و ارائه می کند. استفاده از CDN منجر به عملکرد سریعتر میشود، زیرا درخواستهای کاربر دیگر لازم نیست تمام راه را به سمت سرور مبدا طی کنند، بلکه میتوانند توسط یک سرور CDN مجاور رسیدگی شوند. رسیدگی به درخواستها و ارائه محتوا به این روش، بار کاری سرور مبدا را کاهش میدهد. در نهایت، CDN ها ارائه کارآمد محتوا به کاربران در سراسر جهان را ممکن می کنند، زیرا سرورهای آنها در سراسر جهان به جای خوشه بندی در یک منطقه جغرافیایی واحد قرار دارند.
یک CDN همچنین هر بخش از جریان زنده را ذخیره می کند - به طور موقت ذخیره می کند، بنابراین بیشتر بینندگان جریان زنده را به جای اینکه از سرور مبدا ببینند، از حافظه پنهان CDN دریافت می کنند. این در واقع جریان زنده را به زمان واقعی نزدیکتر میکند، حتی اگر دادههای ذخیره شده در حافظه پنهان چند ثانیه عقب باشند، زیرا زمان رفت و برگشت (RTT) به و از سرور مبدا را کاهش میدهد.
رمزگشایی و پخش ویدیو
CDN پخش زنده را برای همه کاربرانی که در حال تماشای لایو استریم هستند ارسال می کند. دستگاه هر کاربر داده های ویدئویی تقسیم شده را دریافت، رمزگشایی و از حالت فشرده خارج می کند. در نهایت، یک پخش کننده رسانه روی دستگاه کاربر - یا یک برنامه اختصاصی یا یک پخش کننده ویدیویی در مرورگر - داده ها را به عنوان اطلاعات بصری تفسیر می کند و ویدیو پخش می شود.
یک مثال
فرض کنید مریم یک پخش زنده را با گوشی هوشمند خود شروع می کند و محمد که در آن سوی کشور زندگی می کند، همراه با چند ده نفر دیگر از دوستان مریم، پخش زنده را در گوشی هوشمند خود تنظیم می کند. مریم پخش زنده را با چرخاندن دوربین گوشی هوشمند روی خود و گفتن "سلام، بچه ها!" چه اتفاقی باید بیفتد تا آن بخش «سلام، بچه ها» از ویدیو به محمد در آن سوی کشور برسد، همراه با همه افرادی که لایو استریم یا پخش زنده را تماشا میکنند؟
ابتدا، گوشی هوشمند مریم آن بخش کوچک ویدیو را رمزگذاری و فشرده می کند. اگر مریم در حال فیلمبرداری از پخش زنده در آشپزخانه خود باشد، دیوار آشپزخانه او به عنوان اولین فریم ویدیو ضبط می شود و فریم های بعدی آن را حذف می کنند زیرا پس زمینه تغییر نمی کند.
اکنون برنامهای که مریم استفاده میکند، نسخه فشردهشده و رمزگذاریشده او را با گفتن «سلام بچه ها» به CDN برنامه ارسال میکند. خوشبختانه برای محمد، یکی از سرورهای CDN تنها چند کیلومتر با خانه او فاصله دارد، بنابراین درخواست گوشی هوشمند او برای اولین بخش از پخش زنده تقریباً بلافاصله پاسخ داده می شود. سایر بینندگان پخش زنده ممکن است بسته به موقعیت جغرافیایی خود تأخیر بیشتر یا کمتری نسبت به محمد داشته باشند.
تلفن محمد بخش ویدیو را رمزگشایی می کند و داده های فشرده شده را بازسازی می کند، به طوری که دیوار آشپزخانه مریم در هر فریم ظاهر می شود. و در نهایت، تنها چند ثانیه پس از گفتن "سلام، بچه ها"ی مریم در آشپزخانه اش در آن سوی کشور، چهره او روی گوشی هوشمند محمد ظاهر می شود و محمد احوالپرسی او را می بیند و می شنود.
چرا CDN برای پخش زنده مهم است؟
پهنای باند: هر نقطه معینی در یک شبکه تنها میتواند دادههای زیادی را در یک زمان ارسال کند. این اندازه گیری به عنوان "پهنای باند" شناخته می شود. اگر جریانی از داده ها به نقطه ای از شبکه برسد که در آن مقدار داده از ظرفیت فراتر رود، به این نقطه "نقطه خفه" می گویند زیرا تحویل داده ها قطع می شود و سرعت آن کاهش می یابد. نقطه خفگی شبیه به روشی است که ممکن است زمانی که اتومبیل های زیادی سعی می کنند از یک جاده تک لاین استفاده کنند، کاهش سرعت ترافیک رخ می دهد.
اگر همه بینندگان یک جریان، دادههای جریان را از نقطه مبدا دریافت کنند، سرور مبدا و زیرساخت شبکه اطراف آن به یک نقطه خفه تبدیل میشود و جریان کند میشود. اما اگر بار اصلی تحویل جریان به یک CDN منتقل شود، آنگاه نقطه خفه حذف می شود.
تحویل جهانی محتوا: از آنجایی که CDN ها در سراسر جهان توزیع می شوند، می توانند محتوا را به مخاطبان جهانی ارائه دهند. یک سرور اصلی در تهران نمی تواند به طور مؤثر محتوا را به مخاطبان در لندن ارائه دهد، و این امر به ویژه در مورد محتوای سنگین مانند ویدیو صادق است. با این حال، یک CDN میتواند محتوا را از هر نقطهای در شبکه خود ارسال و ارائه کند، به طوری که شخصی در لندن است و یک پخش زنده از تهران را تماشا میکند، میتواند جریان را از سروری در لندن دریافت کند بهجای اینکه منتظر بماند تا تمام استریم از تهران بارگیری شود.
تأخیر و کاهش RTT: ارائه جهانی محتوا با CDN با کاهش RTT (زمان رفت و برگشت) تأخیر بینندگان پخش زنده را کاهش می دهد. رفت و برگشت درخواست-پاسخ هم از نظر مسافت و هم از نظر زمان کوتاهتر است، زیرا درخواست بیننده برای پخش زنده دیگر نباید به منبع اصلی جریان یا استریم برود، این امر تأخیرها را کاهش میدهد و کمک میکند پخش زنده به «زنده» نزدیکتر شود.
حجم کاری: پاسخ دادن به درخواست های کاربر برای داده مقداری قدرت محاسباتی برای سرور هزینه دارد. پاسخ به بسیاری از درخواستهای کاربر برای دادههای ویدیویی میتواند یک سرور را تحت تأثیر قرار دهد. یک CDN از دهها یا صدها سرور استفاده میکند که میتوانند بسیاری از بار کاری را از سرور اصلی بردارد.
ذخیره سازی در حافظه پنهان: یک CDN هر بخش ویدیوی یک جریان زنده را در حافظه پنهان ذخیره می کند. سپس CDN می تواند به جای دریافت داده ها از سرور مبدا، بخش ها را از کش تحویل دهد.
ارائه یک جریان زنده از حافظه پنهان مانند یک تناقض به نظر می رسد: اگر جریان زنده باشد، چگونه می توان آن را ذخیره کرد و چند ثانیه بعد تحویل داد؟ در حالی که درست است که یک جریان زنده ذخیرهسازی شده در زمان واقعی از آن عقب میماند، اما هنوز سریعتر از رفتن به سرور اصلی است. رفت و برگشت به قدری طول می کشد که جریان حتی بیشتر عقب می افتد. با ذخیره CDN، کاربران حداقل زمان تاخیر را تجربه می کنند.