FFmpeg (https://www.ffmpeg.org/) অডিও এবং ভিডিও রেকর্ড, রূপান্তর এবং স্ট্রিম করার জন্য একটি সম্পূর্ণ, ক্রস-প্ল্যাটফর্ম সমাধান। FFmpeg হল নেতৃস্থানীয় মাল্টিমিডিয়া ফ্রেমওয়ার্ক, যা ডিকোড করতে, এনকোড করতে, ট্রান্সকোড করতে, mux, demux, স্ট্রিম, ফিল্টার করতে এবং মানুষ এবং মেশিনের তৈরি করা অনেক কিছু খেলতে সক্ষম। এটি কাটিয়া প্রান্ত পর্যন্ত সবচেয়ে অস্পষ্ট প্রাচীন বিন্যাস সমর্থন করে। সেগুলি কিছু স্ট্যান্ডার্ড কমিটি, সম্প্রদায় বা কর্পোরেশন দ্বারা ডিজাইন করা হয়েছে কিনা তা বিবেচ্য নয়৷
এটি অত্যন্ত পোর্টেবল: FFmpeg লিনাক্স, ম্যাক ওএস এক্স, মাইক্রোসফ্ট উইন্ডোজ, বিএসডি, সোলারিস, ইত্যাদি... বিভিন্ন ধরনের বিল্ড পরিবেশ, মেশিন আর্কিটেকচার, এবং কনফিগারেশন।
FFmpeg লাইব্রেরি নিজেই LGPL 2.1 লাইসেন্সের অধীনে। নির্দিষ্ট বাহ্যিক লাইব্রেরি (যেমন libx264) সক্ষম করা হলে তা GPL 2 বা তার পরবর্তী লাইসেন্স পরিবর্তন করে৷
লাইব্রেরিগুলো কম্পাইল করতে আমি ffmpeg-android-maker স্ক্রিপ্ট (অবদানকারী: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va) ব্যবহার করেছি। এই স্ক্রিপ্টটি https://www.ffmpeg.org থেকে FFmpeg-এর সোর্স কোড ডাউনলোড করে এবং লাইব্রেরি তৈরি করে এবং Android এর জন্য একত্রিত করে। স্ক্রিপ্ট শেয়ার করা লাইব্রেরি (*.so ফাইল) পাশাপাশি হেডার ফাইল (*.h ফাইল) তৈরি করে।
ffmpeg-android-maker-এর মূল ফোকাস হল একটি Android প্রকল্পে নির্বিঘ্ন সংহতকরণের জন্য ভাগ করা লাইব্রেরি প্রস্তুত করা। স্ক্রিপ্টটি `আউটপুট` ডিরেক্টরি প্রস্তুত করে যা ব্যবহার করার জন্য। এবং এটি এই প্রকল্পের একমাত্র জিনিস নয়। ffmpeg-android-maker এর সোর্স কোড MIT লাইসেন্সের অধীনে পাওয়া যায়। https://github.com/Javernaut/ffmpeg-android-maker/ এ আরও বিশদ বিবরণের জন্য LICENSE.txt ফাইল দেখুন eXport-it FFmpeg লাইব্রেরিগুলি শুধুমাত্র libaom, libdav1d, liblame, libopus এবং libtwolame দিয়ে কম্পাইল করা হয়েছে...কিন্তু সমস্ত সংশ্লিষ্ট লাইব্রেরি নয়।
FFmpeg-এর জন্য জাভা সমর্থন বিকাশ করতে এবং এটিকে Android 7.1 থেকে 12-এ চালানোর জন্য, আমি Taner Sener-এর https://github.com/tanersener/mobile-ffmpeg/-এ নথিভুক্ত MobileFFmpeg প্রকল্প থেকে শুরু করেছি, যা আর রক্ষণাবেক্ষণ করা হয় না। ... এবং LGPL 3.0 এর অধীনে লাইসেন্সপ্রাপ্ত ...
অবশেষে, আমি লাইব্রেরিগুলির সাথে একটি JNI অ্যান্ড্রয়েড স্টুডিও প্রকল্প প্রস্তুত করেছি, ফাইল এবং জাভা সমর্থন কোড অন্তর্ভুক্ত করেছি এবং আমার বিদ্যমান প্রকল্পগুলিতে একটি অতিরিক্ত লাইব্রেরি হিসাবে সংহত করার জন্য একটি .aar লাইব্রেরি ফাইল তৈরি করেছি৷
একটি মাল্টিকাস্ট চ্যানেল শুরু করতে একটি ক্লায়েন্ট ব্যবহার করতে হবে, আপনার স্থানীয় নেটওয়ার্কে (ওয়াই-ফাই) FFmpeg সমর্থন সহ একটি UPnP সার্ভার অ্যাক্সেস করতে হবে৷ এই সার্ভারটি যে ফাইলগুলি রপ্তানি করে তা তালিকার সাথে উত্তর দেওয়া উচিত৷ যদি এই সার্ভারে FFmpeg সমর্থন থাকে, তাহলে তালিকা পৃষ্ঠার উপরের লাইনের শেষে একটি ছোট টেক্সট "একটি চ্যানেল হিসাবে" লাল রঙে দেখাতে হবে। যখন পাঠ্যটি "লাল" হয়, তখন "প্লে" বোতামে ক্লিক করা UPnP প্রোটোকল ব্যবহার করার আগের মতো কাজ করে। আপনি যদি পাঠ্যটিতে ক্লিক করেন তবে এটি "সবুজ" হয়ে যাবে এবং ভিডিও বা অডিও ফাইলগুলি নির্বাচন করার পরে "প্লে" বোতামে ক্লিক করলে একটি "চ্যানেল" শুরু হবে৷
নির্বাচিত মিডিয়া ফাইলগুলি UPnP-এর মাধ্যমে দৃশ্যত একইভাবে চালানো হয়, অতিরিক্ত কাজের কারণে স্টার্টআপ বিলম্ব বেশি না হলে। পাইপ সক্রিয় রাখতে আপনাকে অবশ্যই এই ক্লায়েন্টকে মিডিয়া ফাইলগুলি চালাতে হবে৷
আইপি মাল্টিকাস্ট ইন্টারনেটে কাজ করে না, এটি শুধুমাত্র লোকাল এরিয়া নেটওয়ার্কে কাজ করে তাই মূলত ওয়াই-ফাইতে। একটি মাল্টিকাস্ট ডেটা চ্যানেল একসাথে অনেক ক্লায়েন্ট শেয়ার করতে পারে। আপনি আপনার Wi-Fi নেটওয়ার্কে একটি মিডিয়া ডেটা ফ্লো পাঠাচ্ছেন এবং সংযুক্ত ডিভাইসগুলিতে এই ডেটাগুলি দেখান, প্রায় সিঙ্ক্রোনাসভাবে, শুধুমাত্র বিলম্বের পার্থক্য।
UPnP বা HTTP স্ট্রিমিংয়ের সাথে, প্রতিটি ডিভাইসের জন্য দেখানো ভিডিওর ব্যান্ডউইথ প্রয়োজন এবং গ্লোবাল ব্যান্ডউইথ হল উভয় ট্রাফিকের সমষ্টি। মাল্টিকাস্ট স্ট্রিমিংয়ের সাথে, আমরা ল্যানে একটি ডেটা ফ্লো পাঠাই যা একাধিক ক্লায়েন্টের মধ্যে ভাগ করা হয়৷
একটি চ্যানেল শুরু করার পর আপনি যদি আপনার নেটওয়ার্কে অন্য ক্লায়েন্ট ব্যবহার করেন, তাহলে ক্লায়েন্ট প্রধান উইন্ডোতে আপনার একটি অতিরিক্ত লাইন দেখতে হবে। শুধু এই লাইনে ক্লিক করলেই শো শুরু করা উচিত।
এটি এক্সপোর্ট-ইট ক্লায়েন্টে দেখানো "UDP" URL ব্যবহার করে একটি ভিডিও দেখাতে বা একটি মাল্টিকাস্ট চ্যানেলে বিতরণ করা সঙ্গীত শোনার জন্য VLC, SMplayer, ... এর মতো অন্যান্য পণ্যগুলি ব্যবহার করাও সম্ভব৷
একটি মাল্টিকাস্ট চ্যানেল বন্ধ করার ভালো উপায় হল যে ক্লায়েন্টে আপনি এটি শুরু করেছেন সেখানে এটি বন্ধ করা কারণ এই চ্যানেলটি সেখানে নিয়ন্ত্রিত। স্ট্রিম করা মিডিয়া ফাইলের শেষ পর্যন্ত বাজানো হলে শো শেষ হওয়া উচিত।