FFmpeg (https://www.ffmpeg.org/) on täydellinen, monialustainen ratkaisu äänen ja videon tallentamiseen, muuntamiseen ja suoratoistoon. FFmpeg on johtava multimediakehys, joka pystyy purkamaan, koodaamaan, transkoodaamaan, muokkaamaan, purkamaan, suoratoistamaan, suodattamaan ja toistamaan melkein mitä tahansa, mitä ihmiset ja koneet ovat luoneet. Se tukee kaikkein hämäreimpiä vanhoja formaatteja aina huippuunsa asti. Ei ole väliä, ovatko ne jonkin standardointikomitean, yhteisön tai yrityksen suunnittelemia.
Se on myös erittäin kannettava: FFmpeg kokoaa, suorittaa ja läpäisee testausinfrastruktuurimme FATE Linuxissa, Mac OS X:ssä, Microsoft Windowsissa, BSD:issä, Solarisissa jne... monenlaisissa rakennusympäristöissä, konearkkitehtuureissa, ja kokoonpanot.
Fmpeg-kirjasto itsessään on LGPL 2.1 -lisenssin alainen. Tiettyjen ulkoisten kirjastojen (kuten libx264) käyttöönotto muuttaa lisenssin GPL 2:ksi tai uudemmaksi.
Käytin kirjastojen kokoamiseen ffmpeg-android-maker-skriptiä (avustajat: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va). Tämä komentosarja lataa FFmpeg-lähdekoodin osoitteesta https://www.ffmpeg.org ja rakentaa kirjaston ja kokoaa sen Androidille. Skripti tuottaa jaettuja kirjastoja (*.so-tiedostoja) sekä otsikkotiedostoja (*.h-tiedostoja).
Fffmpeg-android-makerin päätavoitteena on valmistella jaettuja kirjastoja, jotta ne voidaan integroida saumattomasti Android-projektiin. Komentosarja valmistelee käytettäväksi tarkoitettua "tulostus"-hakemistoa. Eikä se ole ainoa asia, jonka tämä projekti tekee. ffmpeg-android-makerin lähdekoodi on saatavilla MIT-lisenssillä. Katso lisätietoja LICENSE.txt-tiedostosta osoitteessa https://github.com/Javernaut/ffmpeg-android-maker/ eXport-it FFmpeg -kirjastot on vain käännetty libaom-, libdav1d-, liblame-, libopus- ja libtwolame-kirjastoilla...mutta ei kaikkia niihin liittyviä kirjastoja.
Kehittääkseni Java-tuen FFmpegille ja käyttääkseni sitä Android 7.1–12 -käyttöjärjestelmissä aloitin Taner Senerin MobileFFmpeg-projektista, joka dokumentoitiin osoitteessa https://github.com/tanersener/mobile-ffmpeg/ ja jota ei enää ylläpidetä. ... ja sen käyttöoikeus on LGPL 3.0 ...
Lopuksi valmistelin JNI Android Studio -projektin kirjastojen kanssa, sisällytin tiedostot ja Java-tukikoodin ja loin .aar Library -tiedoston, joka voidaan integroida lisäkirjastoksi olemassa oleviin projekteihini.
Multicast-kanavan käynnistäminen edellyttää asiakkaan käyttämistä, paikallisverkon (Wi-Fi) UPnP-palvelimen käyttöä FFmpeg-tuen avulla. Tämän palvelimen pitäisi vastata viemiinsä tiedostoihin luettelolla. Jos tällä palvelimella on FFmpeg-tuki, pieni teksti "Kanavana" on näytettävä punaisena luettelosivun ylärivin lopussa. Kun teksti on "punainen", "play"-painikkeen napsauttaminen toimii kuten ennen UPnP-protokollaa. Jos napsautat tekstiä, sen pitäisi muuttua "vihreäksi" ja "toisto"-painikkeen napsauttaminen video- tai äänitiedostojen valinnan jälkeen käynnistää "kanavan".
Valitut mediatiedostot toistetaan ilmeisesti samalla tavalla kuin UPnP:n kautta, paitsi että käynnistysviive on pidempi lisätehtävien vuoksi. Sinun on pidettävä tämä asiakas toistamassa mediatiedostoja, jotta putki pysyy aktiivisena.
IP-monilähetys ei toimi Internetissä, se toimii vain lähiverkossa, eli pääasiassa Wi-Fi-verkossa. Monilähetysdatakanava voidaan jakaa useille asiakkaille samanaikaisesti. Lähetät mediatietovirran Wi-Fi-verkkoosi ja näytät nämä tiedot yhdistetyissä laitteissa lähes synkronisesti, vain viiveviiveen eron verran.
UPnP- tai HTTP-suoratoistoa käytettäessä jokainen laite vaatii näytettävän videon kaistanleveyden, ja yleinen kaistanleveys on molempien liikenteen summa. Multicast-suoratoistossa lähetämme yhden tietovirran lähiverkossa, joka jaetaan useiden asiakkaiden kesken.
Jos käytät verkossa toista asiakasohjelmaa kanavan aloittamisen jälkeen, sinun pitäisi nähdä ylimääräinen rivi asiakkaan pääikkunassa. Esityksen pitäisi alkaa napsauttamalla tätä riviä.
On myös mahdollista käyttää muita tuotteita, kuten VLC:tä, SMplayeria, ... videon näyttämiseen tai monilähetyskanavan kautta jaetun musiikin kuunteluun käyttämällä eXport-it-asiakassovelluksessa näkyvää UDP-URL-osoitetta. p>
Hyvä tapa pysäyttää monilähetyskanava on pysäyttää se siinä asiakkaassa, jolla aloitit sen, koska kanavaa ohjataan siellä. Suoratoistettujen mediatiedostojen loppuun toistamisen pitäisi myös antaa ohjelman loppu.
Monilähetyskanavan käynnistäminen vaatii tämän sovelluksen tietyn asiakasosan, joka on sama kuin muiden ajantasaisten tuotteideni eXport-it-asiakasohjelma. Käynnissä olevan multicast-kanavan käyttäminen voidaan tehdä sovellusasiakkaalla tai muilla tuotteilla, kuten VLC, SMPlayer, ... muilla alustoilla tai Androidilla. Käytettäessä VLC:tä monilähetyskanavan URL-osoite on sujuvasti erilainen, kuten udp://@239.255.147.111:27192... vain ylimääräisellä @-merkillä. UDP Multicast -kanavalla mediatiedot lähetetään vain kerran näytettäväksi useilla asiakkailla, mutta todellista synkronointia ei ole, ja viive voi olla sekunteja puskuroinnin ja laitteen ominaisuuksien mukaan.
Audimonilähetyskanavan kuuntelu voidaan tehdä muilla tuotteilla, mutta tietty asiakas näyttää myös IP-monilähetyksen kautta lähetetyt kuvat. Jos haluat lähettää tiettyjä kuvia musiikin mukana, voit käyttää palvelimen "Sivu 2" -valikkovaihtoehtoa valitaksesi vain haluamasi kuvat, poistaa kaikkien kuvien valinnan yhdellä napsautuksella ja valita sitten haluamasi... p>
Jokaisella protokollalla on etuja ja haittoja. UPnP- ja Multicast-kanavaa voidaan käyttää vain paikallisverkossa (pääasiassa Wi-Fi), HTTP-suoratoisto toimii paikallisesti, mutta myös Internetin kautta ja käyttää verkkoselainta asiakkaana. UPnP:llä ja Multicast-kanavalla ei ole turvallista tapaa hallita pääsyä, ja mikä tahansa Wi-Fi-verkkoon yhdistetty laite voi käyttää käynnissä olevaa palvelinta. HTTP-protokollan avulla voit määrittää käyttäjätunnuksia ja salasanoja sekä asettaa tiedostoja käyttöluokkiin (ryhmiin) rajoittaen tiettyjen käyttäjien pääsyä joihinkin mediatiedostoihin. Palvelimen asetukset sallivat jaettavien tiedostojen rajoittamisen ja tarvittaessa tiedostokohtaisen kategorian nimen asettamisen.