back

eXport-it FFmpeg

Šta je FFmpeg biblioteka?

FFmpeg (https://www.ffmpeg.org/) je kompletno, višeplatformsko rješenje za snimanje, pretvaranje i strimovanje audio i video zapisa. FFmpeg je vodeći multimedijalni okvir, sposoban da dekodira, kodira, transkodira, mux, demux, strimuje, filtrira i reprodukuje skoro sve što su ljudi i mašine stvorili. Podržava najnejasnije drevne formate do najsavremenijih. Bez obzira da li ih je dizajnirao neki odbor za standarde, zajednica ili korporacija.

Također je vrlo prenosiv: FFmpeg kompilira, pokreće i prosljeđuje našu infrastrukturu za testiranje FATE preko Linuxa, Mac OS X, Microsoft Windowsa, BSD-a, Solarisa, itd... pod širokim spektrom okruženja za izgradnju, arhitektura mašina, i konfiguracije.

Sama biblioteka FFmpeg je pod LGPL 2.1 licencom. Omogućavanje određenih vanjskih biblioteka (kao što je libx264) mijenja licencu u GPL 2 ili noviju verziju.

Kako je ova biblioteka integrisana u Android aplikaciju

Koristio sam skriptu ffmpeg-android-maker (suradnici: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va) za kompajliranje biblioteka. Ova skripta preuzima izvorni kod FFmpeg sa https://www.ffmpeg.org i gradi biblioteku i sklapa je za Android. Skripta proizvodi dijeljene biblioteke (*.so datoteke) kao i datoteke zaglavlja (*.h datoteke).

Glavni fokus ffmpeg-android-maker-a je priprema zajedničkih biblioteka za besprijekornu integraciju u Android projekt. Skripta priprema `izlazni` direktorij koji je namijenjen za korištenje. I to nije jedina stvar koju ovaj projekat radi. Izvorni kod ffmpeg-android-maker-a dostupan je pod MIT licencom. Pogledajte LICENSE.txt fajl za više detalja na https://github.com/Javernaut/ffmpeg-android-maker/ eXport-it FFmpeg biblioteke su samo kompajlirane sa libaom, libdav1d, liblame, libopus i libtwolame...ali ne sa svim povezanim bibliotekama.

Da bih razvio podršku za Java za FFmpeg i pokrenuo je na Androidu 7.1 do 12, počeo sam od projekta MobileFFmpeg koji je dokumentiran na https://github.com/tanersener/mobile-ffmpeg/ od strane Tanera Senera, koji se više ne održava ... i licenciran je pod LGPL 3.0 ...

Konačno, pripremio sam JNI Android Studio projekat sa bibliotekama, uključio fajlove i Java kod za podršku i generisao .aar fajl biblioteke da se integriše kao dodatna biblioteka u moje postojeće projekte.


Kako pokrenuti multicast kanal

Da biste pokrenuli višestruki kanal, potrebno je koristiti klijenta za pristup UPnP serveru na vašoj lokalnoj mreži (Wi-Fi) uz podršku FFmpeg. Ovaj server bi trebao odgovoriti sa listom datoteka koje izvozi. Ako ovaj server ima podršku za FFmpeg, mali tekst "Kao kanal" mora biti prikazan crvenom bojom na kraju gornjeg reda stranice liste. Kada je tekst "crven", klik na dugme "play" radi kao i do sada korišćenjem UPnP protokola. Ako kliknete na tekst, on bi trebao postati "zelen" i klikom na dugme "play", nakon odabira video ili audio datoteka, trebao bi pokrenuti "kanal".

Odabrani medijski fajlovi se reproduciraju očigledno na isti način kao putem UPnP-a, osim što je kašnjenje pokretanja duže zbog dodatnih zadataka. Morate zadržati ovog klijenta da reproducira medijske fajlove da bi kanal ostao aktivan.

Korišćenje ove cijevi na drugim uređajima

IP multicast ne radi preko Interneta, radi samo na lokalnoj mreži, dakle uglavnom na Wi-Fi. Multicast kanal podataka može dijeliti više klijenata istovremeno. Šaljete tok medijskih podataka na svoju Wi-Fi mrežu i prikazujete te podatke na povezanim uređajima, skoro sinhrono, samo razlika u kašnjenju.

Sa UPnP ili HTTP streamingom, svaki uređaj zahtijeva propusni opseg prikazanog videa, a globalna propusnost je zbir oba prometa. Uz multicast streaming, šaljemo jedan tok podataka na LAN koji se dijeli između više klijenata.

Ako koristite drugog klijenta na vašoj mreži nakon pokretanja kanala, trebali biste vidjeti dodatnu liniju u glavnom prozoru klijenta. Samo klik na ovu liniju trebao bi pokrenuti emisiju.

Takođe je moguće koristiti druge proizvode kao što su VLC, SMplayer, ... za prikazivanje video zapisa ili slušanje muzike distribuirane preko multicast kanala samo koristeći "UDP" URL prikazan na eXport-it klijentu.

p>

Za zaustavljanje multicast kanala

Dobar način za zaustavljanje višestrukog kanala je da ga zaustavite na klijentu na kojem ste ga pokrenuli jer se ovaj kanal tamo kontrolira. Reprodukcija do kraja strimovanih medijskih fajlova bi takođe trebalo da dovede do kraja emisije.

Praktična razmatranja

Za pokretanje multicast kanala potreban je određeni klijentski dio ove aplikacije, isti kao i eXport-it klijent mojih ostalih ažuriranih proizvoda. Korištenje pokrenutog multicast kanala može se učiniti sa klijentom aplikacije ili sa drugim proizvodima kao što su VLC, SMPlayer, ... koji rade na drugim platformama ili na Androidu. Kada koristite VLC, URL za korišćenje višestrukog kanala se glatko razlikuje kao udp://@239.255.147.111:27192... samo sa dodatnim "@". Sa UDP Multicast kanalom, medijski podaci se šalju samo jednom da bi se prikazali na više klijenata, ali nema stvarne sinhronizacije, a kašnjenje može trajati nekoliko sekundi u zavisnosti od baferovanja i karakteristika uređaja.

Slušanje audio multicast kanala može se obaviti i na drugim proizvodima, ali određeni klijent prikazuje slike također poslane preko IP multicast. Ako želite da pošaljete određene fotografije sa svojom muzikom, možete koristiti opciju menija "Stranica 2" na serveru, da odaberete samo slike koje želite, poništite odabir svih slika jednim klikom, a zatim odaberite ove koje želite...

Postoje prednosti i neugodnosti kod svakog protokola. UPnP i Multicast kanal se mogu koristiti samo na lokalnoj mreži (uglavnom Wi-Fi), HTTP streaming radi lokalno, ali i preko Interneta i koristi web pretraživač kao klijent. UPnP i Multicast kanal nemaju siguran način kontrole pristupa, a bilo koji uređaj povezan na Wi-Fi mrežu može koristiti pokrenuti server. Uz HTTP protokol možete definirati korisnička imena i lozinke, te postaviti datoteke u pristupne kategorije (grupe), ograničavajući pristup nekim medijskim datotekama za određene korisnike. Postavke servera dozvoljavaju ograničavanje datoteka koje se distribuiraju i postavljanje naziva kategorije po fajlu ako je potrebno.

back