| mpeg2enc(1) | MJPEG tools manual | mpeg2enc(1) |
نام (NAME)
mpeg2enc - کدگذار ویدیوهای MPEG-1/2
خلاصه دستور (SYNOPSIS)
mpeg2enc [-v|--verbose num] [-M|--multi-thread num_CPU] [-f|--format mpeg_profile] [-l|--level]h|high|m|main [-b|--video-bitrate bitrate_kbps] [-V|--video-buffer video_buf_size_kB] [-T|--target-still-size still_size_kB] [-q|--quantisation quantisation] [-r|--motion-search-radius motion_search_radius] [-Q|--quantisation-reduction -4.0..5.0] [-X|--quant-reduction-max-var 0.0..2500.0] [-p|--3-2-pulldown] [-I|--interlace-mode 0|1|2] [-s|--sequence-header-every-gop] [-g|--min-gop-size min_gop_size] [-G|--max-gop-size max_gop_size] [-P|--force-b-b-p] [-n|--video-norm n|p|s] [-F|--frame-rate frame_rate_code] [-x|--display-hsize] 32..38383] [-y|--display-vsize] 32..38383] [-a|--aspect aspect_ratio_code] [-z|--playback-field-order b|t] [-4|--reduction-4x4 1..4] [-2|--reduction-2x2 1..4] [-S|--sequence-length size_MB] [-B|--nonvideo-bitrate bitrate_kbps] [-N|--reduce-hf 0.0..2.0] [-D|--intra_dc_prec 8..11] [-H|--keep-hf] [-d|--no-dummy-svcd-SOF] [-C|--correct-svcd-hds] [--no-constraints] [-K|--custom-quant-matrices kvcd|tmpgenc|default|hi-res|file=inputfile|help] [-E|--unit-coeff-elim -40..40] [-R|--b-per-refframe 0..2] [--no-altscan-mpeg2] [--dualprime-mpeg2] [-A|--ratecontroller 0..1] [-u|--cbr] [--chapters frame,...] [-?|--help] -o|--output filename
توضیحات (DESCRIPTION)
برنامه mpeg2enc مشتق بسیار بهبودیافتهای از کدگذار مرجع MPEG-2 متعلق به MPEG Software Simulation Group است. این برنامه جریانها را در یک قالب مسطح YUV ساده موسوم به "YUV4MPEG" که توسط lav2yuv و فیلترهای مرتبط (مانند yuvscaler(1)) از بسته mjpegtools(1) تولید میشود، میپذیرد. یک افزونه خروجی برای رمزگشای MPEG با نام mpeg2dec(1) در دسترس است تا امکان استفاده از آن را در برنامههای تبدیل کد (ترنسکد) فراهم کند. این کدگذار در حال حاضر به طور کامل از تولید جریانهای پایهای MPEG-1 و جریانهای فریم پیشرونده (progressive) و درهمبافته (interlaced) در MPEG-2 پشتیبانی میکند. MPEG-2 کدگذاریشده بر اساس میدان (field encoded) نیز ممکن است اما در حال حاضر نگهداری یا پشتیبانی نمیشود.
برای اکثر اهداف، این خروجی جریان پایهای (elementary stream) باید با استفاده از ابزار mplex(1) با یک یا چند جریان صوتی به یک جریان برنامه/سیستم همتافته (multiplex) شود.
توجه داشته باشید که اگرچه این صفحه راهنما قصد دارد نحوه استفاده موثر از mpeg2enc را توضیح دهد، اما به عنوان مقدمهای بر ویدیوی MPEG-1/2 که خود موضوعی نسبتاً پیچیده است در نظر گرفته نشده است. قالب ویدیویی MPEG استانداردی تا حدی پیچیده با گزینههای بسیار متعدد است که توضیح همه آنها لزوماً آسان نبوده و حتی شاید در زمینه یک کدگذار نرمافزاری کاربرد خاصی نداشته باشند.
اطلاعات
کاربردی
فراوانی
برای افراد
تازهکار
را میتوان
در سند mjpeg-HOWTO
یافت که
باید همراه
با بسته mjpegtools(1)
نصب شده
باشد.
اطلاعات
بیشتر و
نرمافزارهای
پشتیبان
کاربردی را
میتوان در
وبگاه mjpegtools
یافت:
انتخاب پروفایل MPEG (SELECTING THE MPEG PROFILE)
تنظیم پروفایل MPEG مورد استفاده. استانداردهای MPEG از تعداد زیادی گزینه پشتیبانی میکنند. در عمل، کاربردهای مختلف قالب MPEG محدودیتهای اضافی بر شکل جریان MPEG اعمال میکنند. تنظیم این فلگ، نوع جریان تولیدی را انتخاب میکند.
-f|--format 0
- MPEG-1 عمومی.
یک پروفایل
پایهای MPEG-1
که به بیشتر
پارامترها
امکان
میدهد
برای
کاربردهای
خاص با
استفاده از
فلگهای
دیگر تنظیم
شوند.
کاربردهای
رایج شامل
تولید یک
جریان MPEG-1 با
نرخ بیت
متغیر به
همراه
بافرهای
بزرگ و نرخ
داده بالا
برای پخش
نرمافزاری
در رایانه
است.
-f|--format 1
- استاندارد
VCD.
یک پروفایل MPEG-1 دقیقاً منطبق با مشخصات VCD2.0. تنظیمات فلگهایی که منجر به ساختار جریان غیراستاندارد شوند، نادیده گرفته میشوند.
-f|--format 2
- پروفایل VCD
سفارشی
کاربر.
مشابه پروفایل 2، اما نرخ بیت و اندازه بافر ویدیو میتوانند روی مقادیر غیراستاندارد تنظیم شوند. اندازه فریم نیز میتواند غیراستاندارد باشد. مقادیر پیشفرض نرخ بیت و اندازه بافر مشابه مقادیر VCD استاندارد هستند.
-f|--format 3
- MPEG-2 عمومی.
یک پروفایل پایهای MPEG-2 که اجازه میدهد اکثر پارامترها برای کاربردهای ویژه با استفاده از فلگهای دیگر تنظیم شوند. کاربردهای معمول شامل تولید جریان MPEG-2 با بافرهای بزرگ و GOPهای طولانی برای پخش نرمافزاری در رایانه است.
-f|--format 4
- استاندارد
SVCD.
یک پروفایل MPEG-2 دقیقاً منطبق با مشخصات SVCD2.0. تنظیمات فلگهایی که منجر به ساختار جریان غیراستاندارد شوند نادیده گرفته میشوند.
-f|--format 5
- پروفایل SVCD
غیراستاندارد.
مشابه پروفایل 4، اما نرخ بیت، اندازه بافر ویدیو، اندازه و ساختار GOP میتوانند روی مقادیر غیراستاندارد تنظیم شوند. اندازه فریم نیز ممکن است غیراستاندارد باشد. مقادیر پیشفرض نرخ بیت و بافر برابر با مقادیر SVCD استاندارد هستند.
-f|--format 6
- توالی
تصاویر
ثابت (Stills) در VCD.
سبک خاصی از جریان MPEG را که برای تصاویر ثابت در VCDها به کار میرود کدگذاری میکند. برای استفاده از این پروفایل، باید با استفاده از فلگ -T اندازه هدف فشردهسازی تصاویر را مشخص کنید. مقادیر معقول حدود ۳۵ کیلوبایت برای تصاویر ثابت با وضوح استاندارد (عرض ۳۵۲) و ۱۲۰ کیلوبایت برای تصاویر ثابت با وضوح بالا (عرض ۷۰۴) است.
-f|--format 7
- توالی
تصاویر
ثابت (Stills) در SVCD.
سبک خاصی از جریان MPEG را که برای تصاویر ثابت در SVCDها به کار میرود کدگذاری میکند. هم تصاویر با وضوح استاندارد (عرض ۴۸۰) و هم وضوح بالا (عرض ۷۰۴) پشتیبانی میشوند. همانند تصاویر ثابت VCD، اندازه هر تصویر ثابت فشردهشده را با استفاده از فلگ -T تعیین میکنید.
-f|--format 8
- پروفایل DVD MPEG-2
برای 'dvdauthor'
این نسخه بستههای ناوبری ساختگی خاصی را به جریان خروجی اضافه میکند که ابزار dvdauthor آنها را پر کرده تا یک فایل .VOB مناسب برای تدوین DVD ایجاد نماید. نرخ بیت پیشفرض ۷۵۰۰ کیلوبیت بر ثانیه و اندازههای بافر بر روی حداکثر مقدار مجاز طبق مشخصات DVD تنظیم میشوند.
-f|--format 9
- پروفایل DVD MPEG-2.
صرفاً یک پیادهسازی بسیار ابتدایی. مناسب برای بردهای DXR2 و سختافزارهای مشابه که تنها در صورتی قادر به رمزگشایی MPEG-2 هستند که در قالبی شبیه DVD ارائه شود. نرخ بیت پیشفرض ۷۵۰۰ کیلوبیت بر ثانیه و اندازههای بافر حداکثر مجاز در استاندارد DVD هستند.
-f|--format 10
- ATSC 480i
-f|--format 11
- ATSC 480p
-f|--format 12
- ATSC 720p
-f|--format 13
- ATSC 1080i
حروف عملکردی عمومی (GENERAL FUNCTION LETTERS)
-v|--verbose num
تنظیم سطح پرگویی به num. مقدار 0 = فقط هشدارها و خطاها، 1 = اطلاعات نیز، 2 = پرگویی کامل.
-K|--custom-quant-matriceskvcd|tmpgenc|
default | hi-res | file=inputfile | help
مشخص کردن ماتریسهای کوانتیزاسیون مورد استفاده به جای مقادیر پیشفرض (که میتوان با "-K default" تعیین کرد). استفاده از "-K hi-res" معادل با استفاده از گزینه -H است. مقدار kvcd از ماتریسهای Kvcd.Net برگرفته از http://www.kvcd.net استفاده میکند؛ مقدار tmpgenc ماتریسهای TMPGEnc از http://www.tmpgenc.net/e_main.html را فراخوانی میکند. به طور میانگین (بسته به منبع ورودی)، جدولهای tmpgenc نرخ بیت میانگین را حدود ۱۰٪ و جدولهای kvcd نرخ بیت را حدود ۱۶٪ (در مقایسه با جدولهای پیشفرض) کاهش میدهند.
-E|--unit-coeff-elim -40..40
مشخص کردن زمان اعمال یک الگوریتم ویژه موسوم به 'unit coefficient elimination' (حذف ضرایب یکانی) روی بلوکهای تصویر کدگذاریشده. اساساً، این رویه بلوکهایی از نوعی را که اطلاعات زیادی ندارند اما کدگذاری آنها پرهزینه است، وادار به نادیده گرفته شدن میکند. هرچه عدد بزرگتر باشد، این صرفنظر کردن احتمالاً بیشتر به چشم میآید اما فشردهسازی بیشتر تقویت میشود. مقدار منفی بدان معناست که تمام ضرایب صفر میشوند، و مقدار مثبت یعنی فقط ضرایب بافت و نه ضرایب شدت پایه صفر میشوند. مقادیر حدود 10 یا -10 به نظر میرسد با منابع ویدیویی باکیفیت عملکرد خوبی دارند. برای محتوای نویزدارتر شاید امتحان کردن 20 یا -20 ارزش داشته باشد.
توجه: اگر فریمهای B کدگذاری شوند، این فقط برای فریمهای B اعمال میشود. -R|--b-per-refframe 0..2
مشخص کردن تعداد فریمهای کدگذاریشده تفاضلی دوجهته (نوع B) بین فریمهای مرجع (I یا P). مقدار پیشفرض 0 است، به جز کدگذاری VCD که طبق استاندارد به 2 فریم B نیاز دارد. کارشناسان درباره میزان بهبود فشردهسازی توسط فریمهای B اختلاف نظر دارند. در عمل، مگر اینکه محتوای بسیار تمیزی داشته باشید، این فریمها کمفایده و گاهی حتی مضر هستند. اگر هیچ فریم B کدگذاری نشود، کدگذاری به طور چشمگیری سریعتر بوده و حافظه کمتری مصرف میکند و فشردهسازی به ندرت افتی بیش از حد ناچیز خواهد داشت.
-?|--help
نمایش خلاصه نحو دستور.
حروف عملکردی تنظیم پروفایل انتخابی (FUNCTION LETTERS ADJUSTING THE SELECTED PROFILE)
توجه: اگر پروفایل انتخابی شما مقادیر مشخصی برای این پارامترها تعیین کرده باشد، این فلگهای تنظیمی را بازنویسی خواهد کرد. به ویژه، برای پروفایلهای استاندارد VCD و SVCD تقریباً هیچ چیز قابل تنظیمی وجود ندارد.
-b|--video-bitrate num
نرخ بیت جریان ویدیویی خروجی بر حسب کیلوبیت بر ثانیه (kBits/sec). پیشفرض دقیقاً نرخ بیت مورد نیاز برای جریانهای VCD است. اگر حالت نرخ بیت متغیر (VBR) انتخاب شده باشد (گزینه -q را ببینید)، این مقدار حداکثر نرخ بیت جریان خواهد بود. توجه: به طور پیشفرض جریانهای MPEG-2 (-f 3، 4، 5، 8 و 9) به صورت VBR هستند. برای تولید جریانهای CBR (نرخ بیت ثابت) از گزینه --cbr استفاده کنید.
-A|--ratecontroller 0..1
مشخص کردن الگوریتم کنترل نرخ مورد استفاده. پیشفرض 0 است.
-V|--video-buffer num
حداکثر بافر ویدیویی مورد نیاز برای رمزگشایی جریان بر حسب کیلوبایت. پیشفرض 46 کیلوبایت (اندازه بسیار کوچک) تعیینشده برای VCD است. اندازه مورد استفاده برای SVCD مقدار معقولتر 230 کیلوبایت است. اگر برای یک رمزگشای نرمافزاری مناسب کدگذاری میکنید، افزایش این مقدار به 500 کیلوبایت یا بیشتر منطقی است.
-T|--target-still-size num
تنظیم اندازه هدف برای تصاویر ثابت (S)VCD بر حسب کیلوبایت.
-s|--sequence-header-every-gop
این فلگ کدگذار را وادار میکند در ابتدای هر گروه تصویر (GOP) یک "سرآیند توالی" (sequence header) تولید کند. این امر توسط برخی سختافزارهای پخشکننده برای پشتیبانی از عملکردهای حرکت سریع به جلو/عقب/دسترسی تصادفی لازم است، اما در غیر این صورت اتلاف بیت به شمار میرود.
-d|--no-dummy-svcd-SOF
پروفایل SVCD MPEG-2 نیازمند "افست اسکن" (Scan OFfset) ویژهای است که در عمل اشارهگرهایی به مکان دیسک نهایی SVCD هستند که ویدیوی مربوط به 0.5 و حدود 5 تا 10 ثانیه قبل و بعد در جریان در آنجا قرار دارد. هدف از این اطلاعات پشتیبانی از عملکردهای "حرکت سریع به جلو/عقب" است. متأسفانه در زمان کدگذاری ویدیو توسط mpeg2enc، این برنامه نمیداند ویدیو در نهایت در کجا قرار خواهد گرفت؛ بنابراین مقادیر افست اسکن ساختگی ویژهای نوشته میشوند که قرار است در حین ساخت تصویر نهایی SVCD پر شوند. در حال حاضر ابزار GNU vcdimager این کار را انجام میدهد. با این حال، در برخی شرایط این افستهای ساختگی میتوانند مشکلاتی ایجاد کنند. این فلگ مانع از تولید آنها توسط mpeg2enc میشود.
--correct-svcd-hds
در استانداردهای رسمی SVCD، فیلد موجود در اطلاعات هدر MPEG-2 که وضوح افقی "توصیهشده" توسط کدگذار را برای رمزگشایی جریان منتقل میکند، باید مقادیر 540 (برای توالیهای 4:3) یا 720 (برای توالیهای 16:9) را دریافت کند. در عمل بسیاری از دستگاهها کار نمیکنند مگر اینکه مقدار آن 480 باشد. این فلگ mpeg2enc را وادار میکند از استاندارد رسمی پیروی کند. در صورتی که توالیهای 16:9 با نسبت تصویر 4:3 پخش میشوند، ارزش امتحان کردن دارد.
--no-constraints
این فلگ تمامی محدودیتهای مربوط به حداکثر نرخ نمونهبرداری ویدیو یا وضوح ویدیو را غیرفعال میکند. هدف آن اجازه کدگذاری وضوحهای غیرمعمول ویدیوهای MPEG است (مانند فیلمهای MPEG با وضوح 2200 در 576 با میدان دید ۱۶۰ درجه برای سینمای واقعیت مجازی)، اما باید با احتیاط استفاده شود: این کار ممکن است شماری از بررسیهای امنیتی را دور بزند و تنظیمات آزمایشنشده میتواند باعث از کار افتادن mpeg2enc در این حالت شود.
-l|--level h|high|m|main
این فلگ به سطح پیادهسازی MPEG-2 اجازه میدهد که پارامترهای کدگذاری بر اساس آن بررسی و تنظیم شوند. اگر در حال کدگذاری محتوای HDTV هستید، ممکن است لازم باشد آن را روی 'high' تنظیم کنید.
--no-altscan-mpeg2
این فلگ استفاده از الگوی اسکن ماکروبلوک 'متناوب' (alternate) را برای کدگذاری MPEG2 غیرفعال میکند. به طور معمول این الگو استفاده میشود، اما چند رمزگشای نرمافزاری قدیمی اشکالاتی در رابطه با این ویژگی داشتند. شما هرگز نباید نیازی به استفاده از این فلگ داشته باشید.
--dualprime-mpeg2
استاندارد MPEG-2 از یک حالت تخمین حرکت ویژه (DPME، Dual Prime Motion Estimation) فقط برای جریانهای دارای فریمهای I/P پشتیبانی میکند که تا حدودی میتواند فشردهسازی را بهبود بخشد. شماری از دستگاههای پخشکننده (هم سختافزاری و هم نرمافزاری) از این حالت پشتیبانی نمیکنند. این پخشکنندهها بسته به اینکه DPME در مشخصات MPEG-2 اختیاری باشد یا خیر، ممکن است با MPEG-2 سازگار باشند یا نباشند. اگر نیاز به تولید محتوا برای چنین پخشکنندههایی دارید (مانند Ogle یا برنامه پخش DVD اپل)، نباید dualprime-mpeg2 را فعال کنید! به طور شگفتآوری حداقل یک پخشکننده سختافزاری/گیرنده دیجیتال شناخته شده است که نسبت به استفاده از DPME ناسازگار است.
-z|--playback-field-order b|t
این فلگ ترتیب فیلد مشخصشده در برچسب درهمبافی در هدر جریان ورودی را بازنویسی میکند. (اگر به این گزینه نیاز پیدا کردید، نشاندهنده مشکلی در فرآیند ضبط/کدگذاری است که در آن ترتیب زمانی دو فیلد در هر فریم به اشتباه برچسبگذاری شده است. نتیجه این امر یک "لرزش" عجیب هنگام پخش جریان روی تلویزیون است. برای اطلاعات بیشتر در مورد مشکلات درهمبافی به mjpeg-howto مراجعه کنید.)
حروف گزینههای کنترل پارامترهای ویدیو (OPTION LETTERS CONTROLLING VIDEO PARAMETERS)
-n|--video-norm n|p|s
اجبار جریان ورودی به اینکه به عنوان NTSC|PAL|SECAM در نظر گرفته شود، صرفنظر از آنچه هدر جریان پیشنهاد میدهد. اساساً این گزینه فقط مقادیر پیشفرض را برای مجموعهای از گزینههای دیگر تنظیم میکند.
-F|--frame-rate num
تنظیم نرخ
فریم جریان
خروجی. به
طور
پیشفرض،
این مقدار
از هدر
ورودی
استنباط
میشود. در
حال حاضر
فقط
نرخهای
استاندارد
MPEG پشتیبانی
میشوند. در
نهایت،
نرخهای
کموبیش
اختیاری
امکانپذیر
خواهند شد.
0 - غیرمجاز
1 - 24000.0/1001.0 (فیلم
تبدیلشده
با 3:2 pulldown در NTSC)
2 - 24.0 (فیلم اصلی -
NATIVE FILM)
3 - 25.0 (ویدیوی PAL/SECAM /
فیلم
تبدیلشده)
4 - 30000.0/1001.0 (ویدیوی NTSC)
5 - 30.0
6 - 50.0 (نرخ فیلد PAL)
7 - 60000.0/1001.0 (نرخ فیلد
NTSC)
8 - 60.0
-a|--aspect num
تنظیم کد
نسبت ابعاد
پخش ویدیوی
کدگذاریشده.
به طور
پیشفرض،
این مقدار
از هدر
ورودی
استنباط
میشود.
1 - 1 - نمایش 1:1
2 - 2 - نمایش 4:3
3 - 3 - نمایش 16:9
4 - 4 - نمایش 2.21:1
- برای MPEG-2 نسبتهای ابعاد مشخصشده مستقیماً استفاده میشوند. برای MPEG-1، mpeg2enc کد نسبت تصویر پیکسلی MPEG-1 را از استاندارد ویدیویی مشخصشده و نسبت تصویر پخش مشخصشده استنباط میکند.
-x|--display-hsize num
-y|--display-vsize num
این گزینهها راهنماهای اندازه افقی نمایش و اندازه عمودی نمایش را در MPEG-2 تنظیم میکنند. به طور پیشفرض، اینها صرفاً همان ابعاد فریم کدگذاری هستند. اما اگر روی مقادیر متفاوتی تنظیم شوند، پخشکننده متوجه میشود که نوارهای سیاه مناسب یا برش/مقیاسبندی باید انجام شود. کاربرد اصلی این پارامترها تنظیم display-vertical-size روی 1080 برای محتوای HDTV 1080i یا 1080p است. در اینجا، از آنجا که ارتفاع فریم باید مضربی از ۱۶ باشد، ارتفاع فریم کدگذاریشده به اجبار 1088 خواهد بود، هرچند استانداردهای HDTV تنها ۱۰۸۰ خط از محتوای تصویر را مشخص میکنند. کمیتههای استاندارد ... واقعاً دوستداشتنی هستند!
-p|--3-2-pulldown
تنظیم -p فقط برای محتوای منبع فیلم ۲۴ فریم در ثانیه معنا دارد. این فلگ پرچمهایی را در جریان خروجی تنظیم میکند که به رمزگشا میگوید فیلم را به عنوان ویدیوی NTSC با نرخ ۶۰ فیلد در ثانیه با استفاده از "3:2 pulldown" پخش کند. این کار بسیار کارآمدتر از کدگذاری به صورت ویدیوی ۶۰ فیلد در ثانیه است. کاربرد کلاسیک آن تبدیل کد یک فیلم کدگذاریشده به صورت PAL (فیلم ۲۴ فریم در ثانیه که با سرعت بیش از حد در ۲۵ فریم در ثانیه پخش میشود!) به NTSC است (فلگ -f را ببینید).
حروف گزینهها برای کنترل فشردهسازی و سرعت (OPTION LETTERS FOR CONTROLLING COMPRESSION AND SPEED)
-M|--multi-thread num_CPU
کدگذاری MPEG کاری است که میتواند به طور کاملاً کارآمد بین تعداد کمی پردازنده (CPU) تقسیم شود. برنامه mpeg2enc میتواند از نظر داخلی طوری تنظیم شود که وظایف اصلی پردازش را بین چند رشته اجرایی (thread) همزمان تقسیم کند. این فلگ چندرشتگی را برای استفاده بهینه از تعداد پردازندههای مشخصشده تنظیم میکند.
لازم به ذکر است که حتی با وجود ۱ پردازنده نیز تا حدودی چندرشتگی انجام میشود: ورودی فریمها به موازات کدگذاری صورت میگیرد. مقدار پیشفرض -M برابر با 1 است. این امر دستیابی به عملکرد خوبی را ممکن میسازد، به ویژه هنگامی که یک ماشین جداگانه برای پیشپردازش (رمزگشایی از MJPEG، تغییر مقیاس، نویززدایی و غیره) با اتصال لولهای نتیجه نهایی به mpeg2enc (مثلاً با rsh یا ssh) استفاده میشود.
تنظیم -M 0 تمام چندرشتگی را غیرفعال میکند. این کار گاهی برای اشکالزدایی یا دستیابی به حداکثر بازدهی CPU در یک سیستم اشتراکی مفید است. تنظیم -M 3 در یک ماشین دوپردازندهای نتایجی اندکی سریعتر از -M 2 به بهای راندمان کمی پایینتر CPU تولید میکند. اگر کار دیگری روی ماشین کدگذاری نیاز نیست انجام شود، این گزینه کاربردی است. در عمل تنظیم -M بیشتر از 4 به دلیل موازیسازی نسبتاً درشتدانه، حتی اگر CPUها در دسترس باشند، فایده چندانی ندارد. در واقع یک محدودیت ثابت ۴ رشته کارگر (worker threads) در برنامه وجود دارد.
مقدار پیشفرض به 0 به جای 1 تغییر یافته است تا از خرابی (crash) در انتهای کدگذاری جلوگیری شود:
INFO: [mpeg2enc] Signaling last frame = 499 mpeg2enc: seqencoder.cc:433: void SeqEncoder::EncodeStream(): Assertion `pass1coded.size() == 0' failed. Abort
-q|--quantisation 1..31
حداقل کوانتیزاسیون جریان خروجی. کوانتیزاسیون دقتی را که اطلاعات تصویر با آن کدگذاری میشوند کنترل میکند. هرچه عدد کمتر باشد کیفیت بالاتر است اما نرخ داده مورد نیاز بیشتر خواهد بود. توجه: در سیستمهای IA32 ممکن است به دلیل سرریز/کوتاهسازی محاسباتی در روتینهای DCT/iDCT، تنظیم مقدار خیلی کم (۳ یا کمتر) موجب ایجاد اعوجاج و مصنوعات تصویری شود. اگر این گزینه تنظیم شود، یک جریان با نرخ بیت متغیر (VBR) تولید میشود. این روش کارآمدتر است اما MPEG-1 با نرخ بیت متغیر توسط برخی از رمزگشاهای سختافزاری قابل پخش نیست و توسط برخی بستههای ساخت DVD رد میشود. اگر قصد دارید از رمزگشای نرمافزاری استفاده کنید، حتماً نرخ بیت متغیر را ترجیح خواهید داد.
اگر این گزینه بدون تعیین حداکثر نرخ بیت تنظیم شود، کوانتیزاسیون روی مقدار مشخصشده ثابت میماند. لازم به ذکر است که تعیین نکردن نرخ بیت احتمالاً یک خطا بوده و ممکن است نتایج غیرمنتظرهای ایجاد کند.
برای جریانهای MPEG-2 در صورتی که -q به طور صریح داده نشود از پیشفرض 8 استفاده میشود. برای تحمیل جریانهای نرخ بیت ثابت از --cbr و -b استفاده کنید، نه -q!
-I|--interlace-mode 0|1|2
تنظیم ساختار تصویر توالی و نوع کدگذاری بلوک برای جریانهای MPEG-2. به طور پیشفرض، این مقدار از برچسب درهمبافی در جریان ورودی استنباط میشود. تنظیم روی 0 به صورت فریمبهفریم با خاموش کردن پشتیبانی از ویدیوی درهمبافته کدگذاری میکند و مشخص میسازد که از زیرنمونهبرداری رنگ پیشرونده (progressive) استفاده شده است. تنظیم روی 1 به صورت فریمبهفریم با جبران حرکت و کدگذاری بلوک سازگار با درهمبافی کدگذاری میکند و مشخص میسازد که از زیرنمونهبرداری رنگ درهمبافته استفاده شده است. تنظیم روی 2 محتوای درهمبافته را فیلدبهفیلد کدگذاری میکند، که برای محتوای درهمبافته با بافت بسیار بالا و حرکت زیاد نتایج دقیقتری تولید میکند، به بهای کاهش کلی کارایی.
- این تنظیم باید با ماهیت درهمبافی جریان ورودی مطابقت داشته باشد، در غیر این صورت ممکن است هنگام پخش جریان MPEG اعوجاج رنگی ایجاد شود.
-g|--min-gop-size num
-G|--max-gop-size num
این فلگها حداقل و حداکثر اندازه گروه تصویر (GOP) را برای جریان MPEG خروجی تعیین میکنند. مقادیر پیشفرض به قالب خروجی بستگی دارند.
برای MPEG-1 (مثلاً VCD) پیشفرض اندازه ثابت GOP برابر با 12 است (-g و -G هر دو روی 12 تنظیم شدهاند).
برای MPEG-2 مقدار پیشفرض -G (حداکثر) با توجه به سیستم ویدیو تنظیم میشود: -G 15 برای ۶۲۵ خط (PAL) و 18 برای ۵۲۵ خط (NTSC). اگر -g (حداقل) مشخص نشده باشد، حداقل اندازه GOP روی نصف حداکثر (-G) تنظیم میشود.
برای تحمیل اندازه ثابت GOP، هر دو -g و -G را با یک مقدار تعیین کنید.
اگر حداقل و حداکثر اندازه GOP یکسان نباشند، در صورتی که بیش از ۶۰٪ از ماکروبلوکها در یک فریم P یا B به صورت درونتصویری (Intra) کدگذاری شوند، mpeg2enc یک GOP جدید را آغاز خواهد کرد. این امر تضمین میکند که تغییرات بزرگ تصویر با یک فریم I کاملاً کدگذاریشده از طریق شروع یک GOP جدید همزمان شود. این میتواند به جلوگیری از "شطرنجی شدن" (blockiness) گذرا کمک کند.
اندازههای معقول حداقل GOP برابر با 6 یا 9 هستند. اگر مقداری برای حداقل مشخص نشود اما حداکثر تعیین شده باشد، حداقل روی نصف حداکثر تنظیم میشود. اندازه بزرگتر GOP میتواند به کاهش نرخ بیت مورد نیاز برای یک کیفیت معین کمک کند. با این حال، این واقعاً فقط برای محتوای منبع با کیفیت بالا و دارای نویز اندک (مانند ویدیوی دیجیتال) صادق است. برای محتوای پخش تلویزیونی تعیین اندازه GOP بسیار فراتر از 21 یا 24 فایده چندانی ندارد. حتی با منبع خوب نیز بازدهی نزولی بسیار سریع ظاهر میشود. همچنین باید توجه داشت که قالبهای خاص MPEG-2 (مانند DVD) در حداکثر اندازه مجاز GOP دارای محدودیت هستند.
توجه: در حال حاضر mpeg2enc طوری برنامهریزی شده است که 2 فریم B را بین هر فریم I/P تولید کند، مگر اینکه اندازه GOP تعداد کمتری را تحمیل کند. این امر برای نرخهای بیت متوسط تا بالا (>= 1Mbps) منطقی است اما احتمالاً برای کدگذاری در نرخ بیت پایین کمتر بهینه است.
-c|--closed-GOPs
تنظیم این فلگ باعث میشود کدگذار تنها GOPهای "بسته" (Closed Groups of Pictures) تولید کند که بدون ارجاع به فریمهای پیش از خود قابل رمزگشایی هستند. این برای جریانهایی که قرار است در DVDهای چندزاویهای استفاده شوند و کاربردهایی که در آنها MPEG با قابلیت ویرایش آسانتر مورد نیاز است مفید است.
-P|--force-b-b-p
این فلگ انتخاب اندازه GOP را وادار میکند تا اندازههایی را برگزیند که تضمین میکنند ۲ فریم B بین فریمهای مجاور I/P ظاهر شوند. چندین رمزگشای رایج MPEG-1 نمیتوانند جریانهایی را که در آنها کمتر از ۲ فریم B بین فریمهای I/P وجود دارد پردازش کنند.
-Q|--quantisation-reduction -4.0..5.0
این فلگ میزان کاهش کوانتیزاسیون را برای بلوکهایی که حاوی مقادیر زیادی جزئیات تیز تصویر هستند مشخص میکند. مقادیر بزرگ استفاده کارآمدی از بیتها ایجاد میکنند اما ممکن است باعث ایجاد اعوجاجهای بصری در اطراف بخشهای پرجزئیات شوند. با محتوای منبع نویزدار، این گزینه ممکن است اثر "مواج شدن" (swimming) روی پسزمینههای بافتدار ایجاد کند چرا که نویز باعث افزایش تصادفی کوانتیزاسیون بلوکها میشود. پیشفرض 0.0 (خاموش) است. گزینه -X را نیز ببینید.
-X|--quant-reduction-max-var 0.0..2500.0
واریانس روشنایی (luma) که تقویت کوانتیزاسیون (-Q) در زیر آن فعال میشود.
-r|--motion-search-radius num
این فلگ شعاع جستجوی تخمین حرکت را تنظیم میکند. برای بیشتر اهداف، مقدار پیشفرض (16) کاملاً مناسب است. برای MPEG-2 با وضوح بالا و صحنههای پرتحرک، شاید افزایش آن ارزش داشته باشد. با این حال، این کار کدگذاری را به طور چشمگیری کندتر میکند. کاهش شعاع فایده چندانی ندارد؛ افزایش سرعت چشمگیر نخواهد بود و اثر منفی بر کیفیت میتواند ملموس باشد.
-4|--reduction-4x4 1..4
-2|--reduction-2x2 1..4
این گزینهها کنترل میکنند که کدگذار تا چه اندازه در دور انداختن تخمینهای به ظاهر نامناسب در حین تخمین حرکت رادیکال عمل کند. تنظیم روی 1 بدان معناست که بلوکهای بسیار کمی در مراحل اولیه دور ریخته میشوند که منجر به کدگذاری کند اما بالاترین کیفیت ممکن میشود. تنظیم روی 4 کدگذاری را سریع میکند اما میتواند بر کیفیت تأثیر منفی بگذارد. فلگ -4 دور ریختن را در مرحله جستجوی اولیه زیرنمونهبرداریشده 4*4 کنترل میکند، و فلگ -2 دور ریختن را در مرحله ثانویه زیرنمونهبرداریشده 2*2 مدیریت مینماید.
- این فلگها مفید هستند زیرا مصالحه بین سرعت و کیفیت بسته به نوع CPU به طور محسوسی متفاوت است. در ماشینهای مدرن تأثیر بر سرعت حدود ۲ برابر و در ماشینهای قدیمیتر حدود ۳ برابر است. تأثیر بر کیفیت حدود ۱۰٪ کوانتیزاسیون است (۰.۲ از یک بیت دقت در کدگذاری بافتها). برای اکثر کاربردها تنظیمات پیشفرض مناسب خواهند بود. با این حال در P-III Katmai و موارد مشابه، -4 2 -2 1 یک تنظیم کیفیت نزدیک به بهینه با سرعت معقول فراهم میکند.
-N|--reduce-hf num
تنظیم این فلگ نحوه کوانتیزاسیون جزئیات بافت را تغییر میدهد تا دقت کدگذاری اطلاعات با فرکانس بالا کاهش یابد. این ویژگی برای منابعی با نویز اندک بسیار مفید است. اگر محتوایی با نویز شدید دارید، ابزارهای فیلترسازی موجود در mjpegtools انتخاب بسیار بهتری هستند. عدد تعیینشده باید در بازه 0.0 تا 2.0 باشد که حداکثر افزایش کوانتیزاسیون را ارائه میدهد. یک عدد مناسب برای استفاده 1.5 یا 1.0 است.
-H|--keep-hf
تنظیم این فلگ باعث میشود کدگذار تا حد امکان اطلاعات با فرکانس بالا را کدگذاری کند. این تنظیمی مناسب برای به حداکثر رساندن کیفیت در وضوح VCD با محتوای منبع باکیفیت و کمنویز است. همچنین در صورت داشتن پهنای باند و نرخ بیت کافی، میتواند به جلوگیری از "مواج شدن" تصویر کمک کند!
-D|--intra_dc_prec num
تعیین دقت مؤلفه DC. مقدار پیشفرض 9 است. بیشتر DVDهای تجاری از 10 استفاده میکنند. استفاده از 9 به جای آن موجب صرفهجویی در چند بیت میشود. استفاده از 10 ممکن است از شطرنجی دیده شدن نواحی بزرگ با رنگ تقریباً یکسان جلوگیری کند. مقدار 11 تنها در پروفایل/سطح بعدی MPEG-2 معتبر است، بنابراین در حال حاضر مقدار معناداری برای استفاده نیست.
حروف گزینهها برای تکهبندی جریان خروجی (OPTION LETTERS FOR CHUNKING THE OUTPUT STREAM)
-S|--sequence-length num
این فلگ اجازه میدهد تا اندازه هدف توالیهای جداگانه در جریان همتافته نهایی بر حسب مگابایت تعیین شود. در صورت تنظیم، mpeg2enc حجم جریان نهایی را زیر نظر میگیرد و هر بار که به حد تعیینشده میرسد، یک تفکیک توالی (در واقع: پایان توالی / شروع توالی) در جریان خروجی وارد میکند. همتافکننده mplex(1) میتواند این تفکیکها را شناسایی کرده و با رسیدن به هر یک، یک فایل خروجی همتافته جدید را آغاز کند. به این ترتیب به راحتی میتوان اطمینان حاصل کرد که هر فایل توالی تشکیلدهنده میتواند روی یک دیسک CD-R رایت شده و همچنان به عنوان یک توالی مستقل MPEG قابل پخش باشد. برای پروفایلهای SVCD و VCD طول توالی هدف پیشفرض 700 مگابایت است. برای سایر پروفایلها پیشفرض این است که طول توالی نامحدود باشد.
-B|--nonvideo-bitrate num
از آنجا که mpeg2enc توانایی ذهنخوانی ندارد، نمیتواند از قبل بداند چه محتوای دیگری با جریان ویدیویی خروجی همتافته خواهد شد؛ بنابراین برای اینکه محاسبات آن در مورد محل درج نقاط تقسیم درست باشد، باید مجموع نرخ داده سایر محتوایی که در نهایت قرار است با ویدیو همتافته شوند به آن اعلام گردد. این فلگ امکان تعیین این نرخ را بر حسب کیلوبیت بر ثانیه فراهم میکند.
یک قاعده سرانگشتی خوب این است که مجموع نرخ تمام جریانهای دیگر به علاوه ۱٪ از کل نرخ (شامل ویدیو) استفاده شود.
-u|--cbr
اجبار به استفاده از کدگذاری نرخ بیت ثابت (Constant Bit Rate). این حالت کمتر از حد بهینه است (و تقریباً در همه موارد ناکارآمد)، اما برخی افراد بر آن اصرار دارند. توجه: این گزینه استفاده از گزینه -q را غیرفعال میکند (بر آن تقدم دارد)!
استفاده از این گزینه بدون تعیین نرخ بیت با استفاده از -b خطا محسوب میشود، چرا که نرخ بیت ثابت 0 معنایی ندارد.
--chapters frame,...
این فلگ به شما اجازه میدهد تا نقاط فصل (chapter points) را درون جریان mpeg تعریف کنید. این ویژگی هنگام تولید ویدیوی DVD بسیار مفید است. هر نقطه فصل با شماره فریم مشخص میشود، که فریم نخست با شماره 0 است. هر نقطه فصل تعریفشده در ابتدای یک GOP بسته به عنوان یک فریم I قرار خواهد گرفت.
دستورالعملهای SSE ،3D-Now! و MMX (SSE, 3D-Now!, MMX)
برنامه mpeg2enc استفاده گستردهای از این الحاقات مجموعه دستورات SIMD در پردازندههای خانواده x86 میکند. روتینهای مورد استفاده در زمان اجرا به طور پویا تعیین میشوند. لازم به ذکر است که استفاده از SSE نیازمند پشتیبانی سیستمعامل است. هستههای قدیمی لینوکس 2.2.x (مگر موارد وصلهشده مانند ردهت) از این ویژگی برخوردار نیستند و بنابراین SSE، هرچند از نظر فیزیکی وجود دارد، فعال نخواهد شد.
اشکالات (BUGS)
باید گزینهای برای تحمیل اندازههای GOP وجود داشته باشد که اجازه حضور ۲ فریم B را بین فریمهای I/P بدهد. برخی از رمزگشاها (حتی نرمافزاری) توانایی مدیریت حالتی را ندارند که فریمهای I/P پشت سر هم یا تنها با ۱ فریم B بین آنها بیایند.
نیاز به امکانی برای نوشتن فیلدهای داده کاربری ساختگی وجود دارد تا ابزار multiplexer/imager بتواند اشارهگرهای جلو/عقب را هنگام ترکیب یا ساخت تصویر SVCD وارد کند.
نویسنده (AUTHOR)
این صفحه
راهنما
توسط Andrew Stevens
نوشته شده
است. اگر
سؤال، نظر،
مشکلی
دارید یا
صرفاً
میخواهید
با
توسعهدهندگان
تماس
بگیرید،
فهرست پستی
اصلی
ابزارهای MJPEG
به شرح زیر
است:
mjpeg-users@lists.sourceforge.net
برای
اطلاعات
بیشتر، از
وبگاه ما
دیدن کنید:
http://mjpeg.sourceforge.net
همچنین ببینید (SEE ALSO)
mplex(1), mp2enc(1), lavrec(1), lavplay(1), lav2yuv(1), lav2wav(1), yuvscaler(1), yuvdenoise(1), y4mdenoise(1), mjpegtools(1)
| 25 Aug 2002 | MJPEG Tools Team |