FFmpeg (https://www.ffmpeg.org/) audio və videoları yazmaq, çevirmək və yayımlamaq üçün tam, çarpaz platforma həllidir. FFmpeg, insanların və maşınların yaratdığı demək olar ki, hər şeyi deşifrə edə, kodlaşdıra, transkodlaşdıra, mux, demux, axın, filtr və oynaya bilən aparıcı multimedia çərçivəsidir. O, qabaqcıl kənara qədər ən qaranlıq qədim formatları dəstəkləyir. Onların bəzi standartlar komitəsi, icma və ya korporasiya tərəfindən tərtib edilməsindən asılı olmayaraq.
O, həm də yüksək portativdir: FFmpeg Linux, Mac OS X, Microsoft Windows, BSD-lər, Solaris və s... geniş çeşiddə tikinti mühitləri, maşın arxitekturaları, və konfiqurasiyalar.
FFmpeg kitabxanasının özü LGPL 2.1 lisenziyası altındadır. Müəyyən xarici kitabxanaların aktivləşdirilməsi (məsələn, libx264) lisenziyanı GPL 2 və ya daha sonrakı versiyaya dəyişir.
Kitabxanaları tərtib etmək üçün ffmpeg-android istehsalçısı skriptindən (töhfəçilər: Alexander Berezhnoi Javernaut + codacy-porsuq Codacy Badger + A2va) istifadə etdim. Bu skript FFmpeg-in mənbə kodunu https://www.ffmpeg.org saytından yükləyir və kitabxana qurur və onu Android üçün yığır. Skript paylaşılan kitabxanalar (*.so faylları), eləcə də başlıq faylları (*.h faylları) yaradır.
Fmpeg-android-maker-in əsas diqqəti Android layihəsinə qüsursuz inteqrasiya üçün ortaq kitabxanaları hazırlamaqdır. Skript istifadə üçün nəzərdə tutulan “çıxış” kataloqunu hazırlayır. Və bu layihənin etdiyi tək şey bu deyil. Ffmpeg-android istehsalçısının mənbə kodu MIT lisenziyası altında mövcuddur. https://github.com/Javernaut/ffmpeg-android-maker/ ünvanında ətraflı məlumat üçün LICENSE.txt faylına baxın eXport-it FFmpeg kitabxanaları sadəcə olaraq libaom, libdav1d, liblame, libopus və libtwolame ilə tərtib edilib...lakin bütün əlaqəli kitabxanalar deyil.
FFmpeg üçün Java dəstəyini inkişaf etdirmək və onu Android 7.1-dən 12-ə qədər işlətmək üçün Taner Şener tərəfindən https://github.com/tanersener/mobile-ffmpeg/ saytında sənədləşdirilmiş MobileFFmpeg layihəsindən başladım və bu layihə artıq saxlanılmır. ... və LGPL 3.0 altında lisenziyalaşdırılıb ...
Nəhayət, mən kitabxanalarla JNI Android Studio layihəsi hazırladım, faylları və Java dəstək kodunu daxil etdim və mövcud layihələrimə əlavə kitabxana kimi inteqrasiya etmək üçün .aar Kitabxana faylı yaratdım.
Çox yayımlı Kanala başlamaq üçün müştəridən istifadə etmək, FFmpeg dəstəyi ilə yerli şəbəkənizdə (Wi-Fi) UPnP serverinə daxil olmaq tələb olunur. Bu server ixrac etdiyi faylların siyahısı ilə cavab verməlidir. Bu serverdə FFmpeg dəstəyi varsa, siyahı səhifəsinin yuxarı sətirinin sonunda qırmızı rəngdə "Kanal olaraq" kiçik mətni göstərilməlidir. Mətn "qırmızı" olduqda, "oyun" düyməsini sıxmaq UPnP protokolundan istifadə etməzdən əvvəl olduğu kimi işləyir. Mətnin üzərinə klikləsəniz, o, "yaşıl" rəngə çevrilməli və "oynat" düyməsinə klikləməklə, video və ya audio faylları seçdikdən sonra "kanal" başlamalıdır.
Seçilmiş media faylları UPnP ilə eyni şəkildə oxunur, ancaq əlavə tapşırıqlar səbəbindən işə başlama gecikməsi daha uzundur. Boru aktiv saxlamaq üçün bu müştərinin media fayllarını oynatmasına davam etməlisiniz.
IP multicast İnternet üzərindən işləmir, o, yalnız Yerli Şəbəkədə işləyir, beləliklə, əsasən Wi-Fi-da. Multicast məlumat kanalı eyni vaxtda bir çox müştəri tərəfindən paylaşıla bilər. Siz Wi-Fi şəbəkənizdə media data axını göndərirsiniz və bu datanı qoşulmuş cihazlarda, demək olar ki, sinxron şəkildə, sadəcə gecikmə gecikmə fərqini göstərirsiniz.
UPnP və ya HTTP axını ilə hər bir cihaz göstərilən videonun bant genişliyini tələb edir və qlobal bant genişliyi hər iki trafikin cəmidir. Multicast streaming ilə biz çoxlu müştərilər arasında paylaşılan LAN-da bir məlumat axını göndəririk.
Bir kanalı işə saldıqdan sonra şəbəkənizdə başqa müştəri istifadə etsəniz, müştərinin əsas pəncərəsində əlavə sətir görməlisiniz. Sadəcə bu xəttə klikləməklə şou başlamalıdır.
VLC, SMplayer, ... kimi digər məhsullardan istifadə etmək, həmçinin eXport-it klientində göstərilən "UDP" URL-dən istifadə etməklə videonu göstərmək və ya multicast kanalı üzərində paylanmış musiqiyə qulaq asmaq mümkündür. p>
Çox yayımlanan Kanalı dayandırmağın yaxşı yolu onu başlatdığınız müştəridə dayandırmaqdır, çünki bu kanal orada idarə olunur. Yayımlanan media fayllarının sonuna qədər oxutmaq həm də şounun sonunu göstərməlidir.
Multicast kanalı işə salmaq üçün digər müasir məhsullarımın eXport-it müştərisi kimi bu proqramın xüsusi müştəri hissəsi tələb olunur. Çalışan multicast kanalından istifadə etmək proqram müştərisi və ya VLC, SMPlayer, ... digər platformalarda və ya Android-də işləyən digər məhsullarla edilə bilər. VLC-dən istifadə edərkən Multicast kanalından istifadə etmək üçün URL udp://@239.255.147.111:27192... sadəcə əlavə "@" işarəsi ilə rəvan fərqlidir. UDP Multicast kanalı ilə media məlumatları birdən çox müştəridə göstərilmək üçün yalnız bir dəfə göndərilir, lakin real sinxronizasiya yoxdur və buferləmə və cihazın xüsusiyyətlərindən asılı olaraq gecikmə saniyələr ola bilər.
Audio multicast kanalına qulaq asmaq digər məhsullarla həyata keçirilə bilər, lakin xüsusi müştəri IP multicast vasitəsilə göndərilən şəkilləri də göstərir. Musiqi ilə xüsusi fotoşəkillər göndərmək istəyirsinizsə, serverdə "Səhifə 2" menyu seçimindən istifadə edərək yalnız istədiyiniz şəkilləri seçə, bir kliklə bütün şəkillərin seçimini ləğv edə, sonra istədiyiniz şəkilləri seçə bilərsiniz... p>
Hər bir protokolun üstünlükləri və əlverişsiz tərəfləri var. UPnP və Multicast kanalı yalnız yerli şəbəkədə (əsasən Wi-Fi) istifadə edilə bilər, HTTP axını yerli, həm də İnternet üzərində işləyir və müştəri kimi Veb brauzerdən istifadə edir. UPnP və Multicast kanalının girişi idarə etmək üçün təhlükəsiz yolu yoxdur və Wi-Fi şəbəkəsinə qoşulmuş istənilən cihaz işləyən serverdən istifadə edə bilər. HTTP protokolu ilə siz istifadəçi adlarını və parolları təyin edə və faylları giriş kateqoriyalarında (qruplarda) təyin edə bilərsiniz, bu da xüsusi istifadəçilər üçün bəzi media fayllarına girişi məhdudlaşdırır. Serverin parametrləri hansı faylların paylanacağını məhdudlaşdırmağa və tələb olunarsa, hər fayl üçün kateqoriya adını təyin etməyə icazə verir.