استریم جریانی از دادههاست که به صورت تدریجی (و نه دفعی) از جایی به جای دیگر منتقل میشود. به این فرایند استریمینگ گفته میشود. بیشترین کاربرد استریمینگ در صنعت ویدیو استریمینگ است. در ادامه به صورت دقیقتر به شرح این موضوع خواهیم پرداخت.
معنای لغوی استریم
استریم (Stream)، طبق تعریف لغتتنامهای، آبی است که در طول یک مسیل جریان دارد. به استریمهای بزرگ و طولانی رودخانه گفته میشود.
معنای استریم در کامپیوتر
ما نمیدانیم و اساساً مهم نیست که بدانیم آب رودخانه از کجا آمده و به کجا میرود. با این حال به راحتی از جریان آبِ آن استفاده میکنیم. در دنیای کامپیوتر (خصوصاً در برنامهنویسی)، منظور از استریم، جریانی از دادههاست که از جایی به جای دیگر منتقل میشود (مثلاً از یک فایل به فایل دیگر، از فایل به حافظه، از حافظه به فایل.) به این فرایند استریمینگ گفته میشود.
به قطعه کد زیر در زبان جاوا دقت کنید:
در اینجا یک عمل استریمینگ صورت گرفته است. دادههای فایل My data.dat به درون متغیر fileStream سرازیر شده و سپس به داخل zipStream و از آنجا به descryptedStream استریم میشود. در هیچ یک از این مراحل، مصرفکننده خبر ندارد که استریم از کجا آمده و برای چه منظوری میخواهد استفاده شود؛ بلکه فقط از آن استفاده میکند. به عنوان مثال متد ZipDecompressorStream آدرس فایل را نمیخواهد بلکه فقط یک File Stream میخواهد. نکتهٔ دیگر در استریمینگ این است که دادهها به صورت تدریجی و بنا به نیاز دریافت میشوند. به عنوان مثال، بخش اول دادهها درون یک بافر قرار گرفته و پس از مصرف، بخش بعدی دادهها دریافت میشود. این عمل تا زمانی که همچنان درخواست وجود دارد ادامه پیدا میکند (مثلاً تا زمانی که دکمهٔ Pause را در پلیر نزدهاید)
حال بپردازیم به بررسی یکی از مهمترین کاربردهای استریمینگ:
ویدیو استریمینگ چیست؟
قبل از روی کارآمدن تکنیکهای ویدیو استریمینگ، تجربهٔ خوبی در نمایش آنلاین ویدیو وجود نداشت. کاربران مجبور بودند قبل از پخش فیلم، ابتدا کل آن را دانلود کنند. این مشکل بهانهای شد برای معرفی تکنیکهای استریمینگِ ویدیو. در این روش، ویدیو به قطعات کوچک چند ثانیهای (اصطلاحاً سگمنت) شکسته میشود و هنگامی که درخواست پخش ویدیو از سوی کاربر دریافت میشود، سگمنتها به ترتیب ارسال و پخش میشوند. به خاطر حجمِ کمِ این قطعات، کاربر تأخیر چندانی در نمایش ویدیو احساس نمیکند. در اینجا اصطلاحاً میگویند ویدیو استریم میشود. ویدیو استریمینگ به روشهای مختلفی صورت میگیرد ولی تقریباً همهٔ آنها (از جمله پلیر کاویمو) در بخشی از پیادهسازی خود از تکنیک Adaptive Streaming یا استریمینگ تطبیقی استفاده میکنند. در این تکنیک، نسخههای مختلفی از ویدیو ذخیره میشود و سپس بر اساس پارامترهای مختلفی مثل سرعت اینترنت کاربر، توان پردازشی دستگاه و ... نسخهٔ مناسب پخش میشود.
این کار به صورت خودکار صورت میگیرد و کاملاً به شرایط بیننده مرتبط است. به عنوان مثال اگر کاربر سوار بر خودرو ویدیو تماشا کند، احتمالاً با فاصله گرفتن از آنتنهای مخابراتی با تأخیر در سرعت اینترنت و به تبع آن، تأخیر در سرعت پخش مواجه خواهد شد. برای حل این مشکل، استریمینگ تطبیقی وارد عمل میشود و با کاهش کیفیت ویدیو جلوی توقف پخش ویدیو را میگیرد. با بهتر شدن وضعیت اینترنت، دوباره کیفیت به حالت قبل بازمیگردد. حتی با افزایش سرعت اینترنت، نسخهٔ بهتری از ویدیو پخش خواهد شد. البته معمولاً این امکان در اختیار کاربران هست که کیفیت ویدیو را خودشان تنظیم کنند. در این حالت، استریمینگ تطبیقی از کار میافتد و ویدیو با همان کیفیت انتخاب شده پخش میشود. مسلماً این حالت در شرایط ناپایدار اینترنت (مثلاً اینترنت موبایل) توصیه نمیشود.
در همین رابطه بخوانید:
تفاوت استریمینگ به روش Adaptive Bitrate و Mutli-bitrate