FFmpeg (https://www.ffmpeg.org/) je kompletné multiplatformové riešenie na nahrávanie, konverziu a streamovanie zvuku a videa. FFmpeg je popredný multimediálny rámec, ktorý je schopný dekódovať, kódovať, transkódovať, muxovať, demuxovať, streamovať, filtrovať a prehrávať takmer čokoľvek, čo ľudia a stroje vytvorili. Podporuje najobskúrnejšie starodávne formáty až po špičkové. Bez ohľadu na to, či ich navrhol nejaký výbor pre štandardy, komunita alebo korporácia.
Je tiež vysoko prenosný: FFmpeg kompiluje, spúšťa a odovzdáva našu testovaciu infraštruktúru FATE naprieč Linuxom, Mac OS X, Microsoft Windows, BSD, Solaris, atď... v rámci širokej škály stavebných prostredí, strojových architektúr, a konfigurácie.
Samotná knižnica FFmpeg je pod licenciou LGPL 2.1. Povolenie určitých externých knižníc (napríklad libx264) zmení licenciu na GPL 2 alebo novšiu.
Na zostavenie knižníc som použil skript ffmpeg-android-maker (prispievatelia: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va). Tento skript stiahne zdrojový kód FFmpeg z https://www.ffmpeg.org a zostaví knižnicu a zostaví ju pre Android. Skript vytvára zdieľané knižnice (súbory *.so), ako aj hlavičkové súbory (súbory *.h).
Hlavným cieľom ffmpeg-android-maker je pripraviť zdieľané knižnice na bezproblémovú integráciu do projektu Android. Skript pripraví `výstupný` adresár, ktorý sa má použiť. A nie je to jediné, čo tento projekt robí. Zdrojový kód ffmpeg-android-maker je dostupný pod licenciou MIT. Ďalšie podrobnosti nájdete v súbore LICENSE.txt na https://github.com/Javernaut/ffmpeg-android-maker/ Knižnice eXport-it FFmpeg sú práve skompilované s libaom, libdav1d, liblame, libopus a libtwolame...ale nie so všetkými súvisiacimi knižnicami.
Na vývoj podpory Java pre FFmpeg a jej spustenie v systéme Android 7.1 až 12 som začal z projektu MobileFFmpeg zdokumentovaného na https://github.com/tanersener/mobile-ffmpeg/ od Tanera Senera, ktorý sa už neudržiava ... a je licencovaný podľa LGPL 3.0 ...
Nakoniec som pripravil projekt JNI Android Studio s knižnicami, zahŕňal súbory a podporný kód Java a vygeneroval súbor .aar Library, ktorý som integroval ako ďalšiu knižnicu do mojich existujúcich projektov.
Na spustenie viacsmerového kanála je potrebné použiť klienta na prístup k serveru UPnP vo vašej lokálnej sieti (Wi-Fi) s podporou FFmpeg. Tento server by mal odpovedať so zoznamom súborov, ktoré exportuje. Ak má tento server podporu FFmpeg, malý text „Ako kanál“ musí byť zobrazený červenou farbou na konci horného riadku stránky zoznamu. Keď je text „červený“, kliknutie na tlačidlo „prehrať“ funguje ako pred použitím protokolu UPnP. Ak kliknete na text, mal by byť „zelený“ a kliknutím na tlačidlo „prehrať“ po výbere video alebo audio súborov by sa mal spustiť „kanál“.
Vybraté mediálne súbory sa prehrávajú zjavne rovnakým spôsobom ako cez UPnP, s výnimkou toho, že oneskorenie spustenia je dlhšie v dôsledku dodatočných úloh. Musíte nechať tohto klienta prehrávať mediálne súbory, aby kanál zostal aktívny.
IP multicast nefunguje cez internet, funguje iba v lokálnej sieti, teda hlavne cez Wi-Fi. Dátový kanál multicast môže byť súčasne zdieľaný mnohými klientmi. Odosielate tok mediálnych údajov vo svojej sieti Wi-Fi a zobrazujete tieto údaje na pripojených zariadeniach takmer synchrónne, len s rozdielom oneskorenia latencie.
Pri streamovaní UPnP alebo HTTP vyžaduje každé zariadenie šírku pásma zobrazeného videa a globálna šírka pásma je súčtom oboch prenosov. Pri multicastovom streamovaní posielame jeden dátový tok v sieti LAN, ktorý zdieľa viacero klientov.
Ak po spustení kanála v sieti používate iného klienta, v hlavnom okne klienta by ste mali vidieť ďalší riadok. Jednoduchým kliknutím na tento riadok by sa mala spustiť show.
Je tiež možné použiť iné produkty ako VLC, SMplayer, ... na premietanie videa alebo počúvanie hudby distribuovanej cez multicastový kanál pomocou adresy URL „UDP“ zobrazenej na klientovi eXport-it.
p>Dobrým spôsobom, ako zastaviť kanál multicast, je zastaviť ho na klientovi, na ktorom ste ho spustili, pretože tento kanál je ovládaný tam. Prehrávanie až do konca streamovaných mediálnych súborov by tiež malo znamenať koniec relácie.
Na spustenie multicastového kanála je potrebná špecifická klientska časť tejto aplikácie, rovnaká ako klient eXport-it mojich ostatných aktuálnych produktov. Ak chcete použiť spustený kanál multicast, môžete použiť klienta aplikácie alebo iné produkty ako VLC, SMPlayer, ... bežiace na iných platformách alebo na Androide. Pri používaní VLC je adresa URL na použitie kanála Multicast úplne odlišná, napríklad udp://@239.255.147.111:27192... len s dodatočným znakom „@“. S kanálom UDP Multicast sa mediálne údaje odosielajú iba raz, aby sa zobrazili na viacerých klientoch, ale neexistuje žiadna skutočná synchronizácia a oneskorenie môže byť niekoľko sekúnd v závislosti od vyrovnávacej pamäte a vlastností zariadenia.
Počúvanie zvukového kanála multicast je možné vykonať pomocou iných produktov, ale konkrétny klient zobrazuje obrázky odosielané aj cez multicast IP. Ak chcete poslať konkrétne fotografie s hudbou, môžete použiť možnosť ponuky „Strana 2“ na serveri, aby ste vybrali iba požadované obrázky, jedným kliknutím zrušte výber všetkých obrázkov a potom vyberte tie, ktoré chcete... p>
Každý protokol má svoje výhody a nevýhody. Kanál UPnP a Multicast je možné použiť iba v lokálnej sieti (hlavne Wi-Fi), streamovanie HTTP funguje lokálne, ale aj cez internet a ako klienta použite webový prehliadač. UPnP a kanál Multicast nemajú žiadny bezpečný spôsob kontroly prístupu a akékoľvek zariadenie pripojené k sieti Wi-Fi môže používať spustený server. Pomocou protokolu HTTP môžete definovať používateľské mená a heslá a nastaviť súbory v prístupových kategóriách (skupinách), čím obmedzíte prístup k niektorým mediálnym súborom pre konkrétnych používateľov. Nastavenia servera umožňujú obmedziť distribuované súbory a v prípade potreby nastaviť názov kategórie pre súbor.