FFmpeg (https://www.ffmpeg.org/) er en komplett løsning på tvers av plattformer for å ta opp, konvertere og streame lyd og video. FFmpeg er det ledende multimedierammeverket, i stand til å dekode, kode, transkode, mux, demux, streame, filtrere og spille av stort sett alt som mennesker og maskiner har skapt. Den støtter de mest obskure eldgamle formatene opp til nyskapende. Uansett om de er utformet av en standardkomité, samfunnet eller et selskap.
Den er også svært bærbar: FFmpeg kompilerer, kjører og passerer testinfrastrukturen vår FATE på tvers av Linux, Mac OS X, Microsoft Windows, BSD-ene, Solaris, etc... under en rekke byggemiljøer, maskinarkitekturer, og konfigurasjoner.
Selv FFmpeg-biblioteket er under LGPL 2.1-lisens. Aktivering av visse eksterne biblioteker (som libx264) endrer lisensen til å være GPL 2 eller nyere.
Jeg brukte ffmpeg-android-maker-skriptet (bidragsytere: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va) for å kompilere bibliotekene. Dette skriptet laster ned kildekoden til FFmpeg fra https://www.ffmpeg.org og bygger biblioteket og setter det sammen for Android. Skriptet produserer delte biblioteker (*.so-filer) så vel som hodefiler (*.h-filer).
Hovedfokuset til ffmpeg-android-maker er å forberede delte biblioteker for sømløs integrering i et Android-prosjekt. Skriptet forbereder "output"-katalogen som er ment å brukes. Og det er ikke det eneste dette prosjektet gjør. Kildekoden til ffmpeg-android-produsenten er tilgjengelig under MIT-lisensen. Se LICENSE.txt-filen for mer informasjon på https://github.com/Javernaut/ffmpeg-android-maker/ eXport-it FFmpeg-bibliotekene er bare kompilert med libaom, libdav1d, liblame, libopus og libtwolame...men ikke alle tilknyttede biblioteker.
For å utvikle Java-støtten for FFmpeg og kjøre den på Android 7.1 til 12, startet jeg fra MobileFFmpeg-prosjektet dokumentert på https://github.com/tanersener/mobile-ffmpeg/ av Taner Sener, som ikke vedlikeholdes lenger ... og er lisensiert under LGPL 3.0 ...
Til slutt forberedte jeg et JNI Android Studio-prosjekt med bibliotekene, inkluderer filer og Java-støttekode, og genererer en .aar Library-fil for å integreres som et ekstra bibliotek i mine eksisterende prosjekter.
For å starte en multicast-kanal må du bruke en klient for å få tilgang til en UPnP-server på ditt lokale nettverk (Wi-Fi) med FFmpeg-støtte. Denne serveren skal svare med listen over filene den eksporterer. Hvis denne serveren har FFmpeg-støtte, må en liten tekst "Som en kanal" vises i rødt på slutten av den øverste linjen på listesiden. Når teksten er "rød", fungerer å klikke på "spill"-knappen som før ved å bruke UPnP-protokollen. Hvis du klikker på teksten, skal den bli "grønn" og klikk på "spill av"-knappen, etter å ha valgt video- eller lydfiler, bør starte en "kanal".
Mediefilene som er valgt spilles tilsynelatende på samme måte som gjennom UPnP, bortsett fra at oppstartsforsinkelsen er lengre på grunn av tilleggsoppgaver. Du må la denne klienten spille av mediefilene for å holde pipen aktiv.
IP-multicast fungerer ikke over Internett, det fungerer bare på lokalnettverk og derfor hovedsakelig på Wi-Fi. En multicast-datakanal kan deles av mange klienter samtidig. Du sender en mediedataflyt på Wi-Fi-nettverket ditt og viser disse dataene på tilkoblede enheter, nesten synkront, bare forsinkelsesforsinkelsen.
Med UPnP- eller HTTP-streaming krever hver enhet båndbredden til videoen som vises, og den globale båndbredden er summen av begge trafikken. Med multicast-streaming sender vi én dataflyt på LAN som deles mellom flere klienter.
Hvis du bruker en annen klient på nettverket ditt etter å ha startet en kanal, bør du se en ekstra linje i klientens hovedvindu. Bare å klikke på denne linjen bør starte showet.
Det er også mulig å bruke andre produkter som VLC, SMplayer, ... for å vise en video eller lytte til musikk distribuert over en multicast-kanal bare ved å bruke "UDP"-URL-en som vises på eXport-it-klienten. p>
Den gode måten å stoppe en multicast-kanal på er å stoppe den på klienten du startet den på fordi denne kanalen styres der. Avspilling til slutten av streamede mediefiler bør også gi slutten på showet.
For å starte en multicast-kanal kreves det en spesifikk klientdel av denne applikasjonen, den samme som eXport-it-klienten til mine andre oppdaterte produkter. Å bruke en kjørende multicast-kanal kan gjøres med applikasjonsklienten eller med andre produkter som VLC, SMPlayer, ... som kjører på andre plattformer eller på Android. Når du bruker VLC, er URL-en for å bruke en Multicast-kanal jevnt forskjellig som udp://@239.255.147.111:27192... bare med et ekstra "@". Med en UDP Multicast-kanal sendes mediedataene bare én gang for å vises på flere klienter, men det er ingen reell synkronisering, og forsinkelsen kan være sekunder avhengig av bufring og enhetsegenskaper.
Å lytte til en multicast-lydkanal kan gjøres med andre produkter, men den spesifikke klienten viser bilder som også sendes over IP-multicast. Hvis du ønsker å sende spesifikke bilder med deg musikk, kan du bruke menyvalget "Side 2" på serveren, for å velge kun de bildene du ønsker, fjern markeringen av alle bildene med ett klikk, velg deretter disse du ønsker... p>
Det er fordeler og ulemper med hver protokoll. UPnP og Multicast-kanal kan bare brukes på lokalt nettverk (hovedsakelig Wi-Fi), HTTP-streaming fungerer lokalt, men også over Internett og bruker en nettleser som klient. UPnP- og Multicast-kanaler har ingen sikker måte å kontrollere tilgang på, og enhver enhet som er koblet til Wi-Fi-nettverket kan bruke den kjørende serveren. Med HTTP-protokollen kan du definere brukernavn og passord, og sette filer i tilgangskategorier (grupper), og begrense tilgangen til enkelte mediefiler for spesifikke brukere. Innstillingene til serveren tillater å begrense hvilke filer som distribueres og å angi et kategorinavn per fil om nødvendig.