কারাওকে হলো একটি সঙ্গীত ব্যবস্থা, যেখানে জনপ্রিয় গানের রেকর্ড করা সঙ্গত বাজে। একজন গায়ক সাধারণত ভিডিও পর্দায় দেখানো কথার অনুসরণ করে সরাসরি গান গেয়ে থাকেন। শব্দটি নিজে পারফরম্যান্সকেও বোঝায়।
জাপানি এই শব্দটি তৈরি হয়েছে kara, যার অর্থ ফাঁকা বা খালি, এবং orchestra শব্দের সংক্ষিপ্ত রূপ একত্র করে। তাই কারাওকে শব্দের আক্ষরিক অর্থ হলো খালি অর্কেস্ট্রা।
একটি মেটাডেটা প্রতিবেদনে, কারাওকে শব্দটি আরও সীমিত অর্থে ব্যবহৃত একটি ঘর। এই নামটি এসেছে FFmpeg প্রকল্পের ফাইল রিডার ffprobe থেকে।
FFmpeg একটি ফাইলের প্রতিটি অংশকে আলাদা স্ট্রিম হিসেবে তালিকাভুক্ত করে। প্রতিটি স্ট্রিমের জন্য disposition নামে একটি ফ্ল্যাগের সেট থাকে, যেমন Karaoke এবং Attached Pic। FFmpeg এর ডকুমেন্টেশনে কয়েকটি কথায় এই ফ্ল্যাগকে এভাবে সংজ্ঞায়িত করা হয়েছে: স্ট্রিমটিতে কারাওকে অডিও রয়েছে।
মানগুলি দেখতে কেমন
ffprobe রিডারের -show_streams অপশনটি প্রতিটি স্ট্রিমের জন্য ফ্ল্যাগ মুদ্রণ করে, এমনকি যেসব ফাইলে কোনো সঙ্গীত নেই সেগুলোতেও। ঐ আউটপুটে ফ্ল্যাগটির ২টি মান থাকতে পারে:
0: ফ্ল্যাগটি বন্ধ1: ফ্ল্যাগটি চালু, অর্থাৎ স্ট্রিমটি কারাওকে অডিও হিসেবে চিহ্নিত
প্রতিবেদনের ধরন অনুযায়ী সঠিক রূপটি বদলায়। একটি JSON প্রতিবেদনে "karaoke": 0 দেখা যায়, আর একটি সাধারণ টেক্সট প্রতিবেদনে DISPOSITION:karaoke=0 দেখা যায়।
কোন ফাইলগুলো এটিকে বহন করে
FFmpeg কিছু ফরম্যাটে এই ফ্ল্যাগ পড়তে এবং লিখতে পারে, আবার কিছুতে পারে না, যেমন এই উদাহরণগুলোতে দেখানো হয়েছে:
- NUT: একটি স্ট্রিম
Dispositionনামে ট্যাগেkaraokeশব্দটি সংরক্ষণ করতে পারে - MKV: Matroska স্পেসিফিকেশনে default, forced এবং commentary এর মতো ফ্ল্যাগ আছে, তবে karaoke ফ্ল্যাগ নেই
- MP4: MP4 ট্র্যাক রোলের FFmpeg তালিকায় karaoke নামে কোনো এন্ট্রি নেই
- AC-3 এবং E-AC-3 অডিও: অডিও ডেটায় একটি service type মান থাকে, এবং তার একটি মান কারাওকে বোঝায়
অডিওতে ২ বা ততোধিক চ্যানেল থাকলে FFmpeg কারাওকে service type মানটিকে ফ্ল্যাগে রূপান্তর করে, এমনকি ওই অডিওটি MKV বা MP4 ফাইলের মধ্যেও থাকলে। অন্যান্য অডিও ফরম্যাটে, একটি MKV বা MP4 ফাইলের স্ট্রিম সাধারণত 0 রিপোর্ট করে, এমনকি গানটি কারাওকে সংস্করণ হলেও।
কিছু কারাওকে গান নিজেদের আলাদা ফাইল টাইপ ব্যবহার করে। Library of Congress কারাওকে MIDI ফাইলের জন্য kar ফাইল এক্সটেনশন তালিকাভুক্ত করেছে।
যেখানে গানের কথাগুলো সংরক্ষিত থাকে
Karaoke ফ্ল্যাগ কোনো লেখা নয়, শুধু 0 বা 1 সংখ্যা ধরে। FFmpeg এ গানের কথাসহ স্ট্রিমের জন্য আলাদা Lyrics ফ্ল্যাগ আছে। আসল লেখা প্রতিটি ফরম্যাটে ভিন্ন জায়গায় থাকে:
- MP3: ID3v2 ফ্রেম USLT টাইমিং ছাড়া lyrics ধরে, আর SYLT ফ্রেম প্রতিটি শব্দাংশ বা টেক্সট ইউনিটের সঙ্গে টাইম স্ট্যাম্প সংরক্ষণ করে
- MKV: টাইমিং জানা না থাকলে, অথবা সাবটাইটেল ট্র্যাকের একটি কপি হিসেবে, একটি
LYRICSট্যাগে কথাগুলো রাখা হয়
মানের উৎস কোথায়
FFmpeg প্রতিটি স্ট্রিম তৈরি করার সময়, অথবা পরে স্ট্রিম পরীক্ষা করার সময় ফ্ল্যাগগুলো নির্ধারণ করে। NUT ফাইলের ক্ষেত্রে FFmpeg Disposition ট্যাগ থেকে ফ্ল্যাগ পড়ে। AC-3 অডিওর জন্য FFmpeg অডিও ডেটা থেকে service type মান পড়ে।
FFmpeg এর -disposition অপশন দিয়ে আপনি নিজেই ফ্ল্যাগ নির্ধারণ করতে পারেন। ডিফল্টভাবে FFmpeg ইনপুট স্ট্রিম থেকে আউটপুট স্ট্রিমে ফ্ল্যাগগুলো কপি করে।
কেবল কনটেইনারে সংরক্ষিত কোনো ফ্ল্যাগ নতুন ফাইলে যাবে তখনই, যখন নতুন ফরম্যাট সেটি সংরক্ষণ করতে পারে। MKV এর জন্য FFmpeg রাইটারের এই ফ্ল্যাগের জন্য কোনো কোড নেই।
এটি কেন গুরুত্বপূর্ণ
একটি ফাইল একাধিক অডিও স্ট্রিম ধরে রাখতে পারে, এবং এই ফ্ল্যাগ দিয়ে তাদের যেকোনো একটিকে কারাওকে অডিও হিসেবে চিহ্নিত করা যায়। FFmpeg কমান্ডে disp:karaoke স্ট্রিম সিলেক্টরটি সেই সব স্ট্রিম বাছাই করে, যেগুলোর এই ফ্ল্যাগ রয়েছে।
ফ্ল্যাগটি কেবল একটি লেবেল, তাই এটি আপনি যা শুনছেন তা প্রমাণ করে না। 0 মানটি প্রমাণ করে না যে গানের কোনো কারাওকে সংস্করণ নেই, বা গানে কোনো লিরিক্স নেই।