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 +বিভিন্ন ডিভাইসের জন্য এনকোডিং করা যায়।
আমি জাহিদ। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 14 বছর 3 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 23 টি টিউন ও 99 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
বস, মানুষ তো ভয় পাবে। আপনার উচিত ছিল আগে উইনএফএফ নিয়ে একটা টিউন করা। পরের টিউনে ওটার সাথে এই কমান্ডগুলো মিলিয়ে দিতেন তাহলে মনে হয় আরও ভাল হত।[ব্যক্তিগত মতামত]
তবে মন মত কিছু করতে চাইলে এটার কোন বিকল্প নেই।
সুন্দর এবং কাজের টিউনের জন্য ধন্যবাদ।