AmirT نوشته است:[نمایش]اگر فرصتش رو داری، امکان داره راجع به جزئیات این تنظیمات یکم توضیح بدی که چی هستن و به چه دردی میخورن؟
خواهش میکنم، کلا مشکل کدک به سه عامل مهم بستگی داره، محدودیت زمان انکود کردن برای ارسال و دریافت، محدودیت حجم دیتا و محدودیت دستگاه هایی که قراره که این الگوریتم های پیچیده رو به صورت realtime باز کنند و decode کنند.
اینکه شما از بیت ریت پایین تر کیفیت بالاتری خروجی بگیرید به چندین عامل بستگی داره.
۱. تفاوت multi-pass and single pass شما هرچی بخواید سریع تر خروجی بگیرید کیفیت خروجی پایین تر خواهد بود. اگه زمان برای خروجی دارید حتما و بدون تردید از multi pass استفاده کنید. زمان تون ۲ برابر میشه ولی خیلی از مشکلات رفع میشه.
۲. محدودیت بیت ریت، شما طبیعتا هر چی کیفیت بالاتری بخواید بیت ریت بیشتری نیاز دارید ولی از یک جایی به بعد دیگه کیفیت اونقدری بالا نمیره و مهمترین مساله بالانس کردن این عدده.
دو تا عامل توی بیشتر شدن بیتریت خیلی مهم اند. اولی اندازه فریم به طور مثلا 1920 باشه یا کمتر. مورد دوم فریم ریت شما بنا به میزان فریم ریت باید بالا ببرید چون عدد بیتریت در هر ثانیه است. به طور مثال اگه حدود ۱۴.۵ برای اچ دی مناسب باشه این عدد مال ۳۰ فریم، برای ۲۵ شما می تونید با حدود ۱۲ هم همون نتیجه رو بگیرید و اگه مثلا ۶۰ فریم باشه باید حدود ۲۴ باشه. preset هاش توی Compressor هست.
۳. مشکل سی پی یو، وسیله که قراره این ویدیو روش دیده بشه. به طور مثال موبایل ها و ایپد های قدیمی تر سی پی یو کند تری دارند و از یک بیت ریت به بالا رو نمی تونند به راحتی پخش کنند. وسیله که قراره روش دیده بشه رو حتما در نظر بگیرید و بر اساس اون خروجی بگیرید. که preset هاش توی Compressor هست و همچنین hand brake
اما چند تا نکته مهم دیگه
۱. موضوع dithering یا اضافه کردن noise. بزرگترین کار که هر انکودری انجام میده یکی کردن تیکه های بزرگ و تکراری تصویره که با یکی کردن اون قسمت ها حجم تصویر رو کم میکنه. اما این مشکل شطرنجی شدن رو به وجود میاره چون جاهایی که شبیه اند طبیعتا شطرنجی میشن.
چطور میشه این مشکل رو حل کرد؟ وقتی یک نویز کوچک به تصویر اضافه میشه اون تیکه های بزرگ تصویر رو میشکونه و مخصوصا اگه از Multi pass استفاده کنید. بار دوم که داره تصویر رو انکود میکنه دنبال اون شطرنجی ها میگرده و اونا رو میشکونه و اطلاعات بیشتری اونجا قرار میده، به طور مثال variable bitrate به همین درد میخوره که بیاد و جایی که نیازه حجم رو بالا ببره.
۲. پروفایل Basic, Main, High این سه تا کارکردهای متفاوتی دارند.
Basic برای زمانی که شما تصویرتون باید با سرعت زیاد انکود بشه و بره و خطا توش خیلی مهم نیست. مثلا video chat,facetime یا هرچیزی که سرعت توی انتقال خیلی مهمه و بخشی زیادی از تصویر تکراریه، مثلا دیوار پشت سر فرده.
Main بعدا برای تلویزیون درست شد و کیفیت خیلی بهتری داره و زمان بیشتری برای انکود و دکود میخواد.
High برای Bluray درست شد و کیفیت خیلی بهتری داره و زمان بیشتری برای دکود و انکود میخواد و سی پی یو قوی تری برای پخش نیاز داره.
۳. Keyframes اگه شما ۲۵ فریم در ثانیه داشته باشید کدک سعی میکنه تا جایی که می تونه حرکت های تکراری فریم های تکراری رو یکی کنه. اما اگه سرعت حرکت توی تصویر شما زیاد باشه چی؟ اینجاست که وجود Keyframe خیلی مهم میشه. این کلید های حرکت های اصلی تصویر هستند، هر چی کیفریم بیشتر باشه و نزدیک تر به هم باشند شما تصویرتون کمتر شطرنجی میشه ولی حجم بالاتری نیاز داره.
۴. GOP or group of pictures یا چیدمان فریم ها... اینا فریم های تصویر اصلی هستند که حکم قاب های اصلی رو دارند که تصویرهای مرجع هستند که تمام تصویرهای دیگه رو با در نظر گرفتن اینا باز سازی میکنه. این موضوع بسیار
مهم یه و شاه کلید خیلی از کدکهاست که چند زیرشاخه مهم داره
i frame تصویر واقعی که اطلاعات واقعی توش هست
P frame فریمی که کدک حرکت ها رو در نظر میگیره و فقط Motion compensation و در واقع حرکت پیکسل ها رو ثبت کرده نه خودشون رو
B frame یا bi directional که به فریم قبل و بعد نگاه میکنه و میگه حالا باید فریم واقعی نگاه کنه، جعل کنه یا حرکت رو ثبت کنه و به نسبت اون اطلاعات اضافه میکنه
شما اگه این سه مورد رو بدونید به راحتی میتونید بگید که مثلا اگه یک کدک با IBBPBBPBBPBBI کار میکنه یعنی چی. این کدک در هر ۱۵ فریم فقط ۲ فریم واقعی داره بقیه جعلی هستند که اصلاحا بهش Long GOP گفته میشه که احتمال از دست رفتن اطلاعات و شطرنجی شدن خیلی زیاده.
و نکته اخر اینکه من شخصا از فرمت Long GOP خیلی بدم میاد که متاسفانه شرکت SONY علاقه عجیبی بهش داره و خیلی از دوربین هاش با این ساختار تصویر برداری میکنند. یکی از دلایلی که من بارها از دوربین های سونی گله کردم همینه.
گه بخوایم یک جمع بندی کلی بکنیم و درگیر این هم مسائل تکنیکی نشیم.
۱. همیشه از multipass استفاده کنید.
۲. میزان bitrate رو با میزان فریم ریت مقایسه کنید و در صورت نیاز بالا ببرید.
۳. از پروفایل High استفاده کنید. ( اگه برای دستگاه جدید و سریع خروجی میگیرید)
۴. اگه نیاز بود از dithering استفاده کنید.
۵. از apple compressor استفاده کنید که کلی اینا رو خودش اتوماتیک انجام میده و دردسرهای شما رو کم میکنه
ببخشید توضیحات خیلی طولانی شد
https://en.wikipedia.org/wiki/Advanced_Video_Coding