فدک - آموزش رایانه - برنامه ffmpeg
آخرین تغییرات : 2017-07-13تعداد بازدید : 187

برنامه ffmpeg


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

  • آشنایی با ffmpeg

    در این مطلب سعی داریم تا شما را با ابزار 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 را به همراه فیلم‌برداری از صفحه‌نمایش به کار ببرید. این گونه کاربردها، در صورت صرف کمی خلاقیت، می‌تواند بسیار جالب باشد.

     

    مثال‎ها

     فایل تصویری


    convert file by group

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


    ffmpeg -i a.VOB a.mkv

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

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

    or

    for %%A IN (*.avi) DO ffmpeg -i "%%A" "%%A.mpg"

    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

     

     فایل صوتی


    A simple audio convert might be:

        $ ffmpeg -i file file.mp3

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

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

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

    تبدیل گروهی
    for i in *.*; do ffmpeg -i "$i" "$i.mp3" ;done

    برای برش قسمتی از فیلم
    ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4

    http://www.labnol.org/internet/useful-ffmpeg-commands/28490/




    very low quality MP3


    The reason you cant achieve lower then 32kbps is because of the sample rate most likely is still 44100-Hz meaning larger stream size, you have a few options 44100-Hz, 22050-Hz, and 11025-Hz as valid frequency's.

    Try (very low quality):

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

    -b:a = audio bitrate

    -ar = sample rate



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

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




                         

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