eXport-it, android  UPnP Client/Server

eXport-it client/serveur UPnP/HTTP android

Android


une application android pour partager ses fichiers vidéos, audios, images et livres




eXport-it FFmpeg



Qu'est-ce que la bibliothèque FFmpeg ?

FFmpeg (https://www.ffmpeg.org/) est une solution complète et multiplateforme pour enregistrer, convertir et diffuser de l'audio et de la vidéo. FFmpeg est le framework multimédia leader, capable de décoder, encoder, transcoder, multiplexer, démultiplexer, diffuser, filtrer et lire à peu près tout ce que les humains et les machines ont créé. Il prend en charge les formats anciens les plus obscurs jusqu'à la pointe de la technologie. Peu importe s'ils ont été conçus par un comité de normalisation, la communauté ou une entreprise.

Il est également hautement portable : FFmpeg compile, exécute et transmet notre infrastructure de test FATE à travers Linux, Mac OS X, Microsoft Windows, les BSD, Solaris, etc. sous une grande variété d'environnements de construction, d'architectures de machines, et configurations.

La bibliothèque FFmpeg elle-même est sous licence LGPL 2.1. L'activation de certaines bibliothèques externes (comme libx264) modifie la licence en GPL 2 ou version ultérieure.

Comment cette bibliothèque est-elle intégrée dans l'application Android

J'ai utilisé le script ffmpeg-android-maker (contributeurs : Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va) pour compiler les bibliothèques. Ce script télécharge le code source de FFmpeg depuis https://www.ffmpeg.org et construit la bibliothèque et l'assemble pour Android. Le script produit des bibliothèques partagées (fichiers *.so) ainsi que des fichiers d'en-tête (fichiers *.h).

L'objectif principal de ffmpeg-android-maker est de préparer des bibliothèques partagées pour une intégration transparente dans un projet Android. Le script prépare le répertoire `output` qui est censé être utilisé. Et ce n'est pas la seule chose que fait ce projet. Le code source de ffmpeg-android-maker est disponible sous licence MIT. Voir le fichier LICENSE.txt pour plus de détails sur https://github.com/Javernaut/ffmpeg-android-maker/ Les bibliothèques eXport-it FFmpeg sont simplement compilées avec libaom, libdav1d, liblame, libopus et libtwolame... mais pas toutes les bibliothèques associées.

Pour développer le support Java de FFmpeg et l'exécuter sur Android 7.1 à 12, je suis parti du projet MobileFFmpeg documenté sur https://github.com/tanersener/mobile-ffmpeg/ par Taner Sener, qui n'est plus maintenu ... et est sous licence LGPL 3.0 ...

Enfin, j'ai préparé un projet JNI Android Studio avec les bibliothèques, inclus des fichiers et du code de support Java, et généré un fichier de bibliothèque .aar à intégrer en tant que bibliothèque supplémentaire dans mes projets existants.


Comment démarrer un canal multidiffusion

Pour démarrer un canal multicast, il faut utiliser un client, pour accéder à un serveur UPnP sur votre réseau local (Wi-Fi) avec le support FFmpeg. Ce serveur doit répondre par la liste des fichiers qu'il exporte. Si ce serveur a le support FFmpeg, un petit texte "Comme un canal" doit être affiché en rouge à la fin de la ligne supérieure de la page de liste. Lorsque le texte est "rouge", cliquer sur le bouton "jouer" fonctionne comme avant en utilisant le protocole UPnP. Si vous cliquez sur le texte, il devrait devenir "vert" et cliquer sur le bouton "play", après avoir sélectionné des fichiers vidéo ou audio, devrait démarrer une "chaîne".

Les fichiers multimédias sélectionnés sont apparemment lus de la même manière que via UPnP, sauf que le délai de démarrage est plus long en raison de tâches supplémentaires. Vous devez laisser ce client lire les fichiers multimédias pour que le canal reste actif.

Utiliser ce canal sur d'autres appareils

La multidiffusion IP ne fonctionne pas sur Internet, elle fonctionne uniquement sur le réseau local, donc principalement sur le Wi-Fi. Un canal de données multicast peut être partagé par plusieurs clients simultanément. Vous envoyez un flux de données multimédia sur votre réseau Wi-Fi et affichez ces données sur les appareils connectés, de manière presque synchrone, juste la différence de délai de latence.

Avec le streaming UPnP ou HTTP, chaque appareil nécessite la bande passante de la vidéo affichée et la bande passante globale est la somme des deux trafics. Avec le streaming multicast, nous envoyons un flux de données sur le LAN qui est partagé entre plusieurs clients.

Si vous utilisez un autre client sur votre réseau après avoir démarré un canal, vous devriez voir une ligne supplémentaire sur la fenêtre principale du client. Un simple clic sur cette ligne devrait démarrer le spectacle.

Il est également possible d'utiliser d'autres produits comme VLC, SMplayer, ... pour afficher une vidéo ou écouter de la musique distribuée sur un canal multicast en utilisant simplement l'URL "UDP" affichée sur le client eXport-it.

Pour arrêter une chaîne multidiffusion

La bonne façon d'arrêter un Channel multicast est de l'arrêter sur le client sur lequel vous l'avez démarré car ce channel y est contrôlé. La lecture jusqu'à la fin des fichiers multimédias diffusés devrait également donner la fin de l'émission.