فدک - آموزش رایانه - آموزش نصب و بکارگیری نرم‌افزار ffmpeg
آخرین تغییرات : 2017-10-07تعداد بازدید : 346

آموزش نصب و بکارگیری نرم‌افزار ffmpeg


  1. آشنایی با ffmpeg
  2. ۱. نصب ffmpeg
  3. ۲. فرمت کلی کار با ffmpeg
  4. ۳. کاربردهای ساده و معمول ‌ ffmpeg
  5. ۴. گزینه‌های تصویر ffmpeg
  6. ۵.گزینه‌های صوت
  7. ۶. فیلترها
  8. مثال‎ها

آشنایی با ffmpeg

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

۱. نصب ffmpeg

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

Ubuntu ( and related distributions)

1
apt-get install ffmpeg

Fedora

1
yum install ffmpeg

openSUSE

1
zypper install ffmpeg

Arch Linux

1
pacman -S ffmpeg

۲. فرمت کلی کار با ffmpeg

فرمت کلی کار با این ابزار به صورت زیر است:

1
ffmpeg [global options] [options] -i input [options] output

در این دستور input نام ورودی و output نام خروجی است. در این مطلب همیشه input ورودی و output خروجی را مشخص می‌کند. لازم به ذکر است که فرمت و کدک فایل ورودی به صورت خودکار تشخیص داده می‌شود و همچنین فرمت و کدک فایل خروجی نیز، بر اساس پسوند فایل، به صورت خودکار مشخص می‌شود. اگرچه هرکدام از این موارد نیز قابل تعیین شدن توسط کاربر هستند. علاوه بر این شما می‌توانید در بخش options، با گزینه‌های بسیار بیشتری، روی عملیات تبدیل کنترل داشته باشید. و همچنین توجه کنید که دو بخش [options] وجود دارد که یکی قبل از فایل ورودی و دیگری قبل از فایل خروجی آورده شده است. دستورات به کار رفته در این دو بخش مشابه‌اند و هر کدام به ترتیب به فایل ورودی و خروجی اعمال می‌شوند. اگرچه ما اکثر این تنظیمات را به فایل خروجی اعمال می‌کنیم ولی در مواردی خاص شاید نیاز باشد برای فایل ورودی نیز برخی گزینه‌ها را معین کنیم. از این موارد خاص می‌توان به تعیین اندازه‌ی ورودی برای عکس‌برداری با وب‌کم اشاره کرد.

بخش [global options] نیز تنظیمات کلی برنامه را تحت کنترل دارد. تمام گزینه‌های این بخش به صورت کامل در صفحات راهنمای ffmpeg موجود هستند. برای دیدن این صفحات از دستور man ffmpeg استفاده کنید. از این بخش می‌توان به گزینه‌هایی مانند -formats یا -codecs اشاره کرد.

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

۳. کاربردهای ساده و معمول ‌ ffmpeg

در این بخش کاربردهای ساده و معمول ffmpeg را به صورت مختصر و بدون توضیح اضافه بیان می‌کنیم.

-تبدیل ویدئو به ویدئو یا صوت به صوت

1
ffmpeg -i input output

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

-جدا کردن صوت از فایل

1
ffmpeg -i input -nv output

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

البته در این دستور می‌توان -nv را حذف کرد و برنامه به صورت خودکار از روی پسوند فایل خروجی (فرمت صوتی مانند mp3) تصویر را حذف خواهد کرد. ولی برای اطمینان بیشتر این گزینه را اضافه کردیم.

-جداکردن تصویر از فایل

1
ffmpeg -i input -na output

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

بر خلاف دستور قبلی وجود -na ضروری است.
بریدن بخشی از ویدئو یا صوت

1
ffmpeg -i input -codec copy -ss start -t duration output

ورودی و خروجی در دستوز بالا مشخص هستند. بخش -codec copy به برنامه می‌گوید که از همان کدک‌های فایل ورودی استفاده کند، و در صورتی که این بخش را حذف کنید کدک‌های پیش‌فرض ffmpeg جایگزین خواهند شد و ممکن است با افت کیفیت و سرعت تبدیل روبه‌رو شوید. start زمان شروع برش را مشخص می‌کند. میتوانید آن‌را به ثانیه یا به فرمت H:M:S مشخص کنید که در آن به جای H ساعت، به جای M دقیقه و به جای S ثانیه را بنویسید. duration هم زمان برش را مشخص می‌کند و مانند  start تعیین می‌شود. مثلا

1
ffmpeg -i input.mp4 -codec copy -ss 10 -t 0:1:2 output.mp4

یعنی اینکه از ثانیه‌ی دهم فایل ورودی به مدت یک دقیقه و دو ثانیه جدا کن و در خروجی قرار بده.
گرفتن عکس و فیلم از صفحه نمایش
بله! می‌توانید با این ابزار از صفحه نمایش خود نیز عکس و فیلم بگیرید.
ابتدا فیلم:

1
ffmpeg -f x11grab -r 25 -s size -i :0.0[+x,y] output

پرواضح است که output فایل خروجی را مشخص می‌کند. در بخش size اندازه‌ی نمایشگر خود را برای ضبط تمام صفحه وارد کنید. فرمت ورودی به شکل WxH است که به جای H و W به ترتیب مقادیر ارتفاع و پهنای نمایشگر را قرار دهید. اگر می‌خواهید ضبط به صورت تمام صفحه انجام نشود اندازه‌ی دلخواه را وارد کنید. در بخش دلخواه [+x,y] می‌توانید مشخص کنید که ضبط از مکان مشخصی روی صفحه‌ی نمایش‌گر انجام شود. مبدأ این مختصات قسمت پایین چپ نمایش‌گر شما است.
عکس:

1
ffmpeg -f x11grab -r 25 -s size -frames 1 -i :0.0[+x,y] output

به اضافه شدن گزینه‌ی -frames 1 دقت کنید. این گزینه به برنامه می‌گوید که فقط یک فریم از ورودی (صفحه نمایش) را ذخیره کند. گزینه‌های دیگر همانند فیلم برداری است.
فیلم‌برداری و عکس برداری با وب‌کم و دیگر دستگاه‌های ورودی
این کار هم با ffmpeg انجام پذیر است. دستور زیر از وب‌کم شما فیلم‌برداری کرده، ذخیره می‌کند.

1
ffmpeg -f video4linux2 -i /dev/video0 output

خیلی ساده هست. فقط فایل خروجی را بدهید تا برایتان ضبط کند! البته می‌توانید از گزینه‌های مختلفی برای ورودی و نیز خروجی استفاده کنید. مثلا اندازه‌ی خروجی را تعیین کنید یا حتی با استفاده از میکروفون در حین ضبط تصویر، ضبط صدا نیز انجام دهید. یافتن این‌ها را به شما واگذار می‌کنیم. برخی از این گزینه‌ها را در موارد قبل دیده‌اید و اگر مایل هستید گزینه‌های بیشتری را ببینید به صفحات راهنمای ffmpeg مراجعه کنید.
به /dev/video0 دقت کنید. این مسیر دستگاه شما در لینوکس است. اکثر وب‌کم‌ها از همین مسیر استفاده می‌کنند ولی اگر می‌دانید دستگاه‌تان مسیر دیگری دارد آن را جایگزین کنید.
همچنین به جای video4linux2، در صورتی که نتیجه نگرفتید، می‌توانید از video4linux استفاده کنید.
در صورت تمایل برای عکس‌برداری، مانند عکس‌برداری از صفحه‌نمایش، گزینه‌ی -frames 1 را اضافه کنید.

۴. گزینه‌های تصویر ffmpeg

برخی گزینه‌های قابل استفاده برای ویدئو در جدول زیر آورده شده اند. برای راهنمایی بیشتر بخش Video Options صفحه‌ی راهنمای ffmpeg را ببینید. این گزینه‌ها را می‌توانید قبل از فایل ورودی یا خروجی به کار ببرید تا به هرکدام که خواستید اعمال شوند.

اندازه‌ی تصویر را تعیین می‌کند.

برای مثال 1024×768

همچنین برخی از اختصارهای مشهور، مانند wga را نیز می‌توانید در اینجا استفاده کنید. برای دیدن لیستی از اختصارات، از صفحه‌ی man ffmpeg دیدن کنید.

-s “size”

فریم در ثانیه‌ی(fps) را تعیین می‌کند، مثلا 25 .

-r “rate”

در حین عملیات تبدیل، «تصویر»ی موجود در فایل را نادیده می‌گیرد. کاربرد این گزینه برای استخراج صوت از یک فایل ویدئویی است. در بخش قبل کاربرد این گزینه را دیدید.

-vn

کدک ویدئو را تنظیم می‌کند. برای دیدن لیستی از کدک‌های موجود روی سیستم خود از دستور ffmpeg -codecs استفاده کنید. در خروجی این دستور علامت E کنار اسم کدک به این معناست که شما می‌توانید فایلی را به این کدک تبدیل کنید. وجود D در کنار اسم کدک به معنای این است که ffmpeg قابلیت خواندن فایل با این کدک را دارد. همچنین وجود حرف V در کنار کدک نشان‌گر آن است که آن کدک، یک کدک تصویری است.

-vcodec “codec”

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

-vf “filter”

۵.گزینه‌های صوت

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

حذف صوت از فایل ورودی

-an

تنظیم کدک صوتی. برای دیدن لیستی از کدک‌های موجود روی سیستم از ffmpeg -codecs استفاده کنید. وجود حرف A در کناز اسم هر کدک نشان‌گر آن است که آن کدک، یک کدک صوتی است و وجود حرف E به معنای این است که شما می‌توانید با این کدک خروجی تولید کنید. وجود حرف D نیز به معنای قابلیت خواندن کدک توسط برنامه است.

 

-acodec “codec”

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

-aq “quality”

سرعت نمونه‌برداری را تعیین می‌کند. rate سرعت را بر حسب هرتز مشخص می‌کند.

-ar “rate”

تعداد کانال‌های صوتی را تعیین می‌کند.

-ac “channels”

۶. فیلترها

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

برای دیدن لیستی از فیلتر‌ها و نحوه‌ی اعمال هر کدام اینجا و اینجا را ببینید.

برای مثال، برای بریدن بخشی از فیلم (crop کردن)، از دستوری مانند زیر استفاده می‌کنیم:

1
ffmpeg -vf crop=w:h:x:y -i input output

که مقادیر w و h اندازه و مقادیر x,y نقطه‌ی شروع بریدن تعیین می‌کنند. مبدأ این مختصات نقطه‌ی بالا چپ تصویر است.
به عنوان مثالی دیگر، دستور زیر مستطیلی روی تصویر رسم می‌کند.

1
ffmpeg -vf drawbox=x:y:w:h:color -i input output

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

مثال‎ها

تبدیل گروهی در لینوکس

for i in *.*; do ffmpeg -i "$i" "$i.mp3" ;done
or
for %%A IN (*.avi) DO ffmpeg -i "%%A" "%%A.mpg"

انتخاب مقدار کیفیت

 $ ffmpeg -b 192k -i file file.mp3

با انتخاب مقدار کیفیت

ffmpeg -i input.wav -codec:a libmp3lame -qscale:a 2 output.mp3

متصل نمودن چند فایل

ffmpeg -i concat:"1.VOB|2.VOB|3.VOB" -c copy Safar.webm

تغییر سایز تصویر
100 of left right crop
120 of op bottom crop

ffmpeg -i 1.VOB -filter:v "crop=in_w-2*100:in_h-2*120" 1.webm

دانلود فایل‎ها از سرور تلبیون

ffmpeg -i "rtmpe://www.s4.telewebion.com:1935/vod/mp4:/media/telewebion/tv3/2014-11-12/2012/file.mp4" -vcodec copy -acodec copy out1.mkv

انتخاب مقدار کیفیت

ffmpeg -b 192k -i file file.mp3

تبدیل گروهی در لینوکس

for i in *.*; do ffmpeg -i "$i" "$i.mp3" ;done

برش زدن قسمتی از فایل

ffmpeg -i input.mp4 -ss 00:00:03 -t 00:00:08 -async 1 output.mp4

جدا سازی به وسیله زمان به طور مثال 49 ثانیه Split by time

ffmpeg -i t.ogg -map 0 -c copy -f segment -segment_time 49 -reset_timestamps 1 out%02d.ogg

بالا بردن صدا

ffmpeg -i input.wma -filter:a "volume=60" output.mp3

افزایش دوبرابری سرعت پخش صدا و تصویر(اگر مقدار setpts پایین آورده شود سرعت بیشتر خواهد شد دقت شود سرعت پخش صدا نیز باید بصورت متوازن تغیر کند )

ffmpeg -i 08.mp4 -filter:a "atempo=2.0" -filter:v "setpts=0.5*PTS" j08_.mkv

بالا بردن سرعت پخش صدا atempo

ffmpeg -i input.mp3 -filter:a "atempo=2.0"  output.mp3

کاهش حجم با حداقل کاهش کیفیت

ffmpeg -i input.MP3 -acodec libmp3lame -ac 2 -ab 64k -ar 44100 output.mp3

کاهش حجم با کاهش کیفیت

ffmpeg -i inputfile.mp3 -acodec libmp3lame -b:a 8k -ac 1 -ar 11025 outputfile.mp3

******

******

******

******

******

******

-b:a = audio bitrate
-ar = sample rate

Useful FFmpeg Commands For Converting Audio & Video Files


                        

2000-2016 CMS Fadak. ||| Version : 4.2-b1 ||| This page was produced in : 0.003 Seconds