FFMPEG-DEVICES(1) FFMPEG-DEVICES(1)

ffmpeg-devices - دستگاههای ورودی و خروجی صوتی و تصویری در FFmpeg

این سند دستگاه‌های ورودی و خروجی ارائه‌شده توسط کتابخانه libavdevice را شرح می‌دهد.

کتابخانه libavdevice همان رابط کتابخانه libavformat را ارائه می‌دهد. به طور مشخص، یک دستگاه ورودی مشابه یک دی‌ماکسر (demuxer) و یک دستگاه خروجی مشابه یک ماکسر (muxer) در نظر گرفته می‌شود و رابط و گزینه‌های عمومی دستگاه مشابه موارد ارائه‌شده توسط libavformat هستند (به راهنمای ffmpeg-formats مراجعه کنید).

علاوه بر این، هر دستگاه ورودی یا خروجی ممکن است از گزینه‌های به‌اصطلاح اختصاصی (private options) پشتیبانی کند که مختص همان مؤلفه است.

گزینه‌ها را می‌توان با مشخص کردن -option value در ابزارهای FFmpeg، یا با تنظیم مقدار به صورت صریح در گزینه‌های "AVFormatContext" دستگاه یا با استفاده از رابط برنامه‌نویسی libavutil/opt.h برای استفاده‌های برنامه‌نویسی مشخص کرد.

دستگاه‌های ورودی عناصر پیکربندی‌شده‌ای در FFmpeg هستند که امکان دسترسی به داده‌های دریافتی از یک دستگاه چندرسانه‌ای متصل به سیستم شما را فراهم می‌کنند.

هنگامی که بیلد FFmpeg خود را پیکربندی می‌کنید، تمام دستگاه‌های ورودی پشتیبانی‌شده به صورت پیش‌فرض فعال هستند. می‌توانید با استفاده از گزینه پیکربندی "--list-indevs" لیست تمام دستگاه‌های موجود را مشاهده کنید.

می‌توانید با استفاده از گزینه پیکربندی "--disable-indevs" تمام دستگاه‌های ورودی را غیرفعال کنید، و با استفاده از گزینه "--enable-indev=INDEV" یک دستگاه ورودی خاص را به صورت انتخابی فعال کنید، یا می‌توانید با استفاده از گزینه "--disable-indev=INDEV" یک دستگاه ورودی خاص را غیرفعال کنید.

گزینه -devices در ابزارهای *ff فهرست دستگاه‌های ورودی پشتیبانی‌شده را نمایش می‌دهد.

در ادامه توضیحات دستگاه‌های ورودی موجود ارائه شده است.

دستگاه ورودی ALSA (معماری پیشرفته صدای لینوکس - Advanced Linux Sound Architecture).

برای فعال‌سازی این دستگاه ورودی هنگام پیکربندی، به نصب بودن libasound بر روی سیستم خود نیاز دارید.

این دستگاه امکان ضبط از یک دستگاه ALSA را فراهم می‌کند. نام دستگاه مورد نظر برای ضبط باید شناسه کارت ALSA باشد.

یک شناسه ALSA دارای ساختار دستوری زیر است:

hw:<CARD>[,<DEV>[,<SUBDEV>]]

که در آن مؤلفه‌های DEV و SUBDEV اختیاری هستند.

سه آرگومان (به ترتیب: CARD,DEV,SUBDEV) شماره یا شناسه کارت، شماره دستگاه و شماره زیردستگاه را مشخص می‌کنند (مقدار ۱- به معنای هر دستگاهی است).

برای مشاهده لیست کارت‌هایی که در حال حاضر توسط سیستم شما شناسایی شده‌اند، فایل‌های /proc/asound/cards و /proc/asound/devices را بررسی کنید.

به عنوان مثال برای ضبط با ffmpeg از یک دستگاه ALSA با شناسه کارت 0، می‌توانید دستور زیر را اجرا کنید:

ffmpeg -f alsa -i hw:0 alsaout.wav

برای اطلاعات بیشتر ببینید: http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html

گزینه‌ها (Options)

نرخ نمونه‌برداری (sample rate) را بر حسب هرتز تنظیم می‌کند. مقدار پیش‌فرض 48000 است.
تعداد کانال‌ها را تنظیم می‌کند. مقدار پیش‌فرض 2 است.

دستگاه ورودی دوربین اندروید (Android camera).

این دستگاه ورودی از رابط Camera2 NDK API اندروید استفاده می‌کند که در دستگاه‌های دارای سطح API ۲۴ یا بالاتر (API level 24+) در دسترس است. در دسترس بودن android_camera هنگام پیکربندی به طور خودکار شناسایی می‌شود.

این دستگاه امکان تصویربرداری از تمامی دوربین‌های یک دستگاه اندرویدی را که در Camera2 NDK API ادغام شده‌اند فراهم می‌کند.

دوربین‌های موجود در داخل سیستم شماره‌گذاری می‌شوند و می‌توان آن‌ها را با پارامتر camera_index انتخاب کرد. رشته فایل ورودی نادیده گرفته می‌شود.

به طور کلی دوربین پشت دارای شاخص 0 و دوربین جلو دارای شاخص 1 است.

گزینه‌ها (Options)

اندازه تصویر را با رشته‌ای مانند 640x480 یا hd720 تنظیم می‌کند. اگر اندازه درخواستی ویدیو در دسترس نباشد یا به طور پیش‌فرض، به اولین پیکربندی موجود گزارش‌شده توسط اندروید بازمی‌گردد.
نرخ فریم (framerate) ویدیو را تنظیم می‌کند. اگر نرخ فریم درخواستی موجود نباشد یا به صورت پیش‌فرض (۱-)، به اولین پیکربندی موجود گزارش‌شده توسط اندروید بازمی‌گردد.
شاخص دوربینی که باید استفاده شود را تنظیم می‌کند. مقدار پیش‌فرض 0 است.
حداکثر تعداد فریم‌ها برای بافر کردن را تنظیم می‌کند. مقدار پیش‌فرض 5 است.

دستگاه ورودی AVFoundation.

فریم‌ورک AVFoundation در حال حاضر چارچوب توصیه‌شده توسط اپل برای دریافت و ضبط استریم‌ها در OSX >= 10.7 و همچنین در iOS است.

نام فایل ورودی باید با ساختار نحوی زیر ارائه شود:

-i "[[VIDEO]:[AUDIO]]"

بخش اول ورودی ویدیو را انتخاب می‌کند در حالی که بخش دوم ورودی صدا را انتخاب می‌کند. استریم باید بر اساس نام دستگاه یا شناسه (شاخص) دستگاه همان‌طور که در فهرست دستگاه‌ها نشان داده شده است مشخص شود. همچنین می‌توان دستگاه ورودی ویدیو و/یا صدا را با شاخص آن انتخاب کرد با استفاده از

B<-video_device_index E<lt>INDEXE<gt>>

و/یا

B<-audio_device_index E<lt>INDEXE<gt>>

، که هر نام دستگاه یا شاخصی را که در نام فایل ورودی ارائه شده است بازنویسی (override) می‌کند.

تمام دستگاه‌های موجود را می‌توان با استفاده از -list_devices true برشمرد، که همه نام‌های دستگاه‌ها و شاخص‌های مربوطه را فهرست می‌کند.

دو نام مستعار (alias) برای دستگاه‌ها وجود دارد:

"default"
دستگاه پیش‌فرض AVFoundation از نوع مربوطه را انتخاب می‌کند.
"none"
نوع رسانه مربوطه را ضبط نمی‌کند. این معادل با مشخص کردن یک نام دستگاه یا شاخص خالی است.

گزینه‌ها (Options)

دستگاه AVFoundation از گزینه‌های زیر پشتیبانی می‌کند:

اگر بر روی true تنظیم شود، فهرستی از تمامی دستگاه‌های ورودی موجود شامل تمامی نام‌های دستگاه‌ها و شاخص‌ها نمایش داده می‌شود.
دستگاه ویدیویی را با شاخص آن مشخص می‌کند. هر مقداری را که در نام فایل ورودی مشخص شده باشد نادیده گرفته و بازنویسی می‌کند.
دستگاه صوتی را با شاخص آن مشخص می‌کند. هر مقداری را که در نام فایل ورودی مشخص شده باشد نادیده گرفته و بازنویسی می‌کند.
از دستگاه ویدیو درخواست می‌کند تا از یک فرمت پیکسلی خاص استفاده کند. اگر فرمت مشخص‌شده پشتیبانی نشود، فهرستی از فرمت‌های موجود نمایش داده می‌شود و اولین مورد در این فهرست به جای آن استفاده می‌شود. فرمت‌های پیکسلی موجود عبارتند از: "monob, rgb555be, rgb555le, rgb565be, rgb565le, rgb24, bgr24, 0rgb, bgr0, 0bgr, rgb0,
bgr48be, uyvy422, yuva444p, yuva444p16le, yuv444p, yuv422p16, yuv422p10, yuv444p10,
yuv420p, nv12, yuyv422, gray"
نرخ فریم ضبط را تنظیم می‌کند. پیش‌فرض "ntsc" است که مطابق با نرخ فریم "30000/1001" می‌باشد.
اندازه فریم تصویر را تنظیم می‌کند.
اشاره‌گر ماوس را ضبط می‌کند. مقدار پیش‌فرض 0 است.
کلیک‌های ماوس روی صفحه را ضبط می‌کند. مقدار پیش‌فرض 0 است.
داده‌های خام دستگاه را ضبط می‌کند. مقدار پیش‌فرض 0 است. استفاده از این گزینه ممکن است منجر به دریافت داده‌های لایه زیرین ارائه‌شده به فریم‌ورک AVFoundation شود. برای مثال، برای دستگاه‌های تسهیم‌شده (muxed) که داده‌های خام DV را به فریم‌ورک ارسال می‌کنند (مانند دوربین‌های ویدیویی مبتنی بر نوار)، تنظیم این گزینه روی false منجر به دریافت فریم‌های استخراج‌شده ویدیویی ضبط‌شده فقط در فرمت پیکسلی تعیین‌شده می‌شود. تنظیم این گزینه روی true منجر به دریافت دست‌نخورده استریم خام DV خواهد شد.

مثال‌ها (Examples)

  • چاپ فهرست دستگاه‌های پشتیبانی‌شده توسط AVFoundation و خروج:
    $ ffmpeg -f avfoundation -list_devices true -i ""
  • ضبط ویدیو از دستگاه ویدیویی 0 و صدا از دستگاه صوتی 0 در out.avi:
    $ ffmpeg -f avfoundation -i "0:0" out.avi
  • ضبط ویدیو از دستگاه ویدیویی 2 و صدا از دستگاه صوتی 1 در out.avi:
    $ ffmpeg -f avfoundation -video_device_index 2 -i ":1" out.avi
  • ضبط ویدیو از دستگاه ویدیویی پیش‌فرض سیستم با استفاده از فرمت پیکسلی bgr0 و بدون ضبط هیچ صدایی در out.avi:
    $ ffmpeg -f avfoundation -pixel_format bgr0 -i "default:none" out.avi
  • ضبط داده‌های خام DV از یک دستگاه ورودی مناسب و نوشتن خروجی در out.dv:
    $ ffmpeg -f avfoundation -capture_raw_data true -i "zr100:none" out.dv

دستگاه ورودی decklink قابلیت‌های ضبط را برای دستگاه‌های Blackmagic DeckLink فراهم می‌کند.

برای فعال‌سازی این دستگاه ورودی، به Blackmagic DeckLink SDK نیاز دارید و باید پیکربندی را با مقادیر مناسب "--extra-cflags" و "--extra-ldflags" انجام دهید. در ویندوز، باید فایل‌های IDL را با widl پردازش و اجرا کنید.

دستگاه DeckLink در مورد فرمت‌هایی که پشتیبانی می‌کند بسیار دقیق و سخت‌گیر است. فرمت پیکسلی ورودی را می‌توان با raw_format تعیین کرد. نرخ فریم و اندازه تصویر باید برای دستگاه شما با -list_formats 1 تعیین شود. نرخ نمونه‌برداری صدا همیشه ۴۸ کیلوهرتز (48 kHz) است و تعداد کانال‌ها می‌تواند ۲، ۸ یا ۱۶ باشد. توجه داشته باشید که تمام کانال‌های صوتی در یک ترک صوتی واحد تجمیع می‌شوند.

گزینه‌ها (Options)

اگر بر روی true تنظیم شود، فهرستی از دستگاه‌ها را چاپ کرده و خارج می‌شود. مقدار پیش‌فرض false است. این گزینه منسوخ شده است، لطفاً از گزینه "-sources" در ffmpeg برای فهرست کردن دستگاه‌های ورودی موجود استفاده کنید.
اگر بر روی true تنظیم شود، فهرستی از فرمت‌های پشتیبانی‌شده را چاپ کرده و خارج می‌شود. مقدار پیش‌فرض false است.
فرمت ویدیوی ورودی را بر روی فرمت ارائه‌شده توسط FourCC تنظیم می‌کند. برای مشاهده مقادیر پشتیبانی‌شده دستگاه(های) خود از list_formats استفاده کنید. توجه داشته باشید که یک FourCC به صورت 'pal ' وجود دارد که می‌تواند به صورت pal (۳ حرفی) نیز استفاده شود. رفتار پیش‌فرض، تشخیص خودکار فرمت ویدیوی ورودی است، در صورتی که سخت‌افزار از آن پشتیبانی کند.
فرمت پیکسلی ویدیوی ضبط‌شده را تعیین می‌کند. مقادیر مجاز عبارتند از:
این مقدار پیش‌فرض است که در صورت استفاده از تشخیص خودکار فرمت به معنای 8-bit YUV 422 یا 8-bit ARGB است، و در غیر این صورت 8-bit YUV 422 خواهد بود.
فرمت 8-bit YUV 422.
فرمت 10-bit YUV 422.
فرمت 8-bit RGB.
فرمت 8-bit RGB.
فرمت 10-bit RGB.
اگر روی مقداری غیر از صفر تنظیم شود، یک جریان تله‌تکست اضافی از داده‌های کمکی عمودی ضبط می‌شود. هر دو منبع SD PAL (576i) و HD (1080i یا 1080p) پشتیبانی می‌شوند. در مورد منابع HD، بسته‌های OP47 رمزگشایی می‌شوند.

این گزینه یک بیت‌ماسک (bitmask) از خطوط SD PAL VBI ضبط‌شده است، به ویژه خطوط ۶ تا ۲۲ و خطوط ۳۱۸ تا ۳۳۵. خط ۶ بیت کم‌ارزش (LSB) در ماسک است. خطوط انتخابی که حاوی اطلاعات تله‌تکست نباشند نادیده گرفته خواهند شد. می‌توانید از مقدار ثابت ویژه all برای انتخاب تمام خطوط ممکن استفاده کنید، یا از standard برای نادیده گرفتن خطوط ۶، ۳۱۸ و ۳۱۹ که با تمام گیرنده‌ها سازگار نیستند استفاده نمایید.

برای منابع SD، نرم‌افزار ffmpeg باید با "--enable-libzvbi" کامپایل شده باشد. برای منابع HD، در مدل‌های قدیمی‌تر کارت DeckLink (قبل از 4K) باید در حالت ۱۰ بیتی ضبط را انجام دهید.

تعداد کانال‌های صوتی برای ضبط را تعیین می‌کند. باید 2، 8 یا 16 باشد. پیش‌فرض 2 است.
حالت دوطرفه/پروفایل (duplex/profile) دستگاه decklink را تنظیم می‌کند. باید یکی از مقادیر unset، half، full، one_sub_device_full، one_sub_device_half، two_sub_device_full یا four_sub_device_half باشد. پیش‌فرض unset است.

نکته: در DeckLink SDK 11.0 ویژگی duplex با ویژگی profile جایگزین شده است. برای DeckLink Duo 2 و DeckLink Quad 2، یک پروفایل بین هر ۲ زیردستگاه (sub-device) که از کانکتورهای مشابه استفاده می‌کنند به اشتراک گذاشته می‌شود. برای DeckLink 8K Pro، یک پروفایل بین تمام ۴ زیردستگاه به اشتراک گذاشته می‌شود؛ بنابراین DeckLink 8K Pro از چهار پروفایل پشتیبانی می‌کند.

حالت‌های معتبر پروفایل برای DeckLink 8K Pro (با DeckLink SDK >= 11.0): one_sub_device_full, one_sub_device_half, two_sub_device_full, four_sub_device_half

حالت‌های معتبر پروفایل برای DeckLink Quad 2 و DeckLink Duo 2: half, full

نوع کد زمانی (timecode) برای درج در متادیتای فریم و استریم ویدیو. باید یکی از مقادیر none، rp188vitc، rp188vitc2، rp188ltc، rp188hfr، rp188any، vitc، vitc2، یا serial باشد. پیش‌فرض none (عدم درج) است.

به منظور پشتیبانی مناسب از کدهای زمانی 50/60 فریم بر ثانیه، ترتیب انواع کدهای زمانی استعلام‌شده برای rp188any به صورت HFR، VITC1، VITC2 و LTC برای محتوای بیشتر از ۳۰ فریم بر ثانیه است. توجه داشته باشید که این ترتیب با ترتیبی که API دک‌لینک استفاده می‌کند (شامل HFR، VITC1، LTC و VITC2) کمی متفاوت است.

منبع ورودی ویدیو را تنظیم می‌کند. باید یکی از مقادیر unset، sdi، hdmi، optical_sdi، component، composite یا s_video باشد. پیش‌فرض unset است.
منبع ورودی صدا را تنظیم می‌کند. باید یکی از مقادیر unset، embedded، aes_ebu، analog، analog_xlr، analog_rca یا microphone باشد. پیش‌فرض unset است.
منبع برچسب زمانی (timestamp) بسته‌های ویدیویی را تنظیم می‌کند. باید یکی از مقادیر video، audio، reference، wallclock یا abs_wallclock باشد. پیش‌فرض video است.
منبع برچسب زمانی (timestamp) بسته‌های صوتی را تنظیم می‌کند. باید یکی از مقادیر video، audio، reference، wallclock یا abs_wallclock باشد. پیش‌فرض audio است.
اگر بر روی true تنظیم شود، در صورت قطع سیگنال نوار رنگی (color bars) رسم می‌شود. پیش‌فرض true است. این گزینه منسوخ شده است، لطفاً از گزینه "signal_loss_action" استفاده کنید.
عملی که در صورت قطع سیگنال باید انجام شود را تعیین می‌کند. یکی از مقادیر زیر را می‌پذیرد:
1, none
در صورت قطع سیگنال هیچ کاری انجام ندهد. این معمولاً منجر به فریم‌های سیاه می‌شود.
2, bars
در صورت قطع سیگنال نوارهای رنگی رسم کند. فقط برای سیگنال‌های ورودی ۸ بیتی پشتیبانی می‌شود.
3, repeat
در صورت قطع سیگنال آخرین فریم ویدیو را تکرار کند.

پیش‌فرض bars است.

حداکثر اندازه بافر ورودی را بر حسب بایت تنظیم می‌کند. اگر مقدار بافر به این حد برسد، فریم‌های ورودی دور ریخته (drop) خواهند شد. پیش‌فرض 1073741824 است.
عمق بیت نمونه‌های صوتی را تنظیم می‌کند. باید 16 یا 32 باشد. پیش‌فرض 16 است.
اگر بر روی true تنظیم شود، برچسب‌های زمانی همان‌طور که هستند بدون حذف آفست اولیه به جلو هدایت می‌شوند. پیش‌فرض false است.
تراز زمان شروع ضبط بر حسب ثانیه. اگر روی مقداری غیر از صفر تنظیم شود، فریم‌های ورودی تا زمانی که برچسب زمانی سیستم با مقدار پیکربندی‌شده تراز شود، دور ریخته می‌شوند. اختلاف تراز تا حداکثر مدت‌زمان یک فریم تحمل می‌شود. این گزینه برای حفظ همگام‌سازی ورودی بین N دستگاه سخت‌افزاری مختلف که برای افزونگی «N-way» مستقر شده‌اند مفید است. زمان سیستم دستگاه‌های سخت‌افزاری مختلف باید قبل از استفاده از این گزینه با پروتکل‌هایی مانند NTP یا PTP همگام‌سازی شود. توجه داشته باشید که این روش کاملاً بدون خطا و تضمین‌شده نیست. در برخی موارد مرزی، ممکن است همگام‌سازی ورودی به دلیل نوسانات زمان‌بندی ریسه‌ها (thread scheduling jitters) در سیستم‌عامل اتفاق نیفتد؛ یا همگام‌سازی به اندازه ۱ فریم یا در موارد نادرتر به اندازه timestamp_align ثانیه دچار خطا شود. پیش‌فرض 0 است.
فریم‌ها را تا زمانی که فریمی با کد زمانی (timecode) دریافت شود دور می‌ریزد. گاهی اوقات کد زمانی سریال همراه با اولین فریم ورودی دریافت نمی‌شود. اگر چنین اتفاقی بیفتد، کد زمانی ذخیره‌شده استریم نادرست خواهد بود. اگر این گزینه بر روی true تنظیم شود، فریم‌های ورودی تا زمان دریافت فریمی با کد زمانی دور ریخته می‌شوند. گزینه timecode_format باید مشخص شود. پیش‌فرض false است.
اگر بر روی true تنظیم شود، داده‌های KLV را از VANC استخراج کرده و بسته‌های KLV را در خروجی قرار می‌دهد. بسته‌های KLV VANC بر اساس فیلدهای MID و PSC به هم متصل شده و در یک بسته واحد KLV تجمیع می‌شوند. پیش‌فرض false است.

مثال‌ها (Examples)

  • فهرست کردن دستگاه‌های ورودی:
    ffmpeg -sources decklink
  • فهرست کردن فرمت‌های پشتیبانی‌شده:
    ffmpeg -f decklink -list_formats 1 -i 'Intensity Pro'
  • ضبط کلیپ ویدیویی در 1080i50:
    ffmpeg -format_code Hi50 -f decklink -i 'Intensity Pro' -c:a copy -c:v copy output.avi
  • ضبط کلیپ ویدیویی در 1080i50 با عمق 10 بیت:
    ffmpeg -raw_format yuv422p10 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
  • ضبط کلیپ ویدیویی در 1080i50 با ۱۶ کانال صوتی:
    ffmpeg -channels 16 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi

دستگاه ورودی DirectShow در ویندوز.

پشتیبانی از DirectShow زمانی فعال می‌شود که FFmpeg با پروژه mingw-w64 ساخته (کامپایل) شده باشد. در حال حاضر تنها از دستگاه‌های صوتی و ویدیویی پشتیبانی می‌شود.

می‌توان چندین دستگاه را به عنوان ورودی‌های مجزا باز کرد، اما همچنین می‌توان آن‌ها را روی یک ورودی مشترک باز نمود که این کار هماهنگی زمانی (همگام‌سازی) میان آن‌ها را بهبود می‌بخشد.

نام ورودی باید در قالب زیر باشد:

<TYPE>=<NAME>[:<TYPE>=<NAME>]

که در آن TYPE می‌تواند audio یا video باشد، و NAME نام دستگاه یا نام جایگزین آن است.

گزینه‌ها (Options)

اگر هیچ گزینه‌ای مشخص نشود، از مقادیر پیش‌فرض دستگاه استفاده می‌شود. اگر دستگاه از گزینه‌های درخواست‌شده پشتیبانی نکند، باز کردن آن با خطا مواجه خواهد شد.

تنظیم اندازه تصویر (ابعاد) در ویدیوی ضبط‌شده.
تنظیم نرخ فریم در ویدیوی ضبط‌شده.
تنظیم نرخ نمونه‌برداری (بر حسب هرتز) برای صدای ضبط‌شده.
تنظیم اندازه هر نمونه (بر حسب بیت) برای صدای ضبط‌شده.
تنظیم تعداد کانال‌های صوتی در صدای ضبط‌شده.
در صورت تنظیم بر روی true، فهرستی از دستگاه‌ها را چاپ کرده و خارج می‌شود.
در صورت تنظیم بر روی true، فهرستی از گزینه‌های دستگاه انتخاب‌شده را چاپ کرده و خارج می‌شود.
شماره دستگاه ویدیویی برای دستگاه‌هایی با نام یکسان (از 0 شروع می‌شود و پیش‌فرض آن 0 است).
شماره دستگاه صوتی برای دستگاه‌هایی با نام یکسان (از 0 شروع می‌شود و پیش‌فرض آن 0 است).
انتخاب قالب پیکسلی (pixel format) مورد استفاده توسط DirectShow. این گزینه تنها زمانی قابل تنظیم است که کدک ویدیویی تعیین نشده باشد یا بر روی rawvideo تنظیم شده باشد.
تنظیم اندازه بافر دستگاه صوتی بر حسب میلی‌ثانیه (که بسته به دستگاه می‌تواند مستقیماً بر روی تأخیر اثر بگذارد). به طور پیش‌فرض از اندازه بافر پیش‌فرض دستگاه صوتی استفاده می‌شود (معمولاً مضربی از ۵۰۰ میلی‌ثانیه). تنظیم بیش از حد پایین این مقدار می‌تواند کارایی را کاهش دهد. همچنین ببینید: http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx
انتخاب پین ضبط ویدیو بر اساس نام یا نام جایگزین.
انتخاب پین ضبط صدا بر اساس نام یا نام جایگزین.
انتخاب شماره پین ورودی ویدیو برای دستگاه کراس‌بار (crossbar). این پین به پین خروجی دیکدر ویدیوی دستگاه کراس‌بار هدایت می‌شود. توجه داشته باشید که تغییر این مقدار می‌تواند بر اجراهای بعدی نیز تأثیر بگذارد (یک مقدار پیش‌فرض جدید تعیین می‌کند) تا زمانی که سیستم راه‌اندازی مجدد شود.
انتخاب شماره پین ورودی صوتی برای دستگاه کراس‌بار (crossbar). این پین به پین خروجی دیکدر صوتی دستگاه کراس‌بار هدایت می‌شود. توجه داشته باشید که تغییر این مقدار می‌تواند بر اجراهای بعدی نیز تأثیر بگذارد (یک مقدار پیش‌فرض جدید تعیین می‌کند) تا زمانی که سیستم راه‌اندازی مجدد شود.
در صورت تنظیم بر روی true، پیش از آغاز ضبط، یک پنجره گفتگو به کاربر نمایش داده می‌شود تا بتواند ویژگی‌ها و پیکربندی‌های فیلتر ویدیو را به طور دستی تغییر دهد. توجه داشته باشید که برای دستگاه‌های کراس‌بار، گاهی تنظیم مقادیر در این پنجره برای جابه‌جایی میان نرخ‌های فریم ورودی PAL (۲۵ فریم بر ثانیه) و NTSC (۲۹٫۹۷ فریم بر ثانیه)، اندازه‌ها، اینترلیس (درهم‌بافته) و غیره لازم است. تغییر این مقادیر می‌تواند نرخ‌های روبش/فریم متفاوتی را فعال کرده و از ایجاد خطوط سبز در پایین تصویر، سوسو زدن خطوط پویش و غیره جلوگیری کند. توجه داشته باشید که در برخی دستگاه‌ها، تغییر این مشخصه‌ها می‌تواند تا زمان راه‌اندازی مجدد سیستم، بر اجراهای آینده نیز اثر بگذارد (مقادیر پیش‌فرض جدیدی ثبت می‌کند).
در صورت تنظیم بر روی true، پیش از آغاز ضبط، یک پنجره گفتگو به کاربر نمایش داده می‌شود تا بتواند ویژگی‌ها و پیکربندی‌های فیلتر صوتی را به طور دستی تغییر دهد.
در صورت تنظیم بر روی true، پیش از آغاز ضبط هنگام باز کردن یک دستگاه ویدیویی، یک پنجره گفتگو به کاربر نمایش داده می‌شود تا بتواند مسیردهی پین‌های کراس‌بار را به طور دستی تغییر دهد.
در صورت تنظیم بر روی true، پیش از آغاز ضبط هنگام باز کردن یک دستگاه صوتی، یک پنجره گفتگو به کاربر نمایش داده می‌شود تا بتواند مسیردهی پین‌های کراس‌بار را به طور دستی تغییر دهد.
در صورت تنظیم بر روی true، پیش از آغاز ضبط، یک پنجره گفتگو به کاربر نمایش داده می‌شود تا بتواند کانال‌ها و فرکانس‌های تلویزیون را به طور دستی تغییر دهد.
در صورت تنظیم بر روی true، پیش از آغاز ضبط، یک پنجره گفتگو به کاربر نمایش داده می‌شود تا بتواند صدای تلویزیون (مانند مونو در برابر استریو، زبان A، B یا C) را به طور دستی تغییر دهد.
بارگذاری یک دستگاه فیلتر ضبط صدا از فایل به جای جستجوی آن با نام. اگر فیلتر از سریال‌سازی ویژگی‌های خود پشتیبانی کند، ممکن است پارامترهای اضافی را نیز بارگذاری نماید. برای استفاده از این گزینه، یک منبع ضبط صدا باید مشخص شود، اما می‌تواند هر چیزی باشد، حتی یک منبع ساختگی (fake).
ذخیره دستگاه فیلتر ضبط صدای جاری و پارامترهای آن (در صورت پشتیبانی فیلتر) در یک فایل. اگر فایلی با همین نام وجود داشته باشد، بازنویسی خواهد شد.
بارگذاری یک دستگاه فیلتر ضبط ویدیو از فایل به جای جستجوی آن با نام. اگر فیلتر از سریال‌سازی ویژگی‌های خود پشتیبانی کند، ممکن است پارامترهای اضافی را نیز بارگذاری نماید. برای استفاده از این گزینه، یک منبع ضبط ویدیو باید مشخص شود، اما می‌تواند هر چیزی باشد، حتی یک منبع ساختگی (fake).
ذخیره دستگاه فیلتر ضبط ویدیوی جاری و پارامترهای آن (در صورت پشتیبانی فیلتر) در یک فایل. اگر فایلی با همین نام وجود داشته باشد، بازنویسی خواهد شد.
در صورت تنظیم بر روی false، برچسب زمانی فریم‌های ویدیو به جای برچسب زمانی ارائه‌شده توسط دستگاه ضبط، از ساعت دیواری سیستم (wallclock) استخراج می‌شود. این کار امکان دور زدن مشکل دستگاه‌هایی که برچسب زمانی نامعتبر ارائه می‌دهند را فراهم می‌سازد.

مثال‌ها (Examples)

  • چاپ فهرست دستگاه‌های پشتیبانی‌شده توسط DirectShow و خروج:
    $ ffmpeg -list_devices true -f dshow -i dummy
  • باز کردن دستگاه ویدیویی با نام Camera:
    $ ffmpeg -f dshow -i video="Camera"
  • باز کردن دومین دستگاه ویدیویی با نام Camera:
    $ ffmpeg -f dshow -video_device_number 1 -i video="Camera"
  • باز کردن همزمان دستگاه ویدیویی Camera و دستگاه صوتی Microphone:
    $ ffmpeg -f dshow -i video="Camera":audio="Microphone"
  • چاپ فهرست گزینه‌های پشتیبانی‌شده در دستگاه انتخاب‌شده و خروج:
    $ ffmpeg -list_options true -f dshow -i video="Camera"
  • مشخص کردن نام پین‌ها برای ضبط بر اساس نام یا نام جایگزین، همراه با تعیین نام جایگزین دستگاه:
    $ ffmpeg -f dshow -audio_pin_name "Audio Out" -video_pin_name 2 -i video=video="@device_pnp_\\?\pci#ven_1a0a&dev_6200&subsys_62021461&rev_01#4&e2c7dd6&0&00e1#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\{ca465100-deb0-4d59-818f-8c477184adf6}":audio="Microphone"
  • پیکربندی یک دستگاه کراس‌بار، تعیین پین‌های کراس‌بار و فراهم کردن امکان تنظیم ویژگی‌های ضبط ویدیو توسط کاربر هنگام راه‌اندازی:
    $ ffmpeg -f dshow -show_video_device_dialog true -crossbar_video_input_pin_number 0
         -crossbar_audio_input_pin_number 3 -i video="AVerMedia BDA Analog Capture":audio="AVerMedia BDA Analog Capture"

دستگاه ورودی فریم‌بافر لینوکس (Linux framebuffer).

فریم‌بافر لینوکس (Linux framebuffer) یک لایه انتزاعی مستقل از سخت‌افزار گرافیکی برای نمایش گرافیک بر روی نمایشگر رایانه، به ویژه در کنسول متنی است. این دستگاه از طریق یک گره فایل دستگاه، معمولاً /dev/fb0 در دسترس است.

برای اطلاعات دقیق‌تر، فایل Documentation/fb/framebuffer.txt موجود در درخت کد منبع لینوکس را بخوانید.

همچنین ببینید: http://linux-fbdev.sourceforge.net و fbset(1).

برای ضبط از دستگاه فریم‌بافر /dev/fb0 با ffmpeg:

ffmpeg -f fbdev -framerate 10 -i /dev/fb0 out.avi

می‌توانید با دستور زیر یک تک‌تصویر (اسکرین‌شات) بگیرید:

ffmpeg -f fbdev -framerate 1 -i /dev/fb0 -frames:v 1 screenshot.jpeg

گزینه‌ها (Options)

تنظیم نرخ فریم. مقدار پیش‌فرض 25 است.

دستگاه ضبط صفحه نمایش مبتنی بر Win32 GDI.

این دستگاه امکان تصویربرداری و ضبط ناحیه‌ای از صفحه نمایش در ویندوز را فراهم می‌کند.

در میان گزینه‌های موجود برای نام فایل‌های ورودی، المان‌های زیر قرار دارند:

desktop

یا

title=<window_title>

یا

hwnd=<window_hwnd>

گزینه نخست، کل میزکار (desktop) یا ناحیه ثابتی از آن را ضبط می‌کند. گزینه‌های دوم و سوم، صرف‌نظر از موقعیت پنجره روی صفحه، محتوای یک پنجره مشخص را ضبط می‌کنند.

برای نمونه، جهت ضبط کل میزکار با استفاده از ffmpeg:

ffmpeg -f gdigrab -framerate 6 -i desktop out.mpg

ضبط ناحیه‌ای به ابعاد 640x480 در موقعیت "10,20":

ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg

ضبط محتوای پنجره‌ای با عنوان "Calculator":

ffmpeg -f gdigrab -framerate 6 -i title=Calculator out.mpg

گزینه‌ها (Options)

تعیین رسم شدن یا نشدن مکان‌نمای موش‌واره (ماوس). برای عدم رسم مکان‌نما از مقدار 0 استفاده کنید. مقدار پیش‌فرض 1 است.
تنظیم نرخ فریم ضبط. مقدار پیش‌فرض "ntsc" است که معادل نرخ فریم "30000/1001" می‌باشد.
نمایش ناحیه ضبط‌شده بر روی صفحه نمایش.

اگر show_region با مقدار 1 مشخص شود، کادر ناحیه ضبط روی صفحه مشخص خواهد شد. با این گزینه، در صورتی که تنها بخشی از صفحه ضبط شود، به آسانی می‌توان محدوده تحت ضبط را مشاهده کرد.

توجه داشته باشید که show_region با ضبط محتوای یک پنجره تکی ناسازگار است.

برای نمونه:

ffmpeg -f gdigrab -show_region 1 -framerate 6 -video_size cif -offset_x 10 -offset_y 20 -i desktop out.mpg
تنظیم ابعاد فریم ویدیو. در صورت انتخاب desktop، حالت پیش‌فرض ضبط تمام‌صفحه است و در صورت تعیین title=window_title، حالت پیش‌فرض ضبط در اندازه کامل پنجره خواهد بود.
هنگام ضبط یک ناحیه با video_size، فاصله از لبه سمت چپ صفحه یا میزکار را مشخص می‌کند.

توجه داشته باشید که محاسبه آفست از گوشه بالا سمت چپ نمایشگر اصلی (primary monitor) در ویندوز سنجیده می‌شود. اگر مانیتوری در سمت چپ نمایشگر اصلی دارید، برای انتقال ناحیه به آن نمایشگر باید از مقدار منفی برای offset_x استفاده کنید.

هنگام ضبط یک ناحیه با video_size، فاصله از لبه بالایی صفحه یا میزکار را مشخص می‌کند.

توجه داشته باشید که محاسبه آفست از گوشه بالا سمت چپ نمایشگر اصلی در ویندوز سنجیده می‌شود. اگر مانیتوری در بالای نمایشگر اصلی دارید، برای انتقال ناحیه به آن نمایشگر باید از مقدار منفی برای offset_y استفاده کنید.

دستگاه ورودی FireWire DV/HDV با استفاده از libiec61883.

برای فعال‌سازی این دستگاه ورودی، لازم است بسته‌های libiec61883، libraw1394 و libavc1394 بر روی سیستم شما نصب باشند. از گزینه پیکربندی "--enable-libiec61883" جهت کامپایل همراه با فعال بودن این دستگاه استفاده کنید.

دستگاه ضبط iec61883 از دریافت و ضبط تصویر از یک دستگاه ویدیویی متصل از طریق IEEE1394 (FireWire) با استفاده از libiec61883 و پشته جدید FireWire لینوکس (juju) پشتیبانی می‌کند. این روش از نسخه 2.6.37 هسته لینوکس به بعد (پس از حذف پشته قدیمی FireWire) روش ورودی پیش‌فرض DV/HDV است.

درگاه FireWire مورد نظر را به عنوان فایل ورودی تعیین کنید، یا از "auto" برای انتخاب نخستین درگاه متصل استفاده نمایید.

گزینه‌ها (Options)

نادیده گرفتن تشخیص خودکار DV/HDV. این گزینه تنها زمانی باید استفاده شود که تشخیص خودکار کار نکند یا استفاده از نوع متفاوتی از دستگاه باید ممنوع گردد. تلقی کردن دستگاه DV به عنوان HDV (یا بالعکس) کار نخواهد کرد و منجر به رفتار نامشخص می‌شود. مقادیر auto، dv و hdv پشتیبانی می‌شوند.
تنظیم حداکثر اندازه بافر برای داده‌های ورودی، بر حسب فریم. برای DV، این یک مقدار دقیق است. برای HDV، این مقدار دقیقاً بر حسب فریم نیست، زیرا HDV اندازه فریم ثابتی ندارد.
انتخاب دستگاه ضبط با تعیین شناسه سراسری (GUID) آن. عملیات ضبط تنها از دستگاه تعیین‌شده انجام خواهد شد و در صورتی که دستگاهی با GUID مشخص‌شده یافت نشود با خطا مواجه می‌شود. این گزینه در شرایطی که چندین دستگاه به طور همزمان متصل هستند، برای انتخاب ورودی کاربرد دارد. برای پیدا کردن GUIDها، مسیر /sys/bus/firewire/devices را بررسی کنید.

مثال‌ها (Examples)

  • دریافت و نمایش ورودی یک دستگاه FireWire DV/HDV:
    ffplay -f iec61883 -i auto
  • دریافت و ضبط ورودی یک دستگاه FireWire DV/HDV، با استفاده از بافر بسته‌ای به اندازه ۱۰۰۰۰۰ بسته در صورتی که منبع HDV باشد:
    ffmpeg -f iec61883 -i auto -dvbuffer 100000 out.mpg

دستگاه ورودی JACK.

جهت فعال‌سازی این دستگاه ورودی در هنگام پیکربندی، لازم است libjack بر روی سیستم شما نصب شده باشد.

یک دستگاه ورودی JACK یک یا چند کلاینت قابل‌نوشتن (writable) در سامانه JACK ایجاد می‌کند (به ازای هر کانال صوتی یکی) با نام client_name:input_N، که در آن client_name نام ارائه‌شده توسط برنامه و N شماره شناسایی کانال است. هر کلاینت قابل‌نوشتن داده‌های دریافت‌شده را به دستگاه ورودی FFmpeg ارسال می‌کند.

پس از ایجاد یک یا چند کلاینت خواندنی (readable) در JACK، باید آن‌ها را به یک یا چند کلاینت قابل‌نوشتن JACK متصل نمایید.

جهت اتصال یا قطع ارتباط کلاینت‌های JACK می‌توانید از برنامه‌های jack_connect و jack_disconnect استفاده کنید، یا این کار را از طریق یک رابط گرافیکی مانند qjackctl انجام دهید.

برای فهرست کردن کلاینت‌های JACK و ویژگی‌های آن‌ها می‌توانید دستور jack_lsp را اجرا کنید.

در ادامه مثالی آورده شده است که نحوه ضبط از یک کلاینت خواندنی JACK با ffmpeg را نشان می‌دهد:

# Create a JACK writable client with name "ffmpeg".
$ ffmpeg -f jack -i ffmpeg -y out.wav

# Start the sample jack_metro readable client.
$ jack_metro -b 120 -d 0.2 -f 4000

# List the current JACK clients.
$ jack_lsp -c
system:capture_1
system:capture_2
system:playback_1
system:playback_2
ffmpeg:input_1
metro:120_bpm

# Connect metro to the ffmpeg writable client.
$ jack_connect metro:120_bpm ffmpeg:input_1

برای اطلاعات بیشتر بخوانید: http://jackaudio.org

گزینه‌ها (Options)

تنظیم تعداد کانال‌ها. مقدار پیش‌فرض 2 است.

دستگاه ورودی ویدیویی KMS.

فریم‌بافر خروجی اسکن (scanout framebuffer) مربوط به یک CRTC یا پلین (plane) مشخص در KMS را به عنوان یک شیء DRM که قابل ارسال به دیگر توابع سخت‌افزاری است، ضبط می‌کند.

برای اجرا نیازمند دسترسی DRM master یا مجوز CAP_SYS_ADMIN است.

اگر مفهوم این موارد را به درستی متوجه نمی‌شوید، احتمالاً به این ابزار نیازی ندارید. به جای آن به x11grab نگاهی بیندازید.

گزینه‌ها (Options)

دستگاه DRM برای انجام ضبط. مقدار پیش‌فرض /dev/dri/card0 است.
قالب پیکسلی (pixel format) فریم‌بافر. اگر از لینوکس 5.7 یا جدیدتر استفاده می‌کنید، این مورد می‌تواند به صورت خودکار تشخیص داده شود، اما برای نسخه‌های قدیمی‌تر باید دستی تعیین گردد. مقدار پیش‌فرض bgr0 است که رایج‌ترین قالب مورد استفاده توسط کنسول لینوکس و کارساز Xorg X محسوب می‌شود.
تغییردهنده فرمت (format modifier) برای علامت‌گذاری روی فریم‌های خروجی. این امر برای وارد کردن صحیح به برخی APIها ضروری است. در لینوکس 5.7 به بعد می‌تواند به طور خودکار تشخیص داده شود، اما در نسخه‌های قبلی در صورت نیاز باید به صراحت تعیین گردد. برای مقادیر ممکن به مستندات libdrm مراجعه کنید.
شناسه KMS CRTC برای تعریف منبع ضبط. نخستین پلین (plane) فعال بر روی CRTC تعیین‌شده مورد استفاده قرار خواهد گرفت.
شناسه KMS plane برای تعیین منبع ضبط. در صورتی که هیچ‌یک از crtc_id یا plane_id مشخص نشده باشند، به صورت پیش‌فرض نخستین پلین فعال یافت‌شده در نظر گرفته می‌شود.
نرخ فریم ضبط. این مقدار با تعویض صفحه (page flipping) یا تغییرات فریم‌بافر همگام نیست - فقط فاصله‌ای را تعیین می‌کند که در آن فریم‌بافر نمونه‌برداری می‌شود. نمونه‌برداری با سرعتی بیشتر از نرخ به‌روزرسانی فریم‌بافر، فریم‌های مستقلی با محتوای یکسان تولید خواهد کرد. مقدار پیش‌فرض 30 است.

مثال‌ها (Examples)

  • ضبط از نخستین پلین فعال، انتقال نتیجه به فریم‌های معمولی و انکود کردن. این کار تنها در صورتی عمل می‌کند که فریم‌بافر هم خطی (linear) و هم قابل نگاشت (mappable) باشد - در غیر این صورت ممکن است خروجی درهم‌ریخته شود یا دانلود و استخراج ناموفق باشد:
    ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4
  • ضبط از CRTC با شناسه 42 با نرخ 60 فریم بر ثانیه، نگاشت نتیجه به VAAPI، تبدیل به NV12 و انکود با فرمت H.264:
    ffmpeg -crtc_id 42 -framerate 60 -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,scale_vaapi=w=1920:h=1080:format=nv12' -c:v h264_vaapi output.mp4
  • برای ضبط تنها بخشی از یک پلین، خروجی را می‌توان برش (crop) داد - از این روش می‌توان برای ضبط یک پنجره تکی استفاده کرد، مشروط بر اینکه موقعیت مطلق و ابعاد آن مشخص باشد. برای مثال، جهت ضبط و انکود یک‌چهارم میانی یک پلین با ابعاد 1920x1080:
    ffmpeg -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,crop=960:540:480:270,scale_vaapi=960:540:nv12' -c:v h264_vaapi output.mp4

دستگاه مجازی ورودی Libavfilter.

این دستگاه ورودی، داده‌ها را از درگاه‌های خروجی باز (open output pads) یک گراف پالایه (filtergraph) در libavfilter می‌خواند.

به ازای هر خروجی باز گراف پالایه، دستگاه ورودی یک جریان متناظر ایجاد می‌کند که به خروجی تولیدشده نگاشت می‌شود. گراف پالایه از طریق گزینه graph مشخص می‌گردد.

گزینه‌ها (Options)

گراف پالایه را جهت استفاده به عنوان ورودی مشخص می‌کند. هر خروجی باز ویدیو باید با یک رشته یکتا به فرم "outN" برچسب‌گذاری شود، که در آن N عددی است که از 0 شروع می‌شود و متناظر با جریان ورودی نگاشت‌شده تولیدی توسط دستگاه است. اولین خروجی بدون برچسب به طور خودکار به برچسب "out0" اختصاص می‌یابد، اما سایر خروجی‌ها باید به صورت صریح مشخص شوند.

پسوند "+subcc" را می‌توان به برچسب خروجی الصاق کرد تا یک جریان اضافی شامل بسته‌های زیرنویس مخفی (closed captions) متصل به آن خروجی ایجاد شود (آزمایشی؛ در حال حاضر فقط برای EIA-608 / CEA-708). جریان‌های subcc پس از تمام جریان‌های عادی و به ترتیب جریان متناظر ایجاد می‌شوند. به عنوان مثال، اگر "out19+subcc" و "out7+subcc" تا "out42" وجود داشته باشد، جریان شماره ۴۳ زیرنویس مخفی برای جریان شماره ۷ و جریان شماره ۴۴ زیرنویس مخفی برای جریان شماره ۱۹ خواهد بود.

در صورت عدم تعیین، مقدار پیش‌فرض نام فایلی خواهد بود که برای دستگاه ورودی مشخص شده است.

نام فایل گراف پالایه را برای خواندن و ارسال به سایر فیلترها تعیین می‌کند. نحو گراف پالایه همانند مورد مشخص‌شده توسط گزینه graph است.
تخلیه ساختار گراف در خروجی استاندارد خطا (stderr).

مثال‌ها (Examples)

  • ایجاد یک جریان ویدیویی رنگی و پخش آن با ffplay:
    ffplay -f lavfi -graph "color=c=pink [out0]" dummy
  • مشابه مثال قبل، اما استفاده از نام فایل برای تعیین توصیف گراف، و حذف برچسب "out0":
    ffplay -f lavfi color=c=pink
  • ایجاد سه منبع ویدیویی آزمایشی فیلترشده مختلف و پخش آن‌ها:
    ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3
  • خواندن یک جریان صوتی از یک فایل با استفاده از منبع amovie و پخش آن با ffplay:
    ffplay -f lavfi "amovie=test.wav"
  • خواندن یک جریان صوتی و یک جریان تصویری و پخش آن با ffplay:
    ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]"
  • تخلیه فریم‌های رمزگشایی‌شده در قالب تصاویر و زیرنویس مخفی در یک نسخه پشتیبان RCWT:
    ffmpeg -f lavfi -i "movie=test.ts[out0+subcc]" -map v frame%08d.png -map s -c copy -f rcwt subcc.bin

دستگاه ورودی Audio-CD بر پایه libcdio.

برای فعال‌سازی این دستگاه ورودی در هنگام پیکربندی، باید libcdio بر روی سیستم شما نصب باشد. این امر نیازمند گزینه پیکربندی "--enable-libcdio" است.

این دستگاه امکان پخش و دریافت داده‌ها از دیسک صوتی (Audio-CD) را فراهم می‌کند.

به عنوان مثال، برای کپی کردن کل دیسک Audio-CD در /dev/sr0 با استفاده از ffmpeg، می‌توانید دستور زیر را اجرا کنید:

ffmpeg -f libcdio -i /dev/sr0 cd.wav

گزینه‌ها (Options)

تنظیم سرعت خواندن درایو. مقدار پیش‌فرض 0 است.

سرعت بر حسب واحدهای سرعت CD-ROM مشخص می‌شود. سرعت از طریق تابع "cdio_cddap_speed_set" در libcdio تنظیم می‌گردد. در بسیاری از درایوهای CD-ROM، مشخص کردن یک مقدار بیش از حد بزرگ منجر به استفاده از بیشترین سرعت ممکن خواهد شد.

تنظیم پرچم‌های حالت بازیابی پارانویا (paranoia recovery mode). یکی از مقادیر زیر را می‌پذیرد:

مقدار پیش‌فرض disable است.

برای اطلاعات بیشتر در مورد حالت‌های بازیابی موجود، به مستندات پروژه paranoia مراجعه کنید.

دستگاه ورودی IIDC1394، بر پایه libdc1394 و libraw1394.

نیازمند گزینه پیکربندی "--enable-libdc1394" است.

گزینه‌ها (Options)

تنظیم نرخ فریم. مقدار پیش‌فرض "ntsc" است که متناظر با نرخ فریم "30000/1001" می‌باشد.
انتخاب قالب پیکسل. مقدار پیش‌فرض "uyvy422" است.
تنظیم اندازه تصویر ویدیویی که به صورت یک رشته مانند "640x480" یا "hd720" داده می‌شود. پیش‌فرض "qvga" است.

دستگاه ورودی OpenAL امکان ضبط صدا را بر روی تمامی سیستم‌های دارای پیاده‌سازی فعال OpenAL 1.1 فراهم می‌کند.

برای فعال‌سازی این دستگاه ورودی در طول پیکربندی، باید سرآیندها (headers) و کتابخانه‌های OpenAL روی سیستم شما نصب باشند و باید FFmpeg را با گزینه "--enable-openal" پیکربندی کنید.

سرآیندها و کتابخانه‌های OpenAL باید به عنوان بخشی از پیاده‌سازی OpenAL شما یا به عنوان یک بسته دانلودی جداگانه (یک SDK) ارائه شوند. بسته به نوع نصب، ممکن است لازم باشد پرچم‌های اضافی را از طریق "--extra-cflags" و "--extra-ldflags" مشخص کنید تا سامانه ساخت بتواند سرآیندها و کتابخانه‌های OpenAL را پیدا کند.

فهرستی ناقص از پیاده‌سازی‌های OpenAL در ادامه آمده است:

پیاده‌سازی رسمی ویندوز که شتاب‌دهی سخت‌افزاری را با دستگاه‌های پشتیبانی‌شده و بازگشت به نرم‌افزار فراهم می‌کند. پیوند: http://openal.org.
پیاده‌سازی نرم‌افزاری، چندسکویی و متن‌باز (LGPL). شامل بخش‌های پشتیبان (backends) برای متداول‌ترین رابط‌های برنامه‌نویسی صدا در سیستم‌عامل‌های ویندوز، لینوکس، سولاریس و BSD است. پیوند: http://kcat.strangesoft.net/openal.html.
اوپن‌ای‌ال بخشی از Core Audio، یعنی رابط صوتی رسمی Mac OS X است. پیوند: http://developer.apple.com/technologies/mac/audio-and-video.html.

این دستگاه به کاربر اجازه می‌دهد از طریق دستگاه ورودی صوتی مدیریت‌شده با OpenAL به ضبط داده‌های صوتی بپردازد.

شما باید نام دستگاه مورد نظر برای ضبط را در نام فایل ارائه‌شده مشخص کنید. اگر یک رشته خالی ارائه شود، دستگاه به طور خودکار دستگاه پیش‌فرض را انتخاب خواهد کرد. شما می‌توانید با استفاده از گزینه list_devices فهرست دستگاه‌های پشتیبانی‌شده را دریافت کنید.

گزینه‌ها (Options)

تنظیم تعداد کانال‌ها در صدای ضبط‌شده. در حال حاضر تنها مقادیر 1 (مونو) و 2 (استریو) پشتیبانی می‌شوند. پیش‌فرض 2 است.
تنظیم اندازه نمونه (به بیت) در صدای ضبط‌شده. در حال حاضر تنها مقادیر 8 و 16 پشتیبانی می‌شوند. پیش‌فرض 16 است.
تنظیم نرخ نمونه‌برداری (به هرتز) در صدای ضبط‌شده. پیش‌فرض 44.1k است.
در صورت تنظیم روی true، فهرستی از دستگاه‌ها را چاپ کرده و خارج می‌شود. پیش‌فرض false است.

مثال‌ها (Examples)

چاپ فهرست دستگاه‌های پشتیبانی‌شده OpenAL و خروج:

$ ffmpeg -list_devices true -f openal -i dummy out.ogg

ضبط از دستگاه OpenAL تحت عنوان DR-BT101 via PulseAudio:

$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg

ضبط از دستگاه پیش‌فرض (به رشته خالی '' به عنوان نام فایل توجه کنید):

$ ffmpeg -f openal -i '' out.ogg

ضبط هم‌زمان از دو دستگاه و نوشتن در دو فایل متفاوت در یک دستور ffmpeg واحد:

$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg

توجه: همه پیاده‌سازی‌های OpenAL از ضبط هم‌زمان چندگانه پشتیبانی نمی‌کنند - در صورتی که دستور فوق کار نکرد، آخرین نسخه OpenAL Soft را امتحان کنید.

دستگاه ورودی سامانه صوتی باز (Open Sound System).

نام فایلی که باید به دستگاه ورودی داده شود، گره دستگاه (device node) است که دستگاه ورودی OSS را نمایندگی می‌کند و معمولاً برابر با /dev/dsp تنظیم می‌شود.

به عنوان مثال برای کپچر و ضبط از /dev/dsp با استفاده از ffmpeg از دستور زیر استفاده کنید:

ffmpeg -f oss -i /dev/dsp /tmp/oss.wav

برای کسب اطلاعات بیشتر درباره OSS پیوند زیر را ببینید: http://manuals.opensound.com/usersguide/dsp.html

گزینه‌ها (Options)

تنظیم نرخ نمونه‌برداری به هرتز. پیش‌فرض 48000 است.
تنظیم تعداد کانال‌ها. پیش‌فرض 2 است.

دستگاه ورودی PulseAudio.

برای فعال‌سازی این دستگاه ورودی، باید FFmpeg را با گزینه "--enable-libpulse" پیکربندی کنید.

نام فایلی که باید به دستگاه ورودی ارائه شود یک دستگاه منبع (source device) یا رشته "default" است.

برای مشاهده فهرست دستگاه‌های منبع PulseAudio و ویژگی‌های آن‌ها می‌توانید دستور pactl list sources را اجرا کنید.

اطلاعات بیشتر درباره PulseAudio را می‌توانید در http://www.pulseaudio.org بیابید.

گزینه‌ها (Options)

اتصال به یک سرور خاص PulseAudio که با نشانی IP مشخص می‌شود. در صورت عدم تعیین، از سرور پیش‌فرض استفاده می‌شود.
نام برنامه‌ای را تعیین می‌کند که PulseAudio در زمان نمایش کلاینت‌های فعال نشان خواهد داد؛ مقدار پیش‌فرض رشته "LIBAVFORMAT_IDENT" است.
نام جریانی را تعیین می‌کند که PulseAudio در زمان نمایش جریان‌های فعال نشان خواهد داد؛ مقدار پیش‌فرض "record" است.
تعیین نرخ نمونه‌برداری به هرتز؛ به طور پیش‌فرض 48kHz استفاده می‌شود.
تعیین کانال‌های مورد استفاده؛ به طور پیش‌فرض روی 2 (استریو) تنظیم شده است.
این گزینه هیچ عملی انجام نمی‌دهد و منسوخ شده است.
اندازه به بایت قطعه بافرسازی کمینه در PulseAudio را مشخص می‌کند؛ این مقدار بر میزان تاخیر (latency) صدا اثر می‌گذارد. به طور پیش‌فرض روی ۵۰ میلی‌ثانیه حجم داده تنظیم شده است.
تنظیم مقدار اولیه PTS با استفاده از زمان فعلی ساعت واقعی. مقدار پیش‌فرض 1 است.

مثال‌ها (Examples)

ضبط یک جریان صوتی از دستگاه پیش‌فرض:

ffmpeg -f pulse -i default /tmp/pulse.wav

دستگاه ورودی sndio.

برای فعال‌سازی این دستگاه ورودی در هنگام پیکربندی، باید libsndio بر روی سامانه شما نصب باشد.

نام فایلی که باید به دستگاه ورودی داده شود گره دستگاه است که دستگاه ورودی sndio را نشان می‌دهد و معمولاً روی /dev/audio0 تنظیم می‌گردد.

به عنوان مثال برای دریافت و ضبط از /dev/audio0 با استفاده از ffmpeg از دستور زیر استفاده کنید:

ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav

گزینه‌ها (Options)

تنظیم نرخ نمونه‌برداری به هرتز. پیش‌فرض 48000 است.
تنظیم تعداد کانال‌ها. پیش‌فرض 2 است.

دستگاه ویدیویی ورودی Video4Linux2.

عبارت "v4l2" می‌تواند به عنوان نام مستعار برای "video4linux2" استفاده شود.

اگر FFmpeg با پشتیبانی از v4l-utils ساخته شده باشد (با استفاده از گزینه پیکربندی "--enable-libv4l2")، می‌توان از آن با گزینه دستگاه ورودی "-use_libv4l2" استفاده کرد.

نام دستگاهی که قرار است از آن داده دریافت شود یک گره دستگاه فایلی است؛ معمولاً سامانه‌های لینوکس هنگام اتصال دستگاه (مانند یک وب‌کم USB) به سامانه، چنین گره‌هایی را به طور خودکار ایجاد می‌کنند و نامی از نوع /dev/videoN دارد که در آن N عددی وابسته به دستگاه است.

دستگاه‌های Video4Linux2 معمولاً از مجموعه محدودی از ابعاد عرضxارتفاع و نرخ‌های فریم پشتیبانی می‌کنند. می‌توانید با استفاده از گزینه -list_formats all بررسی کنید کدام موارد برای دستگاه‌های Video4Linux2 پشتیبانی می‌شوند. برخی از دستگاه‌ها، مانند کارت‌های تلویزیون (TV cards)، از یک یا چند استاندارد پشتیبانی می‌کنند. امکان مشاهده فهرست تمام استانداردهای پشتیبانی‌شده با استفاده از -list_standards all وجود دارد.

پایه زمانی (time base) برای برچسب‌های زمانی ۱ میکروثانیه است. بسته به نگارش هسته و پیکربندی، برچسب‌های زمانی ممکن است از ساعت زمان واقعی (مبدأ در مبدأ زمان یونیکس - Unix Epoch) یا ساعت یکنواخت (monotonic clock، با مبدأ معمولاً در زمان بالا آمدن سیستم که تحت تاثیر NTP یا تغییرات دستی ساعت قرار نمی‌گیرد) مشتق شوند. می‌توان از گزینه -timestamps abs یا -ts abs برای اجبار به تبدیل به ساعت زمان واقعی استفاده کرد.

برخی مثال‌های کاربردی استفاده از دستگاه video4linux2 با ffmpeg و ffplay:

  • فهرست کردن قالب‌های پشتیبانی‌شده برای یک دستگاه video4linux2:
    ffplay -f video4linux2 -list_formats all /dev/video0
  • دریافت و نمایش ورودی یک دستگاه video4linux2:
    ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
  • دریافت و ضبط ورودی یک دستگاه video4linux2 با حفظ نرخ فریم و ابعاد تنظیم‌شده قبلی:
    ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg

برای کسب اطلاعات بیشتر در مورد Video4Linux، پیوند http://linuxtv.org را بررسی کنید.

گزینه‌ها (Options)

تنظیم استاندارد. باید نام یک استاندارد پشتیبانی‌شده باشد. برای دریافت فهرستی از استانداردهای پشتیبانی‌شده، از گزینه list_standards استفاده کنید.
تنظیم شماره کانال ورودی. مقدار پیش‌فرض -1 است، به این معنی که از کانال انتخاب‌شده قبلی استفاده می‌شود.
تنظیم اندازه فریم ویدیویی. آرگومان باید یک رشته به فرم WIDTHxHEIGHT یا یک نام اختصاری معتبر برای ابعاد باشد.
انتخاب قالب پیکسل (تنها برای ورودی ویدیوی خام معتبر است).
تنظیم قالب پیکسل ترجیحی (برای ویدیوهای خام) یا نام یک کدک. این گزینه به کاربر اجازه می‌دهد در صورت موجود بودن چند قالب، قالب ورودی مورد نظر را انتخاب کند.
تنظیم نرخ فریم ویدیویی ترجیحی.
فهرست کردن قالب‌های موجود (قالب‌های پیکسل پشتیبانی‌شده، کدک‌ها و ابعاد فریم) و خروج.

مقادیر مجاز عبارتند از:

نمایش تمامی قالب‌های موجود (فشرده و غیرفشرده).
نمایش تنها قالب‌های ویدیوی خام (غیرفشرده).
نمایش تنها قالب‌های فشرده‌شده.
فهرست کردن استانداردهای پشتیبانی‌شده و خروج.

مقادیر مجاز عبارتند از:

نمایش تمامی استانداردهای پشتیبانی‌شده.
تنظیم نوع برچسب‌های زمانی برای فریم‌های ضبط‌شده.

مقادیر مجاز عبارتند از:

استفاده از برچسب‌های زمانی ارائه‌شده توسط هسته سیستم‌عامل.
استفاده از برچسب‌های زمانی مطلق (ساعت واقعی دیوار - wall clock).
اجبار به تبدیل برچسب‌های زمانی یکنواخت (monotonic) به برچسب‌های زمانی مطلق.

مقدار پیش‌فرض "default" است.

استفاده از توابع تبدیل libv4l2 (v4l-utils). پیش‌فرض 0 است.

دستگاه ورودی دریافت تصویر VfW (Video for Windows).

نام فایل ارائه‌شده به عنوان ورودی، شماره درایور کپچر است که از 0 تا 9 تغییر می‌کند. می‌توانید از "list" به عنوان نام فایل برای چاپ فهرست درایورها استفاده کنید. هر نام فایل دیگری به عنوان دستگاه شماره 0 تفسیر خواهد شد.

گزینه‌ها (Options)

تنظیم اندازه فریم ویدیو.
تنظیم نرخ فریم ضبط تصویر. مقدار پیش‌فرض "ntsc" است که متناظر با نرخ فریم "30000/1001" می‌باشد.

دستگاه ورودی ویدیویی X11.

برای فعال‌سازی این دستگاه ورودی در هنگام پیکربندی، باید libxcb روی سامانه شما نصب باشد. این کتابخانه در حین پیکربندی به صورت خودکار شناسایی خواهد شد.

این دستگاه امکان فیلم‌برداری و ضبط ناحیه‌ای از یک نمایشگر X11 را فراهم می‌سازد.

نام فایل ارائه‌شده به عنوان ورودی ساختار زیر را دارد:

[<hostname>]:<display_number>.<screen_number>[+<x_offset>,<y_offset>]

بخش hostname:display_number.screen_number نام نمایشگر X11 صفحه‌ای که باید از آن ضبط شود را مشخص می‌کند. hostname می‌تواند حذف شود و پیش‌فرض آن "localhost" است. متغیر محیطی DISPLAY شامل نام نمایشگر پیش‌فرض است.

بخش‌های x_offset و y_offset فاصله‌ها (آفست‌ها)ی ناحیه ضبط‌شده را نسبت به گوشه بالا-چپ صفحه X11 مشخص می‌کنند. مقدار پیش‌فرض آن‌ها 0 است.

برای اطلاعات دقیق‌تر مستندات X11 (مانند man X) را بررسی کنید.

از برنامه xdpyinfo برای دریافت اطلاعات اولیه درباره مشخصات نمایشگر X11 خود استفاده کنید (به عنوان مثال جستجوی عبارات "name" یا "dimensions").

به عنوان مثال برای ضبط از :0.0 با استفاده از ffmpeg:

ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg

ضبط در مختصات "10,20":

ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg

گزینه‌ها (Options)

تعیین این‌که آیا ناحیه ضبط به صورت گرافیکی با نشانگر ماوس انتخاب شود یا خیر. مقدار 1 از کاربر می‌خواهد با کلیک کردن و کشیدن ماوس (drag) ناحیه ضبط را به شکل بصری انتخاب کند. یک کلیک ساده بدون کشیدن، کل صفحه را انتخاب خواهد کرد. ناحیه‌ای با عرض یا ارتفاع صفر نیز کل صفحه را انتخاب می‌کند. این گزینه مقادیر گزینه‌های video_size، grab_x و grab_y را بازنویسی (override) می‌کند. مقدار پیش‌فرض 0 است.
تعیین این‌که آیا نشانگر ماوس رسم شود یا خیر. مقدار 0 عدم رسم نشانگر را مشخص می‌کند. مقدار پیش‌فرض 1 است.
وادار کردن ناحیه ضبط به دنبال کردن نشانگر ماوس. آرگومان می‌تواند "centered" یا تعداد پیکسل به صورت PIXELS باشد.

هنگامی که با مقدار "centered" مشخص شود، ناحیه ضبط نشانگر ماوس را دنبال می‌کند و نشانگر را در مرکز ناحیه نگه می‌دارد؛ در غیر این صورت، ناحیه تنها زمانی دنبال می‌شود که نشانگر ماوس به فاصله PIXELS (بزرگ‌تر از صفر) از لبه ناحیه برسد.

به عنوان مثال:

ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg

برای دنبال کردن تنها زمانی که نشانگر ماوس به فاصله ۱۰۰ پیکسلی لبه برسد:

ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg
تنظیم نرخ فریم ضبط. مقدار پیش‌فرض "ntsc" است که متناظر با نرخ فریم "30000/1001" می‌باشد.
نمایش ناحیه ضبط‌شده روی صفحه نمایش.

اگر show_region با مقدار 1 مشخص شود، در این صورت ناحیه ضبط بر روی صفحه نشان داده خواهد شد. با این گزینه، در صورتی که تنها بخشی از صفحه ضبط شود، به راحتی می‌توان متوجه شد چه بخشی در حال ضبط است.

تنظیم ضخامت کادر حاشیه ناحیه در صورت استفاده از -show_region 1. محدوده مجاز ۱ تا ۱۲۸ و مقدار پیش‌فرض ۳ است (فقط برای x11grab مبتنی بر XCB).

به عنوان مثال:

ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg

همراه با follow_mouse:

ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
ضبط این پنجره خاص به جای کل صفحه نمایش. مقدار پیش‌فرض 0 است که به کل صفحه (پنجره ریشه - root window) نگاشت می‌شود.

شناسه یک پنجره را می‌توان با استفاده از برنامه xwininfo (احتمالاً همراه با گزینه‌های -tree و -root) پیدا کرد.

اگر اندازه پنجره بعداً بزرگ‌تر شود، ناحیه جدید ضبط نمی‌شود. ضبط ویدیو زمانی پایان می‌یابد که پنجره بسته شود، از حالت نمایش خارج گردد (مثلاً کمینه‌سازی یا آیکون شود) یا کوچک‌تر از اندازه ویدیو شود (که به طور پیش‌فرض همان اندازه اولیه پنجره است).

این گزینه گزینه‌های follow_mouse و select_region را غیرفعال می‌کند.

تنظیم اندازه فریم ویدیو. پیش‌فرض کل میزکار یا کل پنجره است.
تنظیم مختصات ناحیه ضبط. این مختصات به عنوان فاصله (آفست) از گوشه بالا-چپ پنجره X11 بیان می‌شوند و متناظر با پارامترهای x_offset و y_offset در نام دستگاه هستند. مقدار پیش‌فرض برای هر دو گزینه 0 است.

دستگاه‌های خروجی، عناصر پیکربندی‌شده‌ای در FFmpeg هستند که می‌توانند داده‌های چندرسانه‌ای را در یک دستگاه خروجی متصل به سیستم شما بنویسند (ارسال کنند).

هنگامی که بیلد FFmpeg خود را پیکربندی می‌کنید، تمامی دستگاه‌های خروجی پشتیبانی‌شده به‌طور پیش‌فرض فعال هستند. می‌توانید با استفاده از گزینه پیکربندی "--list-outdevs" فهرست همه موارد موجود را مشاهده کنید.

می‌توانید تمام دستگاه‌های خروجی را با استفاده از گزینه پیکربندی "--disable-outdevs" غیرفعال کنید، و یک دستگاه خروجی را به‌طور گزینشی با استفاده از گزینه "--enable-outdev=OUTDEV" فعال نمایید، یا می‌توانید یک دستگاه ورودی خاص را با استفاده از گزینه "--disable-outdev=OUTDEV" غیرفعال کنید.

گزینه "-devices" در ابزارهای *ff فهرست دستگاه‌های خروجی فعال‌شده را نمایش می‌دهد.

در ادامه، شرحی از دستگاه‌های خروجی موجود فعلی آمده است.

دستگاه خروجی ALSA (معماری پیشرفته صدای لینوکس - Advanced Linux Sound Architecture).

مثال‌ها

  • پخش یک فایل روی دستگاه پیش‌فرض ALSA:
    ffmpeg -i INPUT -f alsa default
  • پخش یک فایل روی کارت صدای ۱، دستگاه صوتی ۷:
    ffmpeg -i INPUT -f alsa hw:1,7

دستگاه خروجی AudioToolbox.

امکان خروجی بومی به دستگاه‌های CoreAudio را در OSX فراهم می‌کند.

نام فایل خروجی می‌تواند خالی باشد (یا "-") تا به دستگاه خروجی پیش‌فرض سیستم اشاره کند، یا عددی باشد که به اندیس دستگاه اشاره دارد، همان‌طور که با استفاده از: "-list_devices true"; نشان داده می‌شود.

همچنین، دستگاه ورودی صوتی می‌تواند با اندیس با استفاده از

B<-audio_device_index E<lt>INDEXE<gt>>

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

همه دستگاه‌های موجود را می‌توان با استفاده از -list_devices true برشمرد که نام همه دستگاه‌ها، UIDها و اندیس‌های متناظر را فهرست می‌کند.

گزینه‌ها

دستگاه AudioToolbox از گزینه‌های زیر پشتیبانی می‌کند:

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

مثال‌ها

  • چاپ فهرست دستگاه‌های پشتیبانی‌شده و ارسال یک موج سینوسی به دستگاه پیش‌فرض:
    $ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -list_devices true -
  • ارسال یک موج سینوسی به دستگاه با اندیس ۲، با نادیده گرفتن و بازنویسی هر نام فایل خروجی:
    $ ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -audio_device_index 2 -

دستگاه خروجی CACA.

این دستگاه خروجی امکان نمایش یک جریان ویدیو را در پنجره CACA فراهم می‌کند. در هر برنامه فقط یک پنجره CACA مجاز است، بنابراین در یک برنامه فقط می‌توانید یک نمونه از این دستگاه خروجی داشته باشید.

برای فعال‌سازی این دستگاه خروجی باید FFmpeg را با "--enable-libcaca" پیکربندی کنید. کتابخانه libcaca یک کتابخانه گرافیکی است که به جای پیکسل، متن را به عنوان خروجی تولید می‌کند.

برای اطلاعات بیشتر درباره libcaca، ببینید: http://caca.zoy.org/wiki/libcaca

گزینه‌ها

عنوان پنجره CACA را تنظیم می‌کند؛ در صورت عدم تعیین، به‌طور پیش‌فرض از نام فایل مشخص‌شده برای دستگاه خروجی استفاده می‌شود.
اندازه پنجره CACA را تنظیم می‌کند؛ می‌تواند رشته‌ای به شکل widthxheight یا نام اختصاری اندازه ویدیو باشد. در صورت عدم تعیین، به‌طور پیش‌فرض به اندازه ویدیوی ورودی تنظیم می‌شود.
درایور نمایش را تنظیم می‌کند.
الگوریتم دیترینگ (dithering) را تنظیم می‌کند. دیترینگ ضروری است زیرا تصویری که رندر می‌شود معمولاً رنگ‌های بسیار بیشتری نسبت به پالت موجود دارد. مقادیر پذیرفته‌شده با "-list_dither algorithms"; فهرست می‌شوند.
روش ضدپلگی (antialias) را تنظیم می‌کند. ضدپلگی تصویر رندرشده را هموار می‌کند و از ایجاد جلوه پلکانی که معمولاً دیده می‌شود جلوگیری می‌نماید. مقادیر پذیرفته‌شده با "-list_dither antialiases"; فهرست می‌شوند.
تعیین می‌کند هنگام رندر متن از کدام نویسه‌ها استفاده شود. مقادیر پذیرفته‌شده با "-list_dither charsets"; فهرست می‌شوند.
رنگ مورد استفاده هنگام رندر متن را تنظیم می‌کند. مقادیر پذیرفته‌شده با "-list_dither colors"; فهرست می‌شوند.
در صورت تنظیم روی true، فهرستی از درایورهای موجود را چاپ کرده و خارج می‌شود.
گزینه‌های دیتر موجود مربوط به آرگومان را فهرست می‌کند. آرگومان باید یکی از "algorithms"، "antialiases"، "charsets"، یا "colors" باشد.

مثال‌ها

  • دستور زیر خروجی ffmpeg را در یک پنجره CACA نمایش می‌دهد و اندازه آن را به 80x25 محدود می‌کند:
    ffmpeg -i INPUT -c:v rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca -
  • نمایش فهرست درایورهای موجود و خروج:
    ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true -
  • نمایش فهرست رنگ‌های دیتر موجود و خروج:
    ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors -

دستگاه خروجی decklink قابلیت‌های پخش را برای دستگاه‌های Blackmagic DeckLink فراهم می‌کند.

برای فعال کردن این دستگاه خروجی، به SDK بلک‌مجیک DeckLink نیاز دارید و باید پیکربندی را با گزینه‌های مناسب "--extra-cflags" و "--extra-ldflags" انجام دهید. در ویندوز، باید فایل‌های IDL را از طریق widl اجرا کنید.

دستگاه DeckLink در مورد فرمت‌های پشتیبانی‌شده بسیار حساس است. فرمت پیکسل همیشه uyvy422 است، نرخ فریم، ترتیب فیلد و اندازه ویدیو باید با -list_formats 1 برای دستگاه شما مشخص شوند. نرخ نمونه‌برداری صوتی همیشه ۴۸ کیلوهرتز است.

گزینه‌ها

در صورت تنظیم روی true، فهرستی از دستگاه‌ها را چاپ کرده و خارج می‌شود. پیش‌فرض false است. این گزینه منسوخ شده است، لطفاً از گزینه "-sinks" در ffmpeg برای فهرست کردن دستگاه‌های خروجی موجود استفاده کنید.
در صورت تنظیم روی true، فهرستی از فرمت‌های پشتیبانی‌شده را چاپ کرده و خارج می‌شود. پیش‌فرض false است.
مدت زمان پیش‌بارگذاری ویدیو بر حسب ثانیه. پیش‌فرض 0.5 است.
حالت دوطرفه/پروفایل (duplex/profile) دستگاه decklink را تنظیم می‌کند. باید یکی از موارد unset، half، full، one_sub_device_full، one_sub_device_half، two_sub_device_full، four_sub_device_half باشد. پیش‌فرض unset است.

نکته: در DeckLink SDK 11.0 ویژگی duplex با ویژگی profile جایگزین شده است. برای DeckLink Duo 2 و DeckLink Quad 2، یک پروفایل بین هر ۲ زیردستگاه که از اتصالات یکسانی استفاده می‌کنند به اشتراک گذاشته می‌شود. برای DeckLink 8K Pro، یک پروفایل بین تمام ۴ زیردستگاه به اشتراک گذاشته می‌شود؛ بنابراین DeckLink 8K Pro از چهار پروفایل پشتیبانی می‌کند.

حالت‌های معتبر پروفایل برای DeckLink 8K Pro (با DeckLink SDK >= 11.0): one_sub_device_full، one_sub_device_half، two_sub_device_full، four_sub_device_half

حالت‌های معتبر پروفایل برای DeckLink Quad 2 و DeckLink Duo 2: half، full

آفست پیکسلی زمان‌بندی genlock را روی خروجی مورد استفاده تنظیم می‌کند. پیش‌فرض unset است.
پیکربندی پیوند ویدیویی SDI را روی خروجی مورد استفاده تنظیم می‌کند. باید یکی از موارد unset، پیوند تکی (single link SDI)، پیوند دوتایی (dual link SDI) یا پیوند چهارتایی (quad link SDI) باشد. پیش‌فرض unset است.
حالت Square Division Quad Split را برای خروجی Quad-link SDI فعال می‌کند. باید یکی از مقادیر unset، true یا false باشد. پیش‌فرض unset است.
حالت SMPTE Level A را روی خروجی مورد استفاده فعال می‌کند. باید یکی از مقادیر unset، true یا false باشد. پیش‌فرض unset است.
حداکثر اندازه بافر خروجی بر حسب بایت را برای داده‌های VANC تنظیم می‌کند. اگر بافر به این مقدار برسد، داده‌های ارسالی VANC دور ریخته می‌شوند. پیش‌فرض 1048576 است.

مثال‌ها

  • فهرست کردن دستگاه‌های خروجی:
    ffmpeg -sinks decklink
  • فهرست کردن فرمت‌های پشتیبانی‌شده:
    ffmpeg -i test.avi -f decklink -list_formats 1 'DeckLink Mini Monitor'
  • پخش کلیپ ویدیویی:
    ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 'DeckLink Mini Monitor'
  • پخش کلیپ ویدیویی با نرخ فریم یا اندازه ویدیوی غیراستاندارد:
    ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 -s 720x486 -r 24000/1001 'DeckLink Mini Monitor'

دستگاه خروجی فریم‌بافر لینوکس (Linux framebuffer).

فریم‌بافر لینوکس یک لایه انتزاعی مستقل از سخت‌افزار گرافیکی برای نمایش گرافیک روی مانیتور رایانه، معمولاً روی کنسول است. دسترسی به آن از طریق یک گره دستگاه فایل، معمولاً /dev/fb0 انجام می‌شود.

برای اطلاعات دقیق‌تر، فایل Documentation/fb/framebuffer.txt موجود در درخت کد منبع لینوکس را مطالعه فرمایید.

گزینه‌ها

مختصات x/y گوشه بالا سمت چپ را تنظیم می‌کند. پیش‌فرض 0 است.

مثال‌ها

پخش یک فایل در دستگاه فریم‌بافر /dev/fb0. فرمت پیکسل مورد نیاز به تنظیمات فعلی فریم‌بافر بستگی دارد.

ffmpeg -re -i INPUT -c:v rawvideo -pix_fmt bgra -f fbdev /dev/fb0

همچنین ببینید: http://linux-fbdev.sourceforge.net و fbset(1).

دستگاه خروجی OSS (سیستم صوتی باز - Open Sound System).

دستگاه خروجی PulseAudio.

برای فعال کردن این دستگاه خروجی باید FFmpeg را با "--enable-libpulse" پیکربندی کنید.

اطلاعات بیشتر درباره PulseAudio را می‌توان در http://www.pulseaudio.org یافت.

گزینه‌ها

اتصال به یک سرور خاص PulseAudio که با آدرس IP مشخص می‌شود. در صورت عدم ارائه، از سرور پیش‌فرض استفاده می‌شود.
نام برنامه‌ای را مشخص می‌کند که PulseAudio هنگام نمایش کلاینت‌های فعال استفاده خواهد کرد؛ به‌طور پیش‌فرض رشته "LIBAVFORMAT_IDENT" است.
نام جریانی را مشخص می‌کند که PulseAudio هنگام نمایش جریان‌های فعال استفاده خواهد کرد؛ به‌طور پیش‌فرض روی نام خروجی مشخص‌شده تنظیم می‌شود.
دستگاه مورد استفاده را مشخص می‌کند. در صورت عدم ارائه، از دستگاه پیش‌فرض استفاده می‌شود. فهرست دستگاه‌های خروجی را می‌توان با دستور pactl list sinks به دست آورد.
اندازه و مدت‌زمان بافر PulseAudio را کنترل می‌کند. یک بافر کوچک کنترل بیشتری فراهم می‌کند اما به به‌روزرسانی‌های مکررتری نیاز دارد.

گزینه buffer_size اندازه را بر حسب بایت مشخص می‌کند در حالی که buffer_duration مدت‌زمان را بر حسب میلی‌ثانیه مشخص می‌نماید.

هنگامی که هر دو گزینه ارائه شوند، بیشترین مقدار استفاده می‌شود (مدت‌زمان با استفاده از پارامترهای جریان مجدداً به بایت تبدیل و محاسبه می‌شود). اگر روی 0 تنظیم شوند (که پیش‌فرض است)، دستگاه از مقدار پیش‌فرض مدت‌زمان PulseAudio استفاده خواهد کرد. به‌طور پیش‌فرض PulseAudio مدت‌زمان بافر را روی حدود ۲ ثانیه تنظیم می‌کند.

اندازه پیش‌بافر (pre-buffering) را بر حسب بایت مشخص می‌کند. سرور قبل از در دسترس بودن حداقل prebuf بایت در بافر، پخش را شروع نمی‌کند. به‌طور پیش‌فرض این گزینه روی همان مقدار buffer_size یا buffer_duration (هرکدام که بزرگتر باشد) مقداردهی اولیه می‌شود.
حداقل اندازه درخواست را بر حسب بایت مشخص می‌کند. سرور کمتر از minreq بایت از کلاینت درخواست نمی‌کند، بلکه تا زمانی که بافر به اندازه کافی آزاد شود منتظر می‌ماند تا بایت‌های بیشتری را به یک‌باره درخواست کند. توصیه می‌شود این گزینه را تنظیم نکنید؛ در این صورت روی مقداری تنظیم می‌شود که توسط سرور منطقی تشخیص داده شود.

مثال‌ها

پخش یک فایل در دستگاه پیش‌فرض روی سرور پیش‌فرض:

ffmpeg  -i INPUT -f pulse "stream name"

دستگاه خروجی صوتی sndio.

دستگاه خروجی Video4Linux2.

دستگاه خروجی XV (XVideo).

این دستگاه خروجی امکان نمایش یک جریان ویدیو را در یک پنجره سیستم پنجره اکس (X Window System) فراهم می‌کند.

گزینه‌ها

نام نمایشگر سخت‌افزاری را مشخص می‌کند که دامنه ارتباطی و نمایشگر مورد استفاده را تعیین می‌نماید.

نام نمایشگر یا متغیر محیطی DISPLAY می‌تواند رشته‌ای در قالب hostname[:number[.screen_number]] باشد.

شناسه hostname نام ماشین میزبانی را مشخص می‌کند که نمایشگر به‌طور فیزیکی به آن متصل است. number شماره سرور نمایشگر در آن ماشین میزبان را مشخص می‌کند. screen_number صفحه نمایش مورد استفاده در آن سرور را مشخص می‌نماید.

در صورت عدم تعیین، به‌طور پیش‌فرض از مقدار متغیر محیطی DISPLAY استفاده می‌شود.

به عنوان مثال، "dual-headed:0.1" صفحه ۱ از نمایشگر ۰ را در ماشینی به نام ``dual-headed'' مشخص می‌کند.

برای اطلاعات دقیق‌تر درباره قالب نام نمایشگر، مشخصات X11 را بررسی کنید.

هنگامی که روی یک مقدار غیر صفر تنظیم شود، دستگاه پنجره جدیدی ایجاد نمی‌کند، بلکه از پنجره موجود با window_id ارائه‌شده استفاده می‌نماید. به‌طور پیش‌فرض این گزینه روی صفر تنظیم است و دستگاه پنجره اختصاصی خود را ایجاد می‌کند.
اندازه پنجره ایجادشده را تنظیم می‌کند؛ می‌تواند رشته‌ای به شکل widthxheight یا یک نام اختصاری اندازه ویدیو باشد. در صورت عدم تعیین، به‌طور پیش‌فرض اندازه ویدیوی ورودی خواهد بود. هنگامی که window_id تنظیم شده باشد نادیده گرفته می‌شود.
آفست‌های X و Y پنجره را برای پنجره ایجادشده تنظیم می‌کند. هر دو به‌طور پیش‌فرض روی 0 تنظیم هستند. این مقادیر ممکن است توسط مدیر پنجره نادیده گرفته شوند. هنگامی که window_id تنظیم شده باشد نادیده گرفته می‌شود.
عنوان پنجره را تنظیم می‌کند؛ در صورت عدم تعیین، به‌طور پیش‌فرض از نام فایل مشخص‌شده برای دستگاه خروجی استفاده می‌شود. هنگامی که window_id تنظیم شده باشد نادیده گرفته می‌شود.

برای اطلاعات بیشتر درباره XVideo به نشانی http://www.x.org مراجعه کنید.

مثال‌ها

  • رمزگشایی، نمایش و رمزگذاری ورودی ویدیو با ffmpeg به‌طور همزمان:
    ffmpeg -i INPUT OUTPUT -f xv display
  • رمزگشایی و نمایش ویدیوی ورودی در چندین پنجره X11:
    ffmpeg -i INPUT -f xv normal -vf negate -f xv negated

ffmpeg(1)، ffplay(1)، ffprobe(1)، libavdevice(3)

توسعه‌دهندگان FFmpeg.

برای جزئیات بیشتر درباره پدیدآورندگان و نویسندگان، تاریخچه گیت پروژه را ببینید (https://git.ffmpeg.org/ffmpeg)، به عنوان مثال با تایپ دستور git log در دایرکتوری کد منبع FFmpeg، یا مرور مخزن برخط در نشانی https://git.ffmpeg.org/ffmpeg.

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