Skip to content

رفتار و خط‌لوله انکودینگ (Encoding Pipeline) ​

این سند نحوه بازرسی ویدیو، محاسبه نردبان رندیشن‌ها، تولید فیلترگراف‌های تک‌پاس FFmpeg، تنظیم دارکِست و رمزنگاری را تشریح می‌کند.


۱. بازرسی متادیتا و ابعاد نمایش ​

کتابخانه Mosaic ابتدا با اجرای ابزار FFprobe مشخصات زیر را استخراج می‌کند:

  • ابعاد نمایش واقعی (با در نظر گرفتن متادیتای چرخش موبایل)
  • نرخ فریم متوسط (FPS) و مدت‌زمان دقیق ویدیو
  • وجود استریم صوتی و تعداد کانال‌ها

تمایز ابعاد ذخیره‌شده و ابعاد نمایش ​

در گوشی‌های هوشمند ممکن است ابعاد ذخیره‌شده فایل 1920x1080 باشد اما متادیتای چرخش 90- درجه باشد. در این حالت، Mosaic ابعاد نمایش را 1080x1920 (عمودی) محاسبه می‌کند و نردبان کیفیت را بر پایه این ابعاد می‌سازد تا تصویر دچار دفرمه شدن نشود.


۲. تولید نردبان سازگار با نسبت تصویر (ABR Ladder) ​

طبقات کیفی بر اساس ارتفاع نمایش ویدیو تعیین می‌شوند:

ارتفاع تصویر ورودیرندیشن‌های پیشنهادی
>= 10801080p, 720p, 360p
>= 720720p, 360p
>= 360360p
< 360ارتفاع اصلی منبع

عرض هر رندیشن با فرمول ریاضی زیر محاسبه می‌شود: [ \text{target_width} = 2 \times \text{round}\left(\frac{\text{target_height} \times \text{display_width}}{2 \times \text{display_height}}\right) ]


۳. فیلترگراف تک‌پاس FFmpeg ​

تمامی رندیشن‌ها و لایه‌های گرافیکی در یک فیلترگراف واحد پردازش می‌شوند:

text
[0:v]split=3[v0][v1][v2];
[v0]scale=1920:1080,setsar=1,setdar=16/9[v0o];
[v1]scale=1280:720,setsar=1,setdar=16/9[v1o];
[v2]scale=640:360,setsar=1,setdar=16/9[v2o]

یکسان‌سازی Display Aspect Ratio (setdar) ​

در پروتکل MPEG-DASH استاندارد ایزو، تمامی رندیشن‌های یک AdaptationSet باید نسبت تصویر یکسانی داشته باشند. موزاییک با اعمال خودکار setdar از هرگونه خطای عدم انطباق جلوگیری می‌کند.


۴. استاندارد بلندی صدای EBU R128 ​

با فعال‌سازی WithNormalizeAudio()، فیلتر قدرتمند نرمال‌سازی صدا اعمال می‌شود:

text
-filter:a loudnorm=I=-16:TP=-1.5:LRA=11

این کار از تغییرات ناگهانی و گوش‌خراش ولوم صدا بین ویدیوهای مختلف جلوگیری می‌کند.

منتشر شده تحت لایسنس MIT.