FFmpeg অডিও/ভিডিও convert/extract/split এর অসাধারন টুল

p { margin-bottom: 0.08in; }

FFmpeg হচ্ছে মাল্টি-প্লাটফর্ম ভিডিও/অডিও লাইব্রেরি। এই লাইব্রেরিটি মূলত অডিও/ভিডিও কনভার্সনের কাজে বহুল ব্যবহৃত একটি ওপেনসোর্স লাইব্রেরি/টুল। কনভার্সন ছাড়াও এর মাধ্যমে encoding, splitting, extracting ইত্যাদি কাজ ও করা যায়। আমরা যে বিভিন্ন সুন্দর সুন্দর গ্রাফিকাল Video/Audio কনভার্টার ব্যবহার করি (Xillisoft, Imtoo, Format Factory, winff ইত্যাদি) এগুলোর পেছনের মূল কারিগর কিন্তু এই অসাধারণ ওপেনসোর্স টুলটি। অর্থাত কনভার্সনের মূল কাজটি করে FFmpeg।

FFmpeg মূলত একটি কমান্ডলাইন টুল। এটা ব্যবহার করে আপনি বিভিন্ন ফরমেটের ভিডিও/অডিও ফাইল কনভার্ট, এনকোড, splitকরতে পারবেন। এছাড়াও আপনি পারবেন ভিডিও থেকে অডিও extract করতে এবং IPOD, PSP ইত্যাদি ডিভাইসের জন্য ভিডিও এনকোড করতে।

যেভাবে কাজ করবেনঃ

অডিও/ভিডিও নিয়ে কাজ করার আগে sample rate, audio bitrate, video bitrate, frame per second, video sizeএবং codec নিয়ে ধারণা থাকলে খুব ভাল। আমি এগুলো নিয়ে খুব একটা পেচাবো না, কারন এতে অনেকেই বিরক্ত হতে পারে। যাই হোক কাজ শুরু করার আগে যেসব কমান্ড প্রয়োজনীয় সেসব সম্পর্কে সামান্য ধারণা দিতে চাই।

ভিডিওর জন্য দরকারি কমান্ডঃ

-f ফাইল ফরমেট (যেমন mp3,flv,avi,mpg ইত্যাদি)

-fs ফাইল সাইজ লিমিট করে দেওয়ার জন্য

-ss যেখান থেকে আপনি split শুরু করতে চান। starting time ( অডিওর ক্ষেত্রেও প্রযোজ্য)

-t যতটুকু সময় আপনি ফাইলে রাখতে চান। Duration ( অডিওর ক্ষেত্রেও প্রযোজ্য)

-r frame per second(15, 23, 25, 29.97, 30)

-b video bitrate

-s video size(176x144, 352x288, 704x576, 320x240, 640x480, 1024x768 ইত্যাদি)

-aspect aspect ratio 16:9(wide-screen), 4:3(full-screen)

-vn ভিডিও ছাড়া কনভার্ট/এনকোড/split হবে

-maxrate Set max video bitrate (in bit/s)

-minrate Set min video bitrate (in bit/s)

-vcodec Video codec(যেমনঃ xvid, mpeg4, mpeg2video ইত্যাদি)

অডিওর জন্য দরকারি কমান্ডঃ

-ar audio sample rate সেট করা (44100, 22050, 48000)

-ab audio bitrate সেট করা (64 kb, 128kb, 160kb etc)

-ac Stereo/mono সেট করা (stereo=2 mono=1)

-an অডিও ছাড়া কনভার্ট/এনকোড/split হবে

-acodec Audio codec (libmp3, aac ইত্যাদি)

p { margin-bottom: 0.08in; }

প্রস্তুতি-পর্বঃ

প্রথমে FFmpeg এবং দরকারি কোডেকগুলো synaptic দিয়ে ইন্সটল করে নিন। এরপর যে ফাইল নিয়ে কাজ করবেন প্রথমে টার্মিনালে cd কমান্ডের মাধ্যমে ফাইলটি যে ফোল্ডারে আছে, সেই ফোল্ডারে যান।

মনে করি আপনার ফাইলটি /home/username/Music ফোল্ডারে আছে। তাহলে আপনি লিখবেনঃ

cd /home/username/Music লিখে এন্টার চাপুন। আপনি ফোল্ডারে প্রবেশ করেছেন।

ভিডিও থেকে অডিও extract করাঃ

মনে করি /home/username/Music ফোল্ডারে input.flv নামে একটি ফাইল আছে। আপনি চাচ্ছেন এর থেকে অডিও extract করতে। টার্মিনালে cd কমান্ড দিয়ে সেই ফোল্ডারে যান(cd /home/username/Music লিখে এন্টার চাপুন)। এরপর নিচের কমান্ডটি রান করুনঃ

ffmpeg -i input.flv -vn -ar 44100 -ac 2 -ab 128kb -f mp3 output_audio.mp3

কমান্ডের ব্যাখ্যা

input.flvহচ্ছে source ফাইল।

-vn ভিডিও বাদ দিয়ে

-ar sample rate 44100

-ac stereo/mono (stereo=2)

-ab audio bitrate 128kb

-f ফাইল ফরমেট mp3

output_audio.mp3 হচ্ছে generated file(এটা ভিন্ন নামে দিতে পারেন)

এখানে input.flv ফাইল থেকে inputaudio.mp3 নামের 128 kbps 44100 hz স্যাম্পল রেটের stereo অডিও ফাইল extract করা হয়েছে।

ভিডিও থেকে একই সাথে অডিও extract split করাঃ

এটাও সম্ভব। যদি সেই ভিডিও থেকে নির্দিষ্ট অংশ অডিও ফরমেটে কেটে রাখতে চান(00:00:00 থেকে 00:02:30 পর্যন্ত) তাহলে সেটাও সম্ভব। নিচের কোডটি টার্মিনালে রান করুন।

ffmpeg -i input.flv -vn -ar 44100 -ac 2 -ab 128kb -ss 00:00:00 -t 00:02:30 -f mp3 output_audio.mp3

কমান্ডের ব্যাখ্যা

-ss(starting time) যেখান থেকে আপনি split শুরু করতে চান।

-t(Duration) যতটুকু সময় আপনি ফাইলে রাখতে চান।

এক্ষেত্রে আপনি ০২:৩০ মিনিটের অডিও পাবেন।

ভিডিও থেকে ভিডিও (with same quality) split করাঃ

p { margin-bottom: 0.08in; }

এটা করতে হলে টার্মিনাল খুলে লিখুন।

ffmpeg -i input.flv -sameq -ss 00:00:00 -t 00:02:30 output.flv

-ss(starting time) যেখান থেকে আপনি split শুরু করতে চান।

-t(Duration) যতটুকু সময় আপনি ফাইলে রাখতে চান।

এভাবে করলে আপনি উক্ত ফোল্ডারে output.flv নামে ০২:৩০ মিনিটের ভিডিও পাবেন।

অডিওর ক্ষেত্রে flv এর জায়গায় mp3(কিংবা আপনি যে ফরমেটে করতে চান) ব্যবহার করুন।

ffmpeg -i input.mp3 -ss 00:00:00 -t 00:02:30 -ab 128kb -ar 44100 -ac 2 output.mp3

avi থেকে mpg তে কনভার্ট(vice-versa):

মনে করুন ভিডিওটির নাম input.avi। এটিকে mpg তে কনভার্ট করতে যা করতে হবেঃ

ffmpeg -i input.avi output.mpg

এভাবে আপনার ফোল্ডারে output.mpg নামে ফাইল থাকবে। এটা একেবারেই সহজ উপায়ে করা হয়েছে। এতে আউটপুট কিছুটা খারাপ হতে পারে। ইচ্ছে করলে আপনি video bitrate, frame per second, video size ইত্যাদি নির্দিষ্ট করে দিতে পারেন।

mpg থেকে avi তে কনভার্ট করতে চাইলে ffmpeg -i input.mpg output.avi

avi থেকে flv তে কনভার্ট(সাইজ, বিটরেট, ফ্রেমরেট সহ):

ffmpeg -i input.avi -ab 64kb -ar 44100 -b 200 -r 15 -s 320x240 -f flv output.flv

কমান্ডের ব্যাখ্যা

input.avi হচ্ছে সোর্স ফাইল

-ab Audio bitrate(64kbps)

-ar Sample rate(44100)

-b Video bitrate(200kbps)

-r Frame per second(15)

-s Video size(320*240)

-f File format(flv)

output.flv Generated file. অনুরূপভাবে flv থেকে avi কনভার্ট করতে হলে লিখতে হবে

ffmpeg -i input.flv -ab 64kb -ar 44100 -b 200 -r 15 -s 320x240 -f avi output.avi

কমান্ডের ব্যাখ্যা

input.flv সোর্স ফাইল

output.avi generated ফাইল

PSP এর জন্য ভিডিও এনকোড করাঃ

ffmpeg -i input.avi -b 300 -s 320x240 -vcodec xvid -ab 32kb -ar 24000 -acodec aac output.mp4

p { margin-bottom: 0.08in; }

কমান্ডের ব্যাখ্যা

input.avi হচ্ছে সোর্স ফাইল

-b Video bitrate(300kbps)

-s Video size(320*240)

-vcodec Video codec(xvid)

-ab Audio bitrate(32kbps)

-ar Sample rate(24000)

-acodec Audio codec(aac)

output.mp4 generated ফাইল

mp3 থেকে wma তে কনভার্টঃ

ffmpeg -i input.mp3 -vn -acodec wmav2 -ab 160kb -ac 2 -ar 44100 output.wma

কমান্ডের ব্যাখ্যাঃ

input.mp3 হচ্ছে সোর্স ফাইল

-vn ভিডিও ব্যতীত

-acodec অডিও কোডেক

-ab Audio bitrate(160kbps)

-ar Sample rate(44100)

output.wma generated ফাইল


avi থেকে dv তে কনভার্টঃ

ffmpeg -i input.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 output.dv

কিংবা

ffmpeg -i input.avi -target pal-dv output.dv

pal-dv=output format

avi থেকে mpg তে কনভার্ট(For DVD Player):

ffmpeg -i input.avi -target pal-dvd -ps 2000000000 -aspect 16:9 output.mpeg

কমান্ডের ব্যাখ্যা

input.avi হচ্ছে সোর্স ফাইল

-target pal-dvd : Output format

-ps 2000000000 maximum size for the output file, in bits (here, 2 Gb)

-aspect 16:9 : Widescreen

output.mp4 generated ফাইল

শব্দহীন ভিডিওতে অডিও যোগ করাঃ

ffmpeg -i sound.mp3 -i blue.flv blue_final.avi

কমান্ডের ব্যাখ্যা

ffmpeg -i=ফাইল ইনপুট নেওয়ার কমান্ড

sound.mp3=অডিও ফাইল

blue.flv=মূল ভিডিও(শব্দহীন) ফাইল

blue_final.avi=ফাইনাল রেজাল্ট (শব্দযুক্ত)

এখানে blue.flv ফাইলের সাথে sound.mp3 যোগ হয়ে নতুন avi ফরমেটের blue_final.avi ভিডিও তৈরি হবে যেটাতে অডিও আছে।

আশা করি বুঝতে পেরেছেন FFmpeg দিয়ে কমান্ডলাইনে কিভাবে অডিও/ভিডিও কনভার্ট/extract/split +বিভিন্ন ডিভাইসের জন্য এনকোডিং করা যায়।

Level 0

আমি জাহিদ। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 13 বছর 8 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 23 টি টিউন ও 99 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

বস, মানুষ তো ভয় পাবে। আপনার উচিত ছিল আগে উইনএফএফ নিয়ে একটা টিউন করা। পরের টিউনে ওটার সাথে এই কমান্ডগুলো মিলিয়ে দিতেন তাহলে মনে হয় আরও ভাল হত।[ব্যক্তিগত মতামত]
তবে মন মত কিছু করতে চাইলে এটার কোন বিকল্প নেই।
সুন্দর এবং কাজের টিউনের জন্য ধন্যবাদ।

    Level 0

    বাবর ভাই আপনাকে ধন্যবাদ। আসলে এটা আমার আগেই করা ছিল। শুধু কপি-পেস্ট মেরেছি(লিনাক্স ফোরামের আমার পোস্ট থেকে)। আমার ও মনে হয় আগে winff নিয়ে টিউন করলে ভালো হত। আর winff দিয়ে আপনি split করতে পারবেন additional command line অপশনে । http://img571.imageshack.us/img571/9472/screenshotwinff.png

Level 0

ভাই আপ্নে যে বললেন বেশি পেচাবেন না আমার ত মনে হয় এটা পেচায় গেসে। আমি নিজে টোটাল ভিডিও কনভাতার বাবহার করি কার লাগ্লে বইলেন
—————-অবশেসে ধন্যবাদ

    Level 0

    এর চেয়ে ও বেশি পেচানো যেত। অনেক ধরণের অপশন আছে, যেগুলো এখানে বলা হয় নি। আপনি Program files এ Total Video Converter এর ফোল্ডারে (সাবফোল্ডার সহ) দেখুন তো FFmpeg, ffplay, mencoder, mplayer ইত্যাদি খুজে পান কিনা? এগুলো সবগুলোই ফ্রি এবং এদের মধ্যে FFmpeg আর Mencoder মূল conversion/encoding/spliting/joining করে । end-user দের সুবিধার জন্য গ্রাফিক্যাল ইন্টারফেস দেওয়া হয়, যাতে সহজে কাজ করা যায়। আপনি Total Video Converter দিয়ে conversion/encoding/spliting/joining এগুলো যেটাই করেন, সেই একই কাজ এই দুটো দিয়ে করা যায়।

আপনি তো এগুলোর কাজ বললেন, কিন্তু ব্যবহার করব কিভাবে?

Level 0

আপনি আসলে বিভিন্ন ভিডিও কনভার্টারের মাধ্যমেই FFmpeg(মাল্টিপ্ল্যাটফর্ম avcodec library) ব্যবহার করছেন। কিন্তু অনেক কনভার্টারেই এর উল্লেখ থাকে না। আমি শুধু এটা সম্পর্কে জানাতে টিউন করেছি। এককথায় FFmpeg হচ্ছে অধিকাংশ কনভার্টারগুলোর বাপ। এটা ব্যবহার করতে হলে কমান্ড লাইন ধরতে হবে। এর পরিবর্তে এর গ্রাফিক্যাল ইন্টারফেস (Xillisoft, Format Factory, Winff(লিনাক্স ভার্সন আছে), Imtoo, Any video Converter, Media Coder ইত্যাদি) ব্যবহার করতে পারেন। আর যদি কমান্ড লাইন ব্যবহার করতে চান তাহলে FFmpeg+প্রয়োজনীয় কোডেক ইন্সটল করতে হবে। গুগলে “FFmpeg for windows” লিখে সার্চ দিন। ইন্সটল হবার পর cd কমান্ড দিয়ে যেখানে ফাইল আছে সেখানে যাবেন , তারপর উপরের মত কাজ করবেন। তবে উইন্ডোজে সবগুলো(আমার দেওয়া কমান্ডগুলো) ঠিকমত কাজ করবে কিনা বলতে পারছি না। কেননা আমি সবগুলই লিনাক্সে ব্যবহার করেছি এবং সবগুলোই কাজ করেছে। তাই আমার পরামর্শ হলো FFmpeg এর গ্রাফিক্যাল কিছু ব্যবহার করা। যদি আগ্রহ থাকে তাহলে FFmpeg ব্যবহার করতে পারেন।