back

eXport-it FFmpeg

Cos'è la libreria FFmpeg?

FFmpeg (https://www.ffmpeg.org/) è una soluzione completa e multipiattaforma per registrare, convertire e trasmettere in streaming audio e video. FFmpeg è il framework multimediale leader, in grado di decodificare, codificare, transcodificare, mux, demux, stream, filtrare e riprodurre praticamente tutto ciò che gli esseri umani e le macchine hanno creato. Supporta i formati antichi più oscuri fino al tagliente. Non importa se sono stati progettati da un comitato per gli standard, dalla comunità o da un'azienda.

È anche altamente portatile: FFmpeg compila, esegue e supera la nostra infrastruttura di test FATE su Linux, Mac OS X, Microsoft Windows, BSD, Solaris, ecc... in un'ampia varietà di ambienti di costruzione, architetture di macchine, e configurazioni.

La libreria FFmpeg stessa è sotto licenza LGPL 2.1. L'abilitazione di alcune librerie esterne (come libx264) cambia la licenza in GPL 2 o successiva.

Come si integra questa libreria nell'applicazione Android

Ho usato lo script ffmpeg-android-maker (contribuenti: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va) per compilare le librerie. Questo script scarica il codice sorgente di FFmpeg da https://www.ffmpeg.org e crea la libreria e la assembla per Android. Lo script produce librerie condivise (file *.so) e file di intestazione (file *.h).

L'obiettivo principale di ffmpeg-android-maker è preparare librerie condivise per una perfetta integrazione in un progetto Android. Lo script prepara la directory `output` che deve essere utilizzata. E non è l'unica cosa che fa questo progetto. Il codice sorgente di ffmpeg-android-maker è disponibile con la licenza MIT. Consulta il file LICENSE.txt per maggiori dettagli su https://github.com/Javernaut/ffmpeg-android-maker/ Le librerie eXport-it FFmpeg sono semplicemente compilate con libaom, libdav1d, liblame, libopus e libtwolame... ma non tutte le librerie associate.

Per sviluppare il supporto Java per FFmpeg ed eseguirlo su Android da 7.1 a 12, sono partito dal progetto MobileFFmpeg documentato su https://github.com/tanersener/mobile-ffmpeg/ da Taner Sener, che non viene più mantenuto ... ed è concesso in licenza in base a LGPL 3.0 ...

Infine, ho preparato un progetto JNI Android Studio con le librerie, ho incluso file e codice di supporto Java e ho generato un file di libreria .aar da integrare come libreria aggiuntiva nei miei progetti esistenti.


Come avviare un canale multicast

Per avviare un canale multicast è necessario utilizzare un client, per accedere a un server UPnP sulla rete locale (Wi-Fi) con il supporto FFmpeg. Questo server dovrebbe rispondere con l'elenco dei file che esporta. Se questo server ha il supporto FFmpeg, un piccolo testo "Come canale" deve essere visualizzato in rosso alla fine della riga superiore della pagina dell'elenco. Quando il testo è "rosso", fare clic sul pulsante "riproduci" funziona come prima di utilizzare il protocollo UPnP. Se fai clic sul testo, questo dovrebbe diventare "verde" e facendo clic sul pulsante "riproduci", dopo aver selezionato i file video o audio, dovrebbe avviare un "canale".

I file multimediali selezionati vengono riprodotti apparentemente allo stesso modo rispetto a UPnP, tranne per il fatto che il ritardo di avvio è più lungo a causa di attività aggiuntive. Devi mantenere questo client che riproduce i file multimediali per mantenere attiva la pipe.

Utilizzo di questa pipe su altri dispositivi

Il multicast IP non funziona su Internet, funziona solo su rete locale quindi principalmente su Wi-Fi. Un canale dati multicast può essere condiviso da più client contemporaneamente. Stai inviando un flusso di dati multimediali sulla tua rete Wi-Fi e mostri questi dati sui dispositivi connessi, quasi in modo sincrono, solo la differenza di ritardo di latenza.

Con lo streaming UPnP o HTTP, ogni dispositivo richiede la larghezza di banda del video mostrato e la larghezza di banda globale è la somma di entrambi i traffico. Con lo streaming multicast, inviamo un flusso di dati sulla LAN che è condiviso tra più client.

Se utilizzi un altro client sulla tua rete dopo aver avviato un canale, dovresti vedere una riga aggiuntiva nella finestra principale del client. Basta fare clic su questa riga per avviare lo spettacolo.

È anche possibile utilizzare altri prodotti come VLC, SMplayer, ... per mostrare un video o ascoltare musica distribuita su un canale multicast semplicemente utilizzando l'URL "UDP" mostrato sul client eXport-it.

Per interrompere un canale multicast

Il buon modo per interrompere un canale multicast è interromperlo sul client su cui è stato avviato perché questo canale è controllato lì. Anche la riproduzione fino alla fine dei file multimediali in streaming dovrebbe dare la fine dello spettacolo.

Considerazioni pratiche

Per avviare un canale multicast è necessaria una parte client specifica di questa applicazione, la stessa del client eXport-it dei miei altri prodotti aggiornati. L'utilizzo di un canale multicast in esecuzione può essere fatto con il client dell'applicazione o con altri prodotti come VLC, SMPlayer, ... in esecuzione su altre piattaforme o su Android. Quando si utilizza VLC, l'URL per utilizzare un canale multicast è uniformemente diverso come udp://@239.255.147.111:27192... solo con un "@" in più. Con un canale UDP Multicast i dati multimediali vengono inviati una sola volta per essere mostrati su più client, ma non c'è una vera sincronizzazione e il ritardo può essere di secondi a seconda del buffering e delle caratteristiche del dispositivo.

L'ascolto di un canale multicast audio può essere effettuato con altri prodotti, ma il client specifico mostra anche le immagini inviate tramite multicast IP. Se vuoi inviare foto specifiche con la tua musica, puoi utilizzare l'opzione del menu "Pagina 2" sul server, per selezionare solo le immagini che desideri, deseleziona tutte le immagini con un clic, quindi seleziona quelle che desideri...

Ci sono vantaggi e inconvenienti con ogni protocollo. Il canale UPnP e Multicast può essere utilizzato solo su rete locale (principalmente Wi-Fi), lo streaming HTTP funziona localmente ma anche su Internet e utilizza un browser Web come client. I canali UPnP e Multicast non hanno un modo sicuro per controllare l'accesso e qualsiasi dispositivo connesso alla rete Wi-Fi può utilizzare il server in esecuzione. Con il protocollo HTTP è possibile definire nomi utente e password e impostare file in categorie di accesso (gruppi), limitando l'accesso ad alcuni file multimediali per utenti specifici. Le impostazioni del server consentono di limitare i file distribuiti e di impostare un nome di categoria per file, se necessario.

back