FFmpeg (https://www.ffmpeg.org/) është një zgjidhje e plotë, ndër-platformë për të regjistruar, konvertuar dhe transmetuar audio dhe video. FFmpeg është korniza kryesore multimediale, e aftë për të deshifruar, koduar, transkoduar, mux, demux, transmetuar, filtruar dhe luajtur pothuajse çdo gjë që njerëzit dhe makinat kanë krijuar. Ai mbështet formatet e lashta më të errëta deri në avantazhin e fundit. Nuk ka rëndësi nëse ato janë krijuar nga ndonjë komitet standardesh, komuniteti apo një korporatë.
Është gjithashtu shumë i lëvizshëm: FFmpeg përpilon, ekzekuton dhe kalon infrastrukturën tonë të testimit FATE në Linux, Mac OS X, Microsoft Windows, BSD, Solaris, etj... nën një shumëllojshmëri të gjerë mjedisesh ndërtimi, arkitekturash makinerie, dhe konfigurimet.
Vetë biblioteka FFmpeg është nën licencë LGPL 2.1. Aktivizimi i disa bibliotekave të jashtme (si libx264) e ndryshon licencën në GPL 2 ose më vonë.
Unë përdora skriptin ffmpeg-android-maker (kontribues: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va) për të përpiluar bibliotekat. Ky skript shkarkon kodin burimor të FFmpeg nga https://www.ffmpeg.org dhe ndërton bibliotekën dhe e mbledh atë për Android. Skripti prodhon biblioteka të përbashkëta (skedarët *.so) si dhe skedarë të kokës (skedarë *.h).
Fokusi kryesor i ffmpeg-android-maker është përgatitja e bibliotekave të përbashkëta për integrim pa probleme në një projekt Android. Skripti përgatit direktorinë "output" që është menduar të përdoret. Dhe nuk është e vetmja gjë që bën ky projekt. Kodi burimor i ffmpeg-android-maker është i disponueshëm nën licencën MIT. Shikoni skedarin LICENSE.txt për më shumë detaje në https://github.com/Javernaut/ffmpeg-android-maker/ Bibliotekat eXport-it FFmpeg sapo janë përpiluar me libaom, libdav1d, liblame, libopus dhe libtwolame...por jo të gjitha bibliotekat e lidhura.
Për të zhvilluar mbështetjen Java për FFmpeg dhe për ta ekzekutuar atë në Android 7.1 deri në 12, fillova nga projekti MobileFFmpeg i dokumentuar në https://github.com/tanersener/mobile-ffmpeg/ nga Taner Sener, i cili nuk mirëmbahet më ... dhe është i licencuar sipas LGPL 3.0 ...
Më në fund, përgatita një projekt JNI Android Studio me bibliotekat, përfshiva skedarë dhe kodin e mbështetjes Java dhe gjenerova një skedar .aar Library për t'u integruar si një bibliotekë shtesë në projektet e mia ekzistuese.
Për të nisur një kanal multicast kërkon përdorimin e një klienti, për të hyrë në një server UPnP në rrjetin tuaj lokal (Wi-Fi) me mbështetjen FFmpeg. Ky server duhet të përgjigjet me listën e skedarëve që eksporton. Nëse ky server ka mbështetjen FFmpeg, një tekst i vogël "Si kanal" duhet të shfaqet me të kuqe në fund të rreshtit të sipërm të faqes së listës. Kur teksti është "i kuq", klikimi në butonin "luaj" funksionon si më parë duke përdorur protokollin UPnP. Nëse klikoni mbi tekstin, ai duhet të bëhet "e gjelbër" dhe duke klikuar në butonin "luaj", pasi të zgjidhni skedarët video ose audio, duhet të fillojë një "kanal".
Skedarët e medias së zgjedhur luhen me sa duket në të njëjtën mënyrë sesa përmes UPnP, përveç se vonesa e nisjes është më e gjatë për shkak të detyrave shtesë. Duhet ta mbani këtë klient duke luajtur skedarët e medias për ta mbajtur tubin aktiv.
Multicast IP nuk funksionon përmes Internetit, funksionon vetëm në rrjetin lokal të zonës, pra kryesisht në Wi-Fi. Një kanal i të dhënave multicast mund të shpërndahet nga shumë klientë njëkohësisht. Po dërgoni një rrjedhë të dhënash mediash në rrjetin tuaj Wi-Fi dhe i shfaqni këto të dhëna në pajisjet e lidhura, pothuajse në mënyrë sinkronike, vetëm diferenca e vonesës së vonesës.
Me transmetimin UPnP ose HTTP, çdo pajisje kërkon gjerësinë e brezit të videos së shfaqur dhe gjerësia e brezit global është shuma e të dy trafikut. Me transmetimin multicast, ne dërgojmë një rrjedhë të dhënash në LAN që ndahet midis klientëve të shumtë.
Nëse përdorni një klient tjetër në rrjetin tuaj pas fillimit të një kanali, duhet të shihni një linjë shtesë në dritaren kryesore të klientit. Vetëm duke klikuar në këtë rresht duhet të fillojë shfaqja.
Është gjithashtu e mundur të përdoren produkte të tjera si VLC, SMplayer, ... për të shfaqur një video ose për të dëgjuar muzikë të shpërndarë në një kanal multicast vetëm duke përdorur URL-në "UDP" të shfaqur në klientin eXport-it. p>
Mënyra e mirë për të ndaluar një kanal multicast është ta ndaloni atë te klienti në të cilin e keni nisur sepse ky kanal kontrollohet atje. Luajtja deri në fund të skedarëve mediatikë të transmetuar duhet të japë gjithashtu fundin e shfaqjes.
Për të nisur një kanal multicast kërkon një pjesë specifike të klientit të këtij aplikacioni, njësoj si klienti eXport-it i produkteve të mia të tjera të përditësuara. Përdorimi i një kanali multicast që funksionon mund të bëhet me klientin e aplikacionit ose me produkte të tjera si VLC, SMPlayer, ... që funksionojnë në platforma të tjera ose në Android. Kur përdorni VLC, URL-ja për të përdorur një kanal Multicast ndryshon pa probleme si udp://@239.255.147.111:27192... vetëm me një "@" shtesë. Me një kanal UDP Multicast, të dhënat e medias dërgohen vetëm një herë për t'u shfaqur në klientë të shumtë, por nuk ka sinkronizim të vërtetë dhe vonesa mund të jetë sekonda në varësi të buferimit dhe karakteristikave të pajisjes.
Dëgjimi i një kanali audio multicast mund të bëhet me produkte të tjera, por klienti specifik shfaq imazhe të dërguara gjithashtu përmes multicast IP. Nëse dëshironi të dërgoni foto specifike me muzikë, mund të përdorni opsionin e menysë "Faqja 2" në server, për të zgjedhur vetëm imazhet që dëshironi, hiqni të gjitha imazhet me një klikim, pastaj zgjidhni ato që dëshironi... p>
Ka avantazhe dhe shqetësime me secilin protokoll. Kanali UPnP dhe Multicast mund të përdoren vetëm në rrjetin lokal (kryesisht Wi-Fi), transmetimi HTTP funksionon në nivel lokal, por edhe përmes internetit dhe përdor një shfletues Web si klient. Kanali UPnP dhe Multicast nuk kanë asnjë mënyrë të sigurt për të kontrolluar aksesin dhe çdo pajisje e lidhur në rrjetin Wi-Fi mund të përdorë serverin që funksionon. Me protokollin HTTP, ju mund të përcaktoni emrat e përdoruesve dhe fjalëkalimet, dhe të vendosni skedarë në kategoritë e aksesit (grupe), duke kufizuar aksesin në disa skedarë media për përdorues të veçantë. Cilësimet e serverit lejojnë të kufizojnë skedarët që shpërndahen dhe të caktojnë një emër kategorie për skedar nëse kërkohet.