FFmpeg (https://www.ffmpeg.org/) audio va videolarni yozib olish, aylantirish va oqimlash uchun toʻliq, oʻzaro platformali yechimdir. FFmpeg - bu odamlar va mashinalar yaratgan deyarli hamma narsani dekodlash, kodlash, transkodlash, mux, demux, oqimlash, filtrlash va o'ynashga qodir bo'lgan etakchi multimedia ramkasi. U eng noaniq qadimiy formatlarni eng yuqori darajaga qadar qo'llab-quvvatlaydi. Ular ba'zi standartlar qo'mitasi, hamjamiyat yoki korporatsiya tomonidan ishlab chiqilgan bo'lishidan qat'i nazar.
Shuningdek, u juda portativ: FFmpeg Linux, Mac OS X, Microsoft Windows, BSDs, Solaris va boshqalar boʻylab FATE sinov infratuzilmamizni kompilyatsiya qiladi, ishga tushiradi va topshiradi... turli xil qurish muhitlari, mashina arxitekturalari, va konfiguratsiyalar.
FFmpeg kutubxonasining oʻzi LGPL 2.1 litsenziyasi ostida. Ayrim tashqi kutubxonalar (masalan, libx264) yoqilsa, litsenziya GPL 2 yoki keyingi versiyasiga o‘zgaradi.
Kutubxonalarni kompilyatsiya qilish uchun men ffmpeg-android-maker skriptidan foydalandim (hissa mualliflari: Aleksandr Berejnoy Javernaut + codacy-badger Codacy Badger + A2va). Ushbu skript FFmpeg manba kodini https://www.ffmpeg.org dan yuklab oladi va kutubxonani quradi va uni Android uchun yig'adi. Skript umumiy kutubxonalarni (*.so fayllari) hamda sarlavha fayllarini (*.h fayllari) ishlab chiqaradi.
Ffmpeg-android-makerning asosiy maqsadi Android loyihasiga uzluksiz integratsiyalashuv uchun umumiy kutubxonalarni tayyorlashdir. Skript foydalanish uchun mo'ljallangan "chiqish" katalogini tayyorlaydi. Va bu loyiha amalga oshiradigan yagona narsa emas. Ffmpeg-android ishlab chiqaruvchisining manba kodi MIT litsenziyasi ostida mavjud. Qoʻshimcha maʼlumot olish uchun https://github.com/Javernaut/ffmpeg-android-maker/ sahifasida LICENSE.txt fayliga qarang. eXport-it FFmpeg kutubxonalari faqat libaom, libdav1d, liblame, libopus va libtwolame bilan tuzilgan... lekin barcha bog‘langan kutubxonalar emas.
FFmpeg uchun Java-ni qo'llab-quvvatlashni ishlab chiqish va uni Android 7.1 dan 12 gacha bo'lgan versiyalarda ishga tushirish uchun men Taner Sener tomonidan https://github.com/tanersener/mobile-ffmpeg/ hujjatlashtirilgan MobileFFmpeg loyihasidan boshladim, u endi qo'llanilmaydi. ... va LGPL 3.0 ostida litsenziyalangan ...
Nihoyat, kutubxonalar bilan JNI Android Studio loyihasini tayyorladim, fayllar va Java qoʻllab-quvvatlash kodini qoʻshdim va mavjud loyihalarimga qoʻshimcha kutubxona sifatida integratsiya qilish uchun .aar Library faylini yaratdim.
Ko'p tarmoqli kanalni ishga tushirish uchun mijozdan foydalanish, mahalliy tarmoqdagi (Wi-Fi) UPnP serveriga FFmpeg ko'magi bilan kirishni talab qiladi. Ushbu server eksport qiladigan fayllar ro'yxati bilan javob berishi kerak. Agar ushbu server FFmpeg-ni qo'llab-quvvatlasa, ro'yxat sahifasining yuqori qatori oxirida qizil rangda "Kanal sifatida" kichik matni ko'rsatilishi kerak. Matn "qizil" bo'lsa, "o'ynash" tugmasini bosish UPnP protokolidan foydalanishdan oldingi kabi ishlaydi. Agar matn ustiga bossangiz, u “yashil” rangga aylanadi va video yoki audio fayllarni tanlagandan so‘ng “o‘ynash” tugmasini bosish orqali “kanal” ishga tushadi.
Tanlangan media fayllar xuddi UPnP orqali o'ynagandek ijro etiladi, faqat qo'shimcha vazifalar tufayli ishga tushirish kechikishi uzoqroq bo'ladi. Quvurni faol ushlab turish uchun ushbu mijozni media fayllarni oʻynatishini davom ettirishingiz kerak.
IP multicast Internet orqali ishlamaydi, u faqat mahalliy tarmoqda ishlaydi, shuning uchun asosan Wi-Fi tarmog'ida. Multicast ma'lumotlar kanali bir vaqtning o'zida ko'plab mijozlar tomonidan baham ko'rilishi mumkin. Siz Wi-Fi tarmog‘ingizda media ma’lumotlar oqimini yubormoqdasiz va bu ma’lumotlarni ulangan qurilmalarda deyarli sinxron tarzda ko‘rsatasiz, faqat kechikishdagi kechikish farqi.
UPnP yoki HTTP oqimlari bilan har bir qurilma ko'rsatilgan videoning o'tkazish qobiliyatini talab qiladi va global tarmoqli kengligi ikkala trafikning yig'indisidir. Ko‘p tarmoqli oqim yordamida biz bir nechta mijozlar o‘rtasida taqsimlanadigan LAN tarmog‘iga bitta ma’lumot oqimini yuboramiz.
Agar siz kanalni ishga tushirgandan so'ng tarmog'ingizda boshqa mijozdan foydalansangiz, mijozning asosiy oynasida qo'shimcha qatorni ko'rishingiz kerak. Shu qatorni bosish bilan shou boshlanadi.
VLC, SMplayer, ... kabi boshqa mahsulotlardan eXport-it mijozida ko'rsatilgan "UDP" URL manzilidan foydalanib, video ko'rsatish yoki multicast kanal orqali tarqatiladigan musiqani tinglash uchun ham foydalanish mumkin. p>
Ko‘p tarmoqli kanalni to‘xtatishning eng yaxshi usuli uni siz boshlagan mijozda to‘xtatishdir, chunki bu kanal o‘sha yerda boshqariladi. Oqimli media fayllarni oxirigacha o‘ynatish ham shouning oxirini ko‘rsatishi kerak.
Koʻp tarmoqli kanalni ishga tushirish uchun boshqa eng soʻnggi mahsulotlarimning eXport-it mijozi kabi ushbu ilovaning maʼlum mijoz qismi kerak boʻladi. Ishlayotgan multicast kanalidan foydalanish dastur mijozi yoki VLC, SMPlayer, ... boshqa platformalarda yoki Androidda ishlaydigan boshqa mahsulotlar bilan amalga oshirilishi mumkin. VLC-dan foydalanganda Multicast kanalidan foydalanish URL manzili udp://@239.255.147.111:27192... shunchaki qo'shimcha "@" belgisi bilan bir xil bo'ladi. UDP Multicast kanalida media ma'lumotlari bir nechta mijozlarga ko'rsatilishi uchun faqat bir marta yuboriladi, lekin haqiqiy sinxronizatsiya mavjud emas va buferlash va qurilma xususiyatlariga qarab kechikish soniyalar bo'lishi mumkin.
Ovozli multicast kanalni tinglash boshqa mahsulotlarda ham amalga oshirilishi mumkin, lekin maxsus mijoz IP multicast orqali yuborilgan tasvirlarni ham ko'rsatadi. Musiqa bilan maxsus suratlarni jo‘natmoqchi bo‘lsangiz, serverdagi “2-sahifa” menyusidan foydalanishingiz mumkin, faqat o‘zingizga kerakli rasmlarni tanlang, bir marta bosish bilan barcha rasmlarni tanlashni olib tashlang, so‘ng o‘zingizga yoqqan rasmlarni tanlang... p>
Har bir protokolning afzalliklari va noqulay tomonlari mavjud. UPnP va Multicast kanali faqat mahalliy tarmoqda (asosan Wi-Fi) ishlatilishi mumkin, HTTP oqimi mahalliy, balki Internet orqali ham ishlaydi va mijoz sifatida veb-brauzerdan foydalaning. UPnP va Multicast kanalida kirishni boshqarishning xavfsiz usuli yo'q va Wi-Fi tarmog'iga ulangan har qanday qurilma ishlaydigan serverdan foydalanishi mumkin. HTTP protokoli yordamida siz foydalanuvchi nomlari va parollarni belgilashingiz va fayllarni kirish toifalarida (guruhlarida) o'rnatishingiz mumkin, bu esa muayyan foydalanuvchilar uchun ba'zi media fayllarga kirishni cheklaydi. Server sozlamalari qaysi fayllar tarqatilishini cheklash va agar kerak bo'lsa, har bir fayl uchun toifa nomini o'rnatish imkonini beradi.