eXport-it, android  UPnP Client/Server

eXport-it android UPnP/HTTP Client/Server

Android


een Android-file sharing applicatie voor video, audio, afbeeldingen en ebooks




eXport-it FFmpeg



Wat is de FFmpeg-bibliotheek?

FFmpeg (https://www.ffmpeg.org/) is een complete, platformonafhankelijke oplossing voor het opnemen, converteren en streamen van audio en video. FFmpeg is het toonaangevende multimediaframework dat in staat is om vrijwel alles te decoderen, coderen, transcoderen, mux, demux, streamen, filteren en afspelen van vrijwel alles wat mensen en machines hebben gemaakt. Het ondersteunt de meest obscure oude formaten tot op het snijvlak. Het maakt niet uit of ze zijn ontworpen door een normcommissie, de gemeenschap of een bedrijf.

Het is ook zeer draagbaar: FFmpeg compileert, voert uit en geeft onze testinfrastructuur FATE door voor Linux, Mac OS X, Microsoft Windows, de BSD's, Solaris, enz... onder een grote verscheidenheid aan build-omgevingen, machine-architecturen, en configuraties.

De FFmpeg-bibliotheek zelf valt onder de LGPL 2.1-licentie. Door bepaalde externe bibliotheken in te schakelen (zoals libx264) wordt de licentie gewijzigd in GPL 2 of hoger.

Hoe is deze bibliotheek geïntegreerd in de Android-applicatie

Ik heb het script ffmpeg-android-maker (medewerkers: Alexander Berezjnoi Javernaut + codacy-badger Codacy Badger + A2va) gebruikt om de bibliotheken te compileren. Dit script downloadt de broncode van FFmpeg van https://www.ffmpeg.org en bouwt de bibliotheek en assembleert deze voor Android. Het script produceert gedeelde bibliotheken (*.so-bestanden) en header-bestanden (*.h-bestanden).

De belangrijkste focus van ffmpeg-android-maker is het voorbereiden van gedeelde bibliotheken voor naadloze integratie in een Android-project. Het script bereidt de `output`-directory voor die moet worden gebruikt. En het is niet het enige wat dit project doet. De broncode van de ffmpeg-android-maker is beschikbaar onder de MIT-licentie. Zie het LICENSE.txt-bestand voor meer details op https://github.com/Javernaut/ffmpeg-android-maker/ De eXport-it FFmpeg-bibliotheken zijn gewoon gecompileerd met libaom, libdav1d, liblame, libopus en libtwolame... maar niet alle bijbehorende bibliotheken.

Om de Java-ondersteuning voor FFmpeg te ontwikkelen en uit te voeren op Android 7.1 tot 12, ben ik begonnen met het MobileFFmpeg-project dat is gedocumenteerd op https://github.com/tanersener/mobile-ffmpeg/ door Taner Sener, dat niet meer wordt onderhouden ... en is gelicentieerd onder LGPL 3.0 ...

Ten slotte heb ik een JNI Android Studio-project met de bibliotheken voorbereid, bestanden en Java-ondersteuningscode toegevoegd en een .aar-bibliotheekbestand gegenereerd om als extra bibliotheek in mijn bestaande projecten te integreren.


Een multicast-kanaal starten

Om een ​​multicast-kanaal te starten, moet u een client gebruiken om toegang te krijgen tot een UPnP-server op uw lokale netwerk (Wi-Fi) met de FFmpeg-ondersteuning. Deze server zou moeten antwoorden met de lijst van de bestanden die hij exporteert. Als deze server de FFmpeg-ondersteuning heeft, moet een kleine tekst "As a channel" in rood worden weergegeven aan het einde van de bovenste regel van de lijstpagina. Als de tekst "rood" is, werkt het klikken op de "play"-knop zoals voorheen bij het gebruik van het UPnP-protocol. Als u op de tekst klikt, moet deze "groen" worden en als u op de "play"-knop klikt, na het selecteren van video- of audiobestanden, zou een "kanaal" moeten starten.

De geselecteerde mediabestanden worden schijnbaar op dezelfde manier afgespeeld als via UPnP, behalve dat de opstartvertraging langer is vanwege extra taken. U moet deze client de mediabestanden laten afspelen om de pipe actief te houden.

Deze pijp gebruiken op andere apparaten

IP-multicast werkt niet via internet, het werkt alleen op Local Area Network, dus voornamelijk op Wi-Fi. Een multicast-datakanaal kan door meerdere clients tegelijk worden gedeeld. U verzendt een mediagegevensstroom op uw wifi-netwerk en toont deze gegevens op aangesloten apparaten, bijna synchroon, alleen het verschil in latentievertraging.

Bij UPnP- of HTTP-streaming heeft elk apparaat de bandbreedte van de getoonde video nodig en is de globale bandbreedte de som van beide verkeer. Met multicast-streaming sturen we één gegevensstroom over het LAN die wordt gedeeld tussen meerdere clients.

Als je een andere client op je netwerk gebruikt nadat je een kanaal hebt gestart, zou je een extra regel in het hoofdvenster van de client moeten zien. Gewoon op deze regel klikken, zou de show moeten starten.

Het is ook mogelijk om andere producten zoals VLC, SMplayer, ... te gebruiken om een ​​video te laten zien of om naar muziek te luisteren die via een multicast-kanaal wordt verspreid door gewoon de "UDP"-URL te gebruiken die wordt weergegeven op de eXport-it-client.

p>

Een multicast-kanaal stoppen

De goede manier om een ​​multicast-kanaal te stoppen, is door het te stoppen op de client waarop u het hebt gestart, omdat dit kanaal daar wordt beheerd. Het afspelen tot het einde van gestreamde mediabestanden zou ook het einde van de show moeten betekenen.