Az FFmpeg (https://www.ffmpeg.org/) egy komplett, többplatformos megoldás hang és videó rögzítésére, konvertálására és streamelésére. Az FFmpeg a vezető multimédiás keretrendszer, amely képes dekódolni, kódolni, átkódolni, keverni, demuxolni, streamelni, szűrni és lejátszani szinte bármit, amit az emberek és a gépek létrehoztak. Támogatja a leghomályosabb ősi formátumokat egészen az élvonalig. Nem számít, hogy valamelyik szabványügyi bizottság, a közösség vagy egy vállalat tervezte őket.
Ezenkívül nagymértékben hordozható: az FFmpeg lefordítja, futtatja és átadja tesztelési infrastruktúránkat a FATE Linuxon, Mac OS X-en, Microsoft Windowson, BSD-ken, Solaris-on stb... sokféle összeállítási környezet, géparchitektúra alatt, és konfigurációk.
Maga az FFmpeg könyvtár LGPL 2.1 licence alatt áll. Bizonyos külső könyvtárak (például a libx264) engedélyezése a licencet GPL 2-re vagy újabbra módosítja.
Az ffmpeg-android-maker szkriptet (közreműködők: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va) használtam a könyvtárak összeállításához. Ez a szkript letölti az FFmpeg forráskódját a https://www.ffmpeg.org webhelyről, és összeállítja a könyvtárat, és összeállítja az Android számára. A szkript megosztott könyvtárakat (*.so fájlok) és fejlécfájlokat (*.h fájlok) állít elő.
Az ffmpeg-android-maker fő célja a megosztott könyvtárak felkészítése az Android-projektekbe való zökkenőmentes integrációhoz. A szkript elkészíti a használni kívánt `kimeneti' könyvtárat. És nem ez az egyetlen dolog, amit ez a projekt csinál. Az ffmpeg-android-maker forráskódja az MIT licenc alatt érhető el. További részletekért tekintse meg a LICENSE.txt fájlt a https://github.com/Javernaut/ffmpeg-android-maker/ oldalon. Az eXport-it FFmpeg könyvtárak csak a libaom, libdav1d, liblame, libopus és libtwolame... de nem minden kapcsolódó könyvtárral vannak fordítva.
Az FFmpeg Java-támogatásának fejlesztéséhez és az Android 7.1–12 közötti futtatásához a Taner Sener által a https://github.com/tanersener/mobile-ffmpeg/ oldalon dokumentált MobileFFmpeg projektből indultam ki, amelyet már nem karbantartanak ... és az LGPL 3.0 licence alá tartozik ...
Végül elkészítettem egy JNI Android Studio projektet a könyvtárakkal, belefoglaltam a fájlokat és a Java támogatási kódot, és létrehoztam egy .aar Library fájlt, amelyet kiegészítő könyvtárként integráltam a meglévő projektjeimbe.
A csoportos küldés elindításához a csatorna használatához kliens használatára van szükség, valamint egy UPnP-kiszolgálóhoz a helyi hálózaton (Wi-Fi) kell hozzáférni az FFmpeg támogatással. Ennek a szervernek a listával kell válaszolnia az exportált fájlokra. Ha ez a szerver rendelkezik az FFmpeg támogatással, akkor a listaoldal felső sorának végén piros színnel kell megjelennie egy kis "Csatornaként" szövegnek. Ha a szöveg "piros", a "play" gombra kattintva úgy működik, mint az UPnP protokoll használata előtt. Ha rákattint a szövegre, az "zöld" lesz, a "lejátszás" gombra kattintva pedig a video- vagy audiofájlok kiválasztása után egy "csatorna" indul el.
A kiválasztott médiafájlokat látszólag ugyanúgy játssza le a rendszer, mint az UPnP-n keresztül, kivéve, hogy az indítási késleltetés hosszabb a további feladatok miatt. A kliensnek folyamatosan le kell játszania a médiafájlokat, hogy a cső aktív maradjon.
Az IP multicast nem működik interneten keresztül, csak helyi hálózaton működik, így főleg Wi-Fi-n. Egy multicast adatcsatornát több kliens is megoszthat egyszerre. Ön médiaadatfolyamot küld a Wi-Fi-hálózaton, és szinte szinkronban jeleníti meg ezeket az adatokat a csatlakoztatott eszközökön, csak a késleltetési késleltetés különbségével.
UPnP vagy HTTP adatfolyam esetén minden eszköz megköveteli a megjelenített videó sávszélességét, a globális sávszélesség pedig mindkét forgalom összege. Multicast streaming esetén egyetlen adatfolyamot küldünk a LAN-on, amelyet több kliens is megoszt.
Ha egy másik klienst használ a hálózaton egy csatorna elindítása után, egy további sornak kell megjelennie az ügyfél főablakában. Csak erre a sorra kattintva indul a műsor.
Más termékek, például VLC, SMplayer, ... is használható videók megjelenítésére vagy multicast csatornán terjesztett zenehallgatásra, csak az eXport-it kliensen megjelenő „UDP” URL használatával. p>
A csoportos küldési csatorna leállításának jó módja, ha leállítja azt az ügyfélen, amelyen elindította, mert ez a csatorna ott van vezérelve. A streamelt médiafájlok végéig történő lejátszásnak a műsor végét is kell jelentenie.
A csoportos küldési csatorna indításához ennek az alkalmazásnak egy adott kliensrészre van szüksége, amely megegyezik a többi naprakész termékem eXport-it kliensével. Egy futó multicast csatorna használata megtehető az alkalmazásklienssel vagy más termékekkel, mint például a VLC, SMPlayer, ... más platformokon vagy Androidon. VLC használatakor a Multicast csatorna használatának URL-címe simán más, mint az udp://@239.255.147.111:27192... csak egy plusz "@"-val. Az UDP Multicast csatornánál a médiaadatok csak egyszer kerülnek elküldésre, hogy több kliensen is megjelenjenek, de nincs valódi szinkronizálás, és a késleltetés másodpercek is lehet a puffereléstől és az eszköz jellemzőitől függően.
A multicast audio csatornát más termékekkel is meg lehet hallgatni, de az adott kliens IP multicaston keresztül küldött képeket is megjelenít. Ha konkrét fotókat szeretne zenével együtt küldeni, használja a szerver "Oldal 2" menüpontját, ahol csak a kívánt képeket jelölheti ki, egy kattintással törölje az összes kép kijelölését, majd válassza ki a kívánt képeket... p>
Minden protokollnak vannak előnyei és kellemetlenségei. Az UPnP és a Multicast csatorna csak helyi hálózaton (főleg Wi-Fi) használható, a HTTP streaming helyileg, de az interneten keresztül is működik, és kliensként webböngészőt használ. Az UPnP és a Multicast csatornán nincs biztonságos mód a hozzáférés szabályozására, és a Wi-Fi hálózathoz csatlakoztatott bármely eszköz használhatja a futó szervert. A HTTP protokoll segítségével felhasználóneveket és jelszavakat adhat meg, valamint hozzáférési kategóriákba (csoportokba) állíthat be fájlokat, korlátozva bizonyos felhasználók hozzáférését egyes médiafájlokhoz. A szerver beállításai lehetővé teszik a terjesztett fájlok korlátozását, és szükség esetén fájlonkénti kategórianév beállítását.