back

eXport-it FFmpeg

FFmpeg লাইব্রেরি কি?

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, ... এর মতো অন্যান্য পণ্যগুলি ব্যবহার করাও সম্ভব৷ p>

একটি মাল্টিকাস্ট চ্যানেল বন্ধ করতে

একটি মাল্টিকাস্ট চ্যানেল বন্ধ করার ভালো উপায় হল যে ক্লায়েন্টে আপনি এটি শুরু করেছেন সেখানে এটি বন্ধ করা কারণ এই চ্যানেলটি সেখানে নিয়ন্ত্রিত। স্ট্রিম করা মিডিয়া ফাইলের শেষ পর্যন্ত বাজানো হলে শো শেষ হওয়া উচিত।

ব্যবহারিক বিবেচনা

একটি মাল্টিকাস্ট চ্যানেল শুরু করার জন্য এই অ্যাপ্লিকেশনটির একটি নির্দিষ্ট ক্লায়েন্ট অংশের প্রয়োজন, যা আমার অন্যান্য আপ-টু-ডেট পণ্যের এক্সপোর্ট-ইট ক্লায়েন্টের মতো। একটি চলমান মাল্টিকাস্ট চ্যানেল ব্যবহার করার জন্য অ্যাপ্লিকেশন ক্লায়েন্ট বা ভিএলসি, এসএমপ্লেয়ার, ... অন্যান্য প্ল্যাটফর্মে বা অ্যান্ড্রয়েডে চলমান অন্যান্য পণ্যগুলির সাথে করা যেতে পারে। VLC ব্যবহার করার সময় একটি মাল্টিকাস্ট চ্যানেল ব্যবহার করার URLটি সহজে ভিন্ন হয় যেমন udp://@239.255.147.111:27192... শুধু একটি অতিরিক্ত "@" দিয়ে। একটি UDP মাল্টিকাস্ট চ্যানেলের মাধ্যমে মিডিয়া ডেটা একাধিক ক্লায়েন্টে দেখানোর জন্য শুধুমাত্র একবার পাঠানো হয়, কিন্তু কোন বাস্তব সিঙ্ক্রোনাইজেশন নেই, এবং বিলম্ব বাফারিং এবং ডিভাইসের বৈশিষ্ট্যের উপর নির্ভর করে সেকেন্ড হতে পারে।

একটি অডিও মাল্টিকাস্ট চ্যানেল শোনা অন্যান্য পণ্যের মাধ্যমে করা যেতে পারে কিন্তু নির্দিষ্ট ক্লায়েন্ট আইপি মাল্টিকাস্টের মাধ্যমে পাঠানো ছবিও দেখায়। আপনি যদি আপনার সঙ্গীতের সাথে নির্দিষ্ট ফটো পাঠাতে চান, আপনি সার্ভারে "পৃষ্ঠা 2" মেনু বিকল্পটি ব্যবহার করতে পারেন, শুধুমাত্র আপনার পছন্দসই ছবিগুলি নির্বাচন করতে, এক ক্লিকে সমস্ত ছবি অনির্বাচন করুন, তারপরে আপনি যেগুলি চান তা নির্বাচন করুন...

প্রতিটি প্রোটোকলের সাথে সুবিধা এবং অসুবিধা রয়েছে৷ UPnP এবং মাল্টিকাস্ট চ্যানেল শুধুমাত্র স্থানীয় নেটওয়ার্কে ব্যবহার করা যেতে পারে (প্রধানত Wi-Fi), HTTP স্ট্রিমিং স্থানীয়ভাবে কাজ করে কিন্তু ইন্টারনেটেও কাজ করে এবং ক্লায়েন্ট হিসাবে একটি ওয়েব ব্রাউজার ব্যবহার করে। UPnP এবং মাল্টিকাস্ট চ্যানেলের অ্যাক্সেস নিয়ন্ত্রণ করার কোনো নিরাপদ উপায় নেই এবং Wi-Fi নেটওয়ার্কে সংযুক্ত যেকোনো ডিভাইস চলমান সার্ভার ব্যবহার করতে পারে। HTTP প্রোটোকলের সাহায্যে, আপনি ব্যবহারকারীর নাম এবং পাসওয়ার্ডগুলি সংজ্ঞায়িত করতে পারেন, এবং নির্দিষ্ট ব্যবহারকারীদের জন্য কিছু মিডিয়া ফাইলে অ্যাক্সেস সীমিত করে অ্যাক্সেস বিভাগ (গ্রুপগুলিতে) ফাইলগুলি সেট করতে পারেন। সার্ভারের সেটিংস কোন ফাইলগুলি বিতরণ করা হবে তা সীমিত করতে এবং প্রয়োজনে ফাইল প্রতি একটি বিভাগ নাম সেট করার অনুমতি দেয়৷

back