دیروز پس از یک روز طولانی نشسته بودم تا فیلمی ببینم. با افتخار تلویزیون را روشن کردم و مستقیماً به Jellyfin رفتم. خوشحال بودم که دیگر نیازی به مواجهه با مشکلات معمول شبکه سرویسهای استریمینگ ندارم، چون زمان را صرف میزبانی خودسرانهٔ تمام کتابخانهٔ رسانهایام روی سختافزار خودم کردهام. دکمهٔ پخش را فشار دادم و همانطور که انتظار میرفت، فیلم بلافاصله پخش شد. بدون دایرهٔ بارگذاری، بدون بافر کردن — عالی.
روز دیگر پس از یک روز طولانی برای تماشای یک فیلم نشستم. با افتخار تلویزیون را روشن کردم و مستقیم به Jellyfin رفتم. خوشحال بودم که دیگر نیازی به مقابله با مشکلات معمول شبکه سرویسهای پخش آنلاین ندارم چون زمان را برای میزبانی خودم از تمام کتابخانهٔ رسانهایام روی سختافزار شخصیام صرف کرده بودم. دکمه پخش را فشار دادم و همانطور که انتظار داشتیم، فیلم بلافاصله پخش شد. بدون دایرهٔ لود شدن، بدون بافرینگ — عالی.
اما سپس یک لرزش میکروئی بسیار آزاردهنده را متوجه شدم. گویی هر دو ثانیه یک ثانیه از فیلم بهصورت عجیب و آهسته پخش میشد. شاید دیگران این را متوجه نمیشدند، اما برای من کاملاً آزاردهنده بود. در ابتدا برای رفع آن بیدست و پا بودم. همه چیز را از کابلهای اترنت تا استفادهٔ پردازندهٔ سرور بررسی کردم، اما همهاش به یک تنظیم سادهٔ نادیدهگرفتهشده بازمیگشت.

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

وقتی یک جریان پخش میلرزد، اولین حدسومنین من این است که لوله یا موتور را مقصر میدانم. من در سرور تبدیل میشوم، نه تلویزیون. بهعلاوه، وقتی همان فیلم با بیتریت بالا را روی MacBook یا مستقیم روی رایانهای که بهعنوان سرور عمل میکرد پخش کردم، پخش بینقص بود. متوجه شدم مشکل ناشی از عدم تطابق نرخ فریم بود.
اکثر فیلمها با ۲۳٫۹۷۶ فریم بر ثانیه (که معمولاً ۲۴p مینامیم) فیلمبرداری میشوند. تلویزیون من، مانند تقریباً تمام نمایشگرهای مدرن، صفحهٔ ۶۰ هرتزی دارد، به این معنی که هر ثانیه شصت بار تازه میشود. با این حال، جعبهٔ Android TV من در زمان نوشتن به ۵۰ هرتز تنظیم شده بود. اگر سعی کنید محاسبه کنید فیلم ۲۴ فریم بر ثانیه چگونه در نرخ تازهسازی ۵۰ یا ۶۰ هرتز جا میشود، بهسرعت میبینید چرا پخش من آنقدر ناآرام بود.
وقتی یک فیلم ۲۴ فریم بر ثانیه را روی صفحهٔ ۶۰ هرتزی میپخشید، دستگاه باید عملی به نام ۳:۲ پول‑دون انجام دهد. چون ۶۰ بهطور مساوی بر ۲۴ تقسیم نمیشود، محاسبه به ۶۰ / ۲۴ = ۲٫۵ میرسد. برای کار کردن، پخشکننده فریم اول فیلم را سه بار و فریم دوم را دو بار نشان میدهد (۳ + ۲ = ۵). این الگو در طول هر ثانیه تکرار میشود و به ۶۰ بار تازهسازی میرسد. این معمولاً یک «جودر» بسیار جزئی ایجاد میکند که اکثر افراد به آن عادت دارند، اما وقتی جعبه شما بر روی ۵۰ هرتز تنظیم شده باشد، محاسبه حتی زشتتر میشود.
60 / 24 = 2.5
3 + 2 = 5

زیرنویسهای خودکار و قابلاعتماد بدون نیاز به هیچ تلاش اضافی.
برای خروجی ۵۰ هرتز، محاسبه به ۵۰ / ۲۳٫۹۷۶ ≈ ۲٫۰۸ تبدیل میشود. هیچ راهی تمیز و مساوی برای توزیع این فریمها وجود ندارد. سختافزار عملاً سعی دارد یک چکش مربعی را در سوراخ گرد جا دهد، بهطوری که فریمها را بهصورت ناهموار تکرار یا حذف میکند تا ویدئو با تراک صوتی هماهنگ بماند. این اثر ریتمیک حرکت آهستهای که میدیدم نتیجهٔ تلاش جعبهٔ تلویزیون برای جبران خود هر چند ثانیه بود. نتیجهٔ نهایی عدم تطابق فریم بین فایل ویدئویی و نمایش واقعی بود که منبع میکرو‑لرزش بود.
50 / 23.976 ≈ 2.08
یافتن راهحل در Jellyfin
فقط یک کلید است
خوشبختانه یک تنظیم ساده وجود دارد که این مشکل را برطرف میکند، اما باید بدانید کجا بهدنبال آن بگردید. من این تنظیم را در کلاینت رسمی Jellyfin برای Android TV پیدا نکردم، که کمی سادهسازی شده است. در عوض، من از یک کلاینت جایگزین به نام Dune استفاده میکنم. اگر از یک پخشکننده پیشرفتهتر مثل Dune یا حتی چیزی مانند Kodi استفاده میکنید، کنترل بسیار بیشتری بر نحوهٔ برخورد سختافزار با سیگنال ویدئو دارید.
راهحل یک ویژگی به نام تغییر نرخ تجدید (Refresh Rate Switching) است. این ویژگی به جعبه تلویزیون میگوید خروجی فیزیکی خود را برای تطبیق با نرخ فریم فیلمی که مشاهده میکنید، تغییر دهد. اگر بر روی یک فیلم ۲۴p پخش کنید، جعبه تلویزیون خروجی ۶۰ هرتز یا ۵۰ هرتز را قطع کرده و سختافزار خود را به ۲۴ هرتز (یا مضربی مانند ۴۸ هرتز یا ۱۲۰ هرتز) تغییر میدهد. این یک قاعدهٔ ۱:۱ ایجاد میکند که در آن هر فریم فیلم به مدت زمان دقیقا یکسان بر روی صفحه باقی میماند.
در خبرنامه برای رفع مشکلات رسانههای خانه هوشمند مشترک شوید
در Dune، فقط کافی است به تنظیمات Playback، تنظیمات پیشرفته رفته و گزینهٔ تغییر نرخ تجدید را به «Scale on device» روشن کنید. به محض اینکه این گزینه را فعال کردم و به فیلمم برگشتم، تفاوت شگفتانگیزی احساس شد. وقتی پخش را فشار دادم، صفحه برای یک لحظه سیاه شد — که همان «دستدادن» HDMI است که دستگاهها برای همگامسازی با نرخ تجدید جدید انجام میدهند — و سپس فیلم شروع به پخش شد. آن لگ ریتمیک آزاردهنده کاملاً ناپدید شد.
برای تغییر نرخ تجدید سه گزینه دارید. «Disable» گزینهای است که نمیخواهیم. انتخاب «Scale on device» بار تغییر را به جعبه میسپارد و «Scale on TV» آن را به تلویزیون میسپارد. گزینهٔ دوم کمی پرتابل است، زیرا باید از طریق HDMI‑CEC با صفحه تلویزیون مذاکره کند تا خود را به ۲۴ هرتز تنظیم کند.
همه چیز در زمانبندی است
با این تنظیم، اکنون حرکت را دقیقاً همانگونه که کارگردان و تدوینکنندگان میخواستند میبینید، بدون تداخل مصنوعی ۳:۲ پول‑دون یا تعارض ۵۰ هرتز. این یک اصلاح کوچک است، اما دلیل لرزش خیلی جالبتر از مثلاً بارگذاری بیش از حد پردازنده بود — لازم بود به اشتراک بگذارم. امیدوارم به همان اندازه که من لذت بردم، شما نیز لذت برده باشید!
