در این مقاله قصد داریم به بررسی این موضوع بپردازیم که Streaming زنده یا Live Stream چیست و در کل لایو استریم چه کاربردهایی دارد.
streaming یا لایو استریم یک روش انتقال داده است و زمانی استفاده میشود که شخصی در فضای اینترنت میخواهد فیلم یا ویدیو تماشا کند بدون اینکه ابتدا ضبط و ذخیره شود.
امروزه پخش زنده در تلویزیون، بازیهای ویدئویی، ویدئوهای رسانههای اجتماعی و… را مخاطبان میتوانند با استفاده از سرویس های Live streaming به صورت زنده پخش میشوند.
این راهی برای نمایش بیت به بیت یک ویدئو در لحظه است که معمولا این دادهها از محل حافظه از راه دور برداشت میشود.
در واقع با انتقال چند ثانیه از یک فایل در لحظه در فضای اینترنت، دیگر نیاز به دانلود کل فایل پیش از تماشا نیست.
streaming زنده قابلیتی است که به هنگام تماشای ویدیو، در لحظه و بدون درنگ ارسال میشود و شما قادر هستید که بدون نیاز به ضبط یا ذخیره ویدیو، آن را تماشا کنید.
امروزه، گزارشات تلویزیونی، ویدیو بازی های stream و ویدیوهای شبکههای اجتماعی همگی میتوانند استریم (Stream) زنده باشند که کمک به نمایش زنده اطلاعات ویدئویی میکنند.
بیشتر بدانید : IPTV چیست
تفاوت میان streaming معمولی و streaming زنده مانند تفاوت میان بازیگری است که یک مونولوگ از پیش حفظ شده را بازگو میکند و بازیگری است که فیالبداهه حرف میزند و بازی میکند.
در اولی، ابتدا محتوای نمایش از پیش نوشته و آماده میشود و سپس به مخاطب عرضه میشود.
در صورتی که در دومی، مخاطب محتوایی را دریافت میکند که بازیگر در لحظه از خود بروز میدهد – درست شبیه به streaming زنده.
واژهی live stream معمولا به stream اخبار و گزارشات زنده مربوط است: اتصال یک محتوا به تعداد بسیاری گیرنده که در یک لحظه به تعداد زیادی کاربر متصل میشود.
تکنولوژیهای ارائه دهنده ویدیو کنفرانس مانند Skype، FaceTime و Google Hangouts Meet بر اساس پروتکلهای ارتباط در لحظه (RTC) کار میکنند.
اینها مراحلی است که در پشت صحنه stream زنده رخ میدهد تا یک محتوای تصویری با سرعت بالا برای شما اجرا شود:
streaming زنده یا live stream با دادههای خام (raw data) ویدیو آغاز میشود؛
اطلاعات تصویری که با دوربین تصویر برداری و ثبت شده است.
اطلاعات تصویری از طریق وسیلهی محاسباتی که با دوربین به آن متصل است، به صورت دادههای دیجیتالی در میآیند.
به عبارتی دیگر، در عمقیترین سطح به کدهای دیجیتالی ۰ و ۱ تبدیل میشوند.
هر ویدیو شامل اطلاعات دیجیتالی بسیاری است و به همین دلیل است که دانلود کردن یک فایل ویدیویی خیلی بیشتر از یک فایل PDF یا یک عکس طول میکشد.
برای همین عملا ارسال کل ویدیو به صورت یکجا از طریق اینترنت ممکن نیست و به همین دلیل ویدیوی streaming زنده به قسمتهای چند ثانیهای تقسیم میشوند.
در ادامه، ویدیوی قسمت بندی شده فشرده و کدگذاری میشود.
دادهها با حذف اطلاعات تصویری اضافه و زائد فشرده میشوند.
برای مثال، اگر در فرم اول یک ویدیو شخصی در پس زمینه خاکستری مشغول صحبت کردن باشد، بقیه پس زمینههای مشابه نیاز به پردازش ندارند.
فشرده سازی ویدیو شبیه به اضافه کردن یک وسیله به اتاق نشیمن است که نیازی نیست هر بار تمام دکوراسیون و وسایل اتاق را تغییر دهید.
کافی است برای ایجاد تغییرات هر بار یک میز یا یک صندلی به اتاق اضافه کنید.
علی رغم اینکه هر بار با عوض کردن یک جزء از اتاق، مثلا یک میز یا یک تابلو، میتوان چیدمان اتاق را حفظ کرد و آن را دستخوش تغییرات عمده نکرد،
اما در نظر داشته باشید که در صورت لزوم ایجاد تغییرات به صورت گستردهتر نیاز است.
همینطور همهی فرمهای یک video stream نیاز به پردازش ندارد.
در واقع فقط قسمتهایی از ویدیو را پردازش میکنیم که در فرمها شاهد تغییرات هستیم، مانند حرکات دهان یک شخص که در هر فرم نسبت به فرم قبلی متفاوت است و حالت دیگری به خود میگیرد.
“کد گذاری” فرایندی است که طی آن دادهها را به یک قالب جدید تبدیل میکنیم.
دادههای ویدیوهای stream زنده یا live stream به یک قالب دیجیتالی تبدیل میشوند که برای انواع مختلف دستگاهها قابل شناسایی و بازخوانی است.
موارد زیر برخی از استانداردهای رایج کدگذاری ویدیو هستند:
وقتی که stream زنده (live stream) قسمتبندی، فشردهسازی و کد گذاری شد (که همهی این فرایندها تنها چند ثانیه و بدون درنگ انجام میشود!)، باید برای میلیونها بازدید کننده در دسترس قرار گیرد.
استریم روشی برای مشاهده ویدیو یا گوش دادن به محتوای صوتی بدون بارگیری واقعی فایل های رسانه ای است. در صورتی که صاحب فایلها از CDN استفاده کند، میتوان عملکرد جریان را بهبود بخشید و زمان توزیع را کاهش داد.
وقتی که چندین بیننده در مکانهای مختلف همزمان از stream استفاده میکنند، برای حفظ کیفیت بالا و کمترین تاخیر در پخش CDN آن را توزیع میکند تا از سرعت پخش بالاتر بهره بگیرند.
CDN یک شبکهی توزیع سرورها میباشد که محتوا را از طرف یک سرور اصلی ذخیره و به کاربران ارائه میکند.
استفاده از یک CDN منجر به اجرای سریعتر ویدیو میشود، زیرا درخواست کاربر نیازی به انتقال به سرور اصلی ندارد و در عوض توسط نزدیکترین سرور CDN کنترل و اجرا میشود.
همچنین بررسی و اجرای درخواستها و ارائه محتوای درخواست شده، حجم لود بر روی سرور اصلی را کاهش میدهد.
در نهایت، CDNها ارائهی محتوای خوب و با کیفیت را به کاربران در همهی نقاط جهان ممکن میسازد، زیرا سرورهای CDN به جای توزیع در یک منطقه جغرافیایی خاص، در سراسر جهان مستقر شدهاند.
همچنین سی دی ان، هر قسمت از یک stream زنده را موقتا ذخیره میکند.
بنابراین اکثر بینندهها، در واقع stream زنده ( live stream ) را از ذخیرههای موقت CDN دریافت میکنند و سرور اصلی درگیر نمیشود.
همچنین این ذخیره سازی موقت، stream زنده را به زمان واقعی نزدیکتر میکند، هرچند اطلاعات ذخیره شده چند ثانیه عقبتر از زمان حال هستند زیرا زمان رفت و برگشت (RTT) به سرور اصلی کم میشود.
stream زنده یا همان لایو استریم توسط CDN به تمام کاربرانی که در حال تماشای آن هستند ارسال میشود.
دستگاه هر کاربر دادههای بخش بندی شده ویدیو را دریافت، کد گشایی و از حالت فشرده خارج میکند.
در نهایت، مدیا پلیر روی دستگاه کاربر، چه مدیا پلیر اختصاصی روی اپلیکیشن، چه ویدیو پلیر داخل مرورگر، دادهها را به اطلاعات تصویری تبدیل میکند و ویدیو پخش میشود.
تصور کنید علی یک ویدیو لایو را روی موبایل خود آغاز میکند و محمد که در آن طرف کشور زندگی میکند و تعدادی از دوستان علی لایو او را روی موبایل خود پخش میکنند.
لایو آغاز میشود و علی دوربین موبایل خود را رو به خود قرار میدهد و میگوید “سلام به همه!” چه عملیاتی باید طی شود تا همین بخش از ویدیوی علی، یعنی “سلام به همه”، به محمد که در آن سوی کشور مشغول تماشای ویدیو است و بقیه کسانی که لایو را تماشا میکنند برسد و آنها متوجه اکشنی که از سوی علی رخ داده بشوند؟
در ابتدا، موبایل علی همان بخش از ویدیو را کد گذاری و فشرده میکند.
اگر، به طور مثال، علی در آشپزخانه این لایو را ضبط میکند، دیوار آشپزخانه در فریم اول ضبط و ثبت میشود و پس زمینه در بقیه فریمها تا زمانی که تغییر نکند ثابت میماند.
اکنون اپلیکیشنی که علی از آن استفاده میکند، حالت کد گذاری و فشرده شده این حرف او یعنی “سلام به همه” را به اپلیکیشنهای CDN ارسال میکند.
خوشبختانه یکی از سرورهای CDN چند کیلومتر آن طرفتر از خانهی محمد است.
بنابراین درخواست موبایل وی برای بخش اول لایو به سرعت پاسخ داده میشود.
بقیه بینندگان، بسته به موقعیت جغرافیایی که دارند، تاخیر بیشتر یا کمتری را تجربه میکنند.
تلفن همراه محمد همان قسمت از ویدیو را کد گشایی کرده و از حالت فشرده خارج میکند.
بنابراین دیوار آشپزخانه علی در همه فریمها ظاهر میشود.
و در نهایت، تنها چند ثانیه پس از آنکه علی در آشپزخانه خود از آن سوی کشور میگوید “سلام به همه”، محمد صدا و تصویر وی را در حال سلام کردن در موبایل خود شنیده و مشاهده میکند.
هر نقطهای از شبکه تنها حجم مشخصی از داده را می تواند در یک زمان منتقل کند.
به این اندازه گیری “پهنای باند” میگویند.
همچنین گاهی جریانی از داده به میزانی میرسد که از ظرفیت شبکه خارج است.
به این حالت “نقطه انسداد” گفته میشود، زیرا انتقال داده متوقف و کند میشود.
حالت نقطه انسداد را میتوان به قیف تشبیه کرد.
هنگامی که مقدار زیادی مایع یک مرتبه به درون قیف ریخته میشود، سرعت عبور مایع از آن کند میشود.
اگر همه بینندگان جریان دادهها را از سرور اصلی دریافت کنند، سرور و شبکههای اطراف آن دچار حالت نقطه انسداد میشوند و سرعت stream کاهش مییابد.
اما اگر بار اصلی stream به CDN منتقل شوند، نقطه انسدادی به وجود نخواهد آمد.
CDNها قادرند به تمام مخاطبین در همهجا محتوا را انتقال دهند زیرا در تمام نقاط جهان گسترده شدهاند.
یک سرور اصلی در نیویورک نمیتواد با موفقیت و کیفیت محتوا را در اختیار مخاطبین در تهران قرار دهد و این موضوع در زمانی که پای محتوای سنگینی مانند ویدیو در میان باشد بیشتر به چشم میآید.
با این وجود، یک CDN میتواند یک محتوا را از هر نقطهای در شبکهی خودش منتقل و اجرا کند تا کاربران به واسطه CDN محتوا را با سرعت بالاتری مشاهده کنند.
به طوری که شخصی در تهران که در حال تماشای یک stream زنده از نیویورک است، می تواند به جای اینکه منتظر بارگیری آن از نیویورک باشد، از یک سرور در تهران آن را دریافت کند.
استفاده از سرورهای CDN برای انتقال محتوا در سطح جهانی باعث میشود زمان رفت و برگشت دادهها به سرور اصلی کاهش یابد و در نتیجه stream زنده با کمی تاخیر برای بیننده پخش خواهد شد.
با استفاده از سرورهای CDN، درخواست و پاسخهای مکرر رفت و برگشتی به آنها برای دریافت دادههای یک فیلم، چه از نظر فاصله و چه از نظر زمانی کوتاهتر است.
زیرا درخواست یک بیننده برای تماشای فیلم دیگر نیازی به انتقال به منبع اصلی ارائهدهنده stream ندارد و همینطور بالعکس، دادههای stream نیز نیاز به انتقال از سرور اصلی را ندارند؛
و همین موضوع تاخیر در پخش را به حداقل میرساند و تا جای ممکن stream زنده را در زمان حال برای بیننده پخش میکند.
پاسخ دادن به درخواستهای کاربر نیازمند به کارگیری تعدادی نیروی محاسباتی در سرور است.
همچنین پاسخ دادن به درخواستهای مکرر و زیاد کاربران میتواند یک سرور را دچار اختلال و مشکلات اساسی کند.
CDN تعداد زیادی سرور را به کار میگیرد تا بتواند بیشتر بار سرور اصلی را به دوش بگیرد و از خرابی و از کار افتادگی سرور اصلی جلوگیری میکند.
CDN قسمتهای یک stream زنده (live stream) را ذخیره میکند.
سپس میتواند به جای استفاده از سرور اصلی برای دریافت دادهها، قسمتهای ذخیره شده را منتقل کند.
به نظر میرسد که ارائه streamهای زنده از طریق اطلاعات ذخیره شده غیرمنطقی و متناقض باشد.
اگر یک stream زنده باشد، چطور ممکن است ارسال یک داده ذخیره بشود و با چند ثانیه تاخیر سریعتر از سرور اصلی منتقل شود و در دسترس بیننده قرار گیرد؟
درست است که stream زندهای که ذخیره شده است با مقداری تاخیر پخش میشود، اما با این وجود باز هم از سرور اصلی سریعتر است.
زمان رفت و برگشت دادهها به سرور اصلی بسیار زیاد است و حتی باعث میشود بیش از حالت ذخیره شده در CDN عقب بیافتد. بنابراین کاربران با استفاده از CDN تاخیر کمتری را تجربه میکنند.
امیدواریم که از مطلب Live stream یا لایو استریم استفاده کافی را کرده باشید.