FFmpeg (https://www.ffmpeg.org/) es una solución multiplataforma completa para grabar, convertir y transmitir audio y video. FFmpeg es el marco multimedia líder, capaz de decodificar, codificar, transcodificar, mux, demux, transmitir, filtrar y reproducir prácticamente cualquier cosa que los humanos y las máquinas hayan creado. Admite los formatos antiguos más oscuros hasta los más modernos. No importa si fueron diseñados por algún comité de estándares, la comunidad o una corporación.
También es altamente portátil: FFmpeg compila, ejecuta y pasa nuestra infraestructura de prueba FATE en Linux, Mac OS X, Microsoft Windows, BSD, Solaris, etc... bajo una amplia variedad de entornos de construcción, arquitecturas de máquinas, y configuraciones.
La biblioteca FFmpeg en sí está bajo la licencia LGPL 2.1. Habilitar ciertas bibliotecas externas (como libx264) cambia la licencia a GPL 2 o posterior.
Usé el script ffmpeg-android-maker (colaboradores: Alexander Berezhnoi Javernaut + codacy-badger Codacy Badger + A2va) para compilar las bibliotecas. Este script descarga el código fuente de FFmpeg de https://www.ffmpeg.org y crea la biblioteca y la ensambla para Android. El script produce bibliotecas compartidas (archivos *.so), así como archivos de encabezado (archivos *.h).
El objetivo principal de ffmpeg-android-maker es preparar bibliotecas compartidas para una integración perfecta en un proyecto de Android. El script prepara el directorio `output` que se pretende usar. Y no es lo único que hace este proyecto. El código fuente de ffmpeg-android-maker está disponible bajo la licencia MIT. Consulte el archivo LICENSE.txt para obtener más detalles en https://github.com/Javernaut/ffmpeg-android-maker/ Las bibliotecas FFmpeg de eXport-it solo se compilan con libaom, libdav1d, liblame, libopus y libtwolame... pero no todas las bibliotecas asociadas.
Para desarrollar el soporte de Java para FFmpeg y ejecutarlo en Android 7.1 a 12, comencé con el proyecto MobileFFmpeg documentado en https://github.com/tanersener/mobile-ffmpeg/ por Taner Sener, que ya no se mantiene ... y tiene licencia bajo LGPL 3.0 ...
Finalmente, preparé un proyecto JNI Android Studio con las bibliotecas, incluí archivos y código de soporte de Java, y generé un archivo de biblioteca .aar para integrarlo como una biblioteca adicional en mis proyectos existentes.
Para iniciar un Canal de multidifusión se requiere utilizar un cliente, para acceder a un servidor UPnP en su red local (Wi-Fi) con soporte FFmpeg. Este servidor debe responder con la lista de archivos que exporta. Si este servidor tiene soporte para FFmpeg, se debe mostrar un pequeño texto "Como canal" en rojo al final de la línea superior de la página de lista. Cuando el texto es "rojo", hacer clic en el botón "reproducir" funciona como antes usando el protocolo UPnP. Si hace clic en el texto, debe volverse "verde" y al hacer clic en el botón "reproducir", después de seleccionar los archivos de video o audio, debe iniciar un "canal".
Los archivos multimedia seleccionados se reproducen aparentemente de la misma manera que a través de UPnP, excepto que el retraso de inicio es mayor debido a tareas adicionales. Debe mantener este cliente reproduciendo los archivos multimedia para mantener activa la canalización.
La multidifusión IP no funciona a través de Internet, solo funciona en la red de área local, por lo tanto, principalmente en Wi-Fi. Un canal de datos de multidifusión puede ser compartido por muchos clientes simultáneamente. Está enviando un flujo de datos multimedia en su red Wi-Fi y muestra estos datos en los dispositivos conectados, casi sincrónicamente, solo la diferencia de retraso de latencia.
Con la transmisión UPnP o HTTP, cada dispositivo requiere el ancho de banda del video que se muestra y el ancho de banda global es la suma de ambos tráficos. Con la transmisión multidifusión, enviamos un flujo de datos en la LAN que se comparte entre varios clientes.
Si usa otro cliente en su red después de iniciar un canal, debería ver una línea adicional en la ventana principal del cliente. Simplemente haciendo clic en esta línea debería comenzar el programa.
También es factible usar otros productos como VLC, SMplayer, ... para mostrar un video o escuchar música distribuida en un canal de multidifusión simplemente usando la URL "UDP" que se muestra en el cliente eXport-it. p>
La buena manera de detener un canal de multidifusión es detenerlo en el cliente en el que lo inició porque este canal se controla allí. Reproducir hasta el final de los archivos multimedia transmitidos también debería indicar el final del programa.