FFmpeg (https://www.ffmpeg.org/) este o soluție completă, multiplatformă, pentru a înregistra, a converti și a transmite în flux audio și video. FFmpeg este cel mai important cadru multimedia, capabil de a decoda, codifica, transcoda, mux, demux, transmite în flux, filtrează și reda aproape orice au creat oamenii și mașinile. Acceptă cele mai obscure formate antice până la vârf. Indiferent dacă au fost proiectate de un comitet de standarde, de comunitate sau de o corporație.
Este, de asemenea, extrem de portabil: FFmpeg compilează, rulează și trece infrastructura noastră de testare FATE pe Linux, Mac OS X, Microsoft Windows, BSD-uri, Solaris etc... într-o mare varietate de medii de construcție, arhitecturi de mașini, și configurații.
Biblioteca FFmpeg în sine se află sub licență LGPL 2.1. Activarea anumitor biblioteci externe (cum ar fi libx264) schimbă licența la GPL 2 sau o versiune ulterioară.
Am folosit scriptul ffmpeg-android-maker (contribuitori: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va) pentru a compila bibliotecile. Acest script descarcă codul sursă al FFmpeg de pe https://www.ffmpeg.org și construiește biblioteca și o asamblează pentru Android. Scriptul produce biblioteci partajate (fișiere *.so), precum și fișiere antet (fișiere *.h).
Obiectivul principal al ffmpeg-android-maker este de a pregăti biblioteci partajate pentru o integrare perfectă într-un proiect Android. Scriptul pregătește directorul `output` care este menit să fie utilizat. Și nu este singurul lucru pe care îl face acest proiect. Codul sursă al ffmpeg-android-maker este disponibil sub licența MIT. Consultați fișierul LICENSE.txt pentru mai multe detalii pe https://github.com/Javernaut/ffmpeg-android-maker/ Bibliotecile eXport-it FFmpeg sunt doar compilate cu libaom, libdav1d, liblame, libopus și libtwolame... dar nu toate bibliotecile asociate.
Pentru a dezvolta suportul Java pentru FFmpeg și a-l rula pe Android 7.1 până la 12, am pornit de la proiectul MobileFFmpeg documentat pe https://github.com/tanersener/mobile-ffmpeg/ de către Taner Sener, care nu mai este întreținut ... și este licențiat sub LGPL 3.0 ...
În sfârșit, am pregătit un proiect JNI Android Studio cu bibliotecile, am inclus fișiere și cod de suport Java și am generat un fișier bibliotecă .aar pentru a-l integra ca bibliotecă suplimentară în proiectele mele existente.
Pentru a porni un canal multicast necesită utilizarea unui client, pentru a accesa un server UPnP din rețeaua locală (Wi-Fi) cu suport FFmpeg. Acest server ar trebui să răspundă cu lista fișierelor pe care le exportă. Dacă acest server are suport FFmpeg, un text mic „Ca canal” trebuie afișat cu roșu la sfârșitul liniei de sus a paginii listei. Când textul este „roșu”, făcând clic pe butonul „redare” funcționează ca înainte folosind protocolul UPnP. Dacă dați clic pe text, acesta ar trebui să devină „verde” și făcând clic pe butonul „redare”, după selectarea fișierelor video sau audio, ar trebui să pornească un „canal”.
Fișierele media selectate sunt redate aparent în același mod decât prin UPnP, cu excepția întârzierii de pornire mai mare din cauza sarcinilor suplimentare. Trebuie să păstrați acest client care redă fișierele media pentru a menține conducta activă.
Multicast IP nu funcționează pe Internet, funcționează numai în rețeaua locală, deci în principal pe Wi-Fi. Un canal de date multicast poate fi partajat de mai mulți clienți simultan. Trimiteți un flux de date media în rețeaua dvs. Wi-Fi și afișați aceste date pe dispozitivele conectate, aproape sincron, doar diferența de întârziere a latenței.
Cu streaming UPnP sau HTTP, fiecare dispozitiv necesită lățimea de bandă a videoclipului afișat, iar lățimea de bandă globală este suma ambelor trafic. Cu streaming multicast, trimitem un flux de date pe LAN care este partajat între mai mulți clienți.
Dacă folosiți un alt client în rețea după ce ați început un canal, ar trebui să vedeți o linie suplimentară în fereastra principală a clientului. Doar făcând clic pe această linie ar trebui să înceapă emisiunea.
De asemenea, este posibil să utilizați alte produse precum VLC, SMplayer, ... pentru a afișa un videoclip sau pentru a asculta muzică distribuită pe un canal multicast folosind doar adresa URL „UDP” afișată pe clientul eXport-it. p>
Modul bun de a opri un canal multicast este să îl opriți pe clientul pe care l-ați pornit, deoarece acest canal este controlat acolo. Redarea până la sfârșitul fișierelor media transmise în flux ar trebui să dea și sfârșitul emisiunii.
Pentru a porni un canal multicast necesită o anumită parte client a acestei aplicații, la fel ca clientul eXport-it al celorlalte produse mele actualizate. Utilizarea unui canal multicast care rulează se poate face cu clientul aplicației sau cu alte produse precum VLC, SMPlayer, ... rulând pe alte platforme sau pe Android. Când utilizați VLC, adresa URL pentru a utiliza un canal Multicast este ușor diferită, cum ar fi udp://@239.255.147.111:27192... doar cu un „@” în plus. Cu un canal UDP Multicast, datele media sunt trimise o singură dată pentru a fi afișate pe mai mulți clienți, dar nu există o sincronizare reală, iar întârzierea poate fi de secunde, în funcție de tamponarea și de caracteristicile dispozitivului.
Ascultarea unui canal audio multicast se poate face cu alte produse, dar clientul specific arată imagini trimise și prin IP multicast. Dacă doriți să trimiteți anumite fotografii cu muzica dvs., puteți utiliza opțiunea de meniu „Pagina 2” de pe server, pentru a selecta doar imaginile dorite, deselectați toate imaginile cu un singur clic, apoi selectați pe acestea pe care le doriți... p>
Există avantaje și inconveniente cu fiecare protocol. Canalul UPnP și Multicast poate fi folosit doar în rețeaua locală (în principal Wi-Fi), streaming HTTP funcționează local, dar și prin Internet și utilizează un browser web ca client. Canalul UPnP și Multicast nu au o modalitate sigură de a controla accesul și orice dispozitiv conectat la rețeaua Wi-Fi poate folosi serverul care rulează. Cu protocolul HTTP, puteți defini nume de utilizator și parole și puteți seta fișiere în categorii de acces (grupuri), limitând accesul la unele fișiere media pentru anumiți utilizatori. Setările serverului permit limitarea fișierelor care sunt distribuite și setarea unui nume de categorie pentru fiecare fișier, dacă este necesar.