eXport-it, android  UPnP Client/Server

اندیشه از UPnP/HTTP کارفرما/سرور

Android


نرم افزار به اشتراک گذاری فایل آندروید برای ویدئو، صدا، تصاویر و کتاب های الکترونیکی




eXport-it FFmpeg



کتابخانه FFmpeg چیست؟

FFmpeg (https://www.ffmpeg.org/) یک راه حل کامل و چند پلتفرمی برای ضبط، تبدیل و پخش جریانی صدا و تصویر است. FFmpeg یک چارچوب چندرسانه‌ای پیشرو است که می‌تواند تقریباً هر چیزی را که انسان‌ها و ماشین‌ها ساخته‌اند را رمزگشایی، رمزگذاری، ترانکد، mux، demux، استریم، فیلتر و پخش کند. از مبهم ترین فرمت های باستانی تا لبه برش پشتیبانی می کند. مهم نیست که آنها توسط برخی از کمیته استانداردها، انجمن یا یک شرکت طراحی شده باشند.

همچنین بسیار قابل حمل است: FFmpeg زیرساخت آزمایشی FATE ما را در لینوکس، Mac OS X، Microsoft Windows، BSDs، Solaris و غیره کامپایل می‌کند، اجرا می‌کند، و تحت طیف گسترده‌ای از محیط‌های ساخت، معماری ماشین، و تنظیمات.

خود کتابخانه FFmpeg تحت مجوز LGPL 2.1 است. فعال کردن برخی از کتابخانه‌های خارجی (مانند libx264) مجوز را به GPL 2 یا جدیدتر تغییر می‌دهد.

این کتابخانه چگونه در برنامه اندروید یکپارچه شده است

من از اسکریپت ffmpeg-android-maker (مشارکت کنندگان: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va) برای کامپایل کتابخانه ها استفاده کردم. این اسکریپت کد منبع FFmpeg را از https://www.ffmpeg.org دانلود می کند و کتابخانه را می سازد و آن را برای اندروید مونتاژ می کند. این اسکریپت کتابخانه های مشترک (فایل های *.so) و همچنین فایل های سرصفحه (فایل های *.h) را تولید می کند.

تمرکز اصلی ffmpeg-android-maker این است که کتابخانه های مشترک را برای ادغام یکپارچه در یک پروژه اندروید آماده کند. اسکریپت دایرکتوری «خروجی» را آماده می کند که قرار است استفاده شود. و این تنها کاری نیست که این پروژه انجام می دهد. کد منبع ffmpeg-android-maker تحت مجوز MIT در دسترس است. برای جزئیات بیشتر در https://github.com/Javernaut/ffmpeg-android-maker/ به فایل LICENSE.txt مراجعه کنید کتابخانه‌های eXport-it FFmpeg فقط با libaom، libdav1d، liblame، libopus و libtwolame...اما نه همه کتابخانه‌های مرتبط جمع‌آوری شده‌اند.

برای توسعه پشتیبانی جاوا برای FFmpeg و اجرای آن در اندروید 7.1 تا 12، از پروژه MobileFFmpeg مستند شده در https://github.com/tanersener/mobile-ffmpeg/ توسط Taner Sener شروع کردم، که دیگر نگهداری نمی شود. ... و تحت مجوز LGPL 3.0 ...

است

در نهایت، یک پروژه JNI Android Studio با کتابخانه‌ها آماده کردم، شامل فایل‌ها و کد پشتیبانی جاوا می‌شود و یک فایل کتابخانه .aar را برای ادغام به عنوان یک کتابخانه اضافی در پروژه‌های موجود خود ایجاد کردم.


چگونه یک کانال چندپخشی راه اندازی کنیم

برای شروع یک کانال چندپخشی نیاز به استفاده از یک کلاینت برای دسترسی به سرور UPnP در شبکه محلی خود (Wi-Fi) با پشتیبانی FFmpeg است. این سرور باید با لیست فایل هایی را که صادر می کند پاسخ دهد. اگر این سرور دارای پشتیبانی FFmpeg است، یک متن کوچک "به عنوان کانال" باید در انتهای خط بالای صفحه لیست به رنگ قرمز نشان داده شود. هنگامی که متن "قرمز" است، کلیک بر روی دکمه "play" مانند قبل با استفاده از پروتکل UPnP عمل می کند. اگر روی متن کلیک کنید، باید "سبز" شود و با کلیک بر روی دکمه "پخش"، پس از انتخاب فایل های ویدئویی یا صوتی، باید یک "کانال" شروع شود.

فایل‌های رسانه انتخاب‌شده ظاهراً به روشی مشابه از طریق UPnP پخش می‌شوند، با این تفاوت که تاخیر راه‌اندازی به دلیل کارهای اضافی بیشتر است. شما باید این کلاینت را در حال پخش فایل های رسانه ای نگه دارید تا لوله فعال بماند.

استفاده از این لوله در دستگاه‌های دیگر

چندپخشی IP از طریق اینترنت کار نمی کند، فقط در شبکه محلی کار می کند، بنابراین عمدتاً روی Wi-Fi. یک کانال داده چندپخشی می تواند توسط بسیاری از مشتریان به طور همزمان به اشتراک گذاشته شود. شما در حال ارسال یک جریان داده رسانه در شبکه Wi-Fi خود هستید و این داده ها را در دستگاه های متصل تقریباً همزمان نشان می دهید، فقط تفاوت تاخیر تأخیر.

با پخش جریانی UPnP یا HTTP، هر دستگاه به پهنای باند ویدیوی نمایش داده شده نیاز دارد و پهنای باند جهانی مجموع هر دو ترافیک است. با پخش چندپخشی، یک جریان داده در شبکه محلی ارسال می کنیم که بین چندین مشتری به اشتراک گذاشته می شود.

اگر پس از راه‌اندازی کانال، از مشتری دیگری در شبکه خود استفاده می‌کنید، باید یک خط اضافی در پنجره اصلی سرویس گیرنده مشاهده کنید. فقط با کلیک بر روی این خط باید نمایش شروع شود.

همچنین استفاده از محصولات دیگر مانند VLC، SMplayer، ... برای نمایش یک ویدیو یا گوش دادن به موسیقی توزیع شده در یک کانال چندپخشی فقط با استفاده از URL "UDP" نشان داده شده در مشتری eXport-it امکان پذیر است.

برای توقف یک کانال چندپخشی

روش خوب برای توقف یک کانال چندپخشی این است که آن را روی کلاینتی که آن را راه اندازی کرده اید متوقف کنید زیرا این کانال در آنجا کنترل می شود. پخش تا انتهای فایل‌های رسانه پخش‌شده نیز باید نمایش را به پایان برساند.