Cliente RTMP Streaming desde Aplicacion Xamarin Forms

Intentando crear una aplicación Xamarin Forms  que transmita a un servidor Wowza  un streaming rtmp para seguridad ciudadana me tope que no existía algún plugin o alguna solución en especifica, que solo existía una solución que hacia un Binding a una librería de Java que se llama Xamarin-Yasea.

La solución Binding a una librería de Java  lo que hace es crear enlaces a los métodos y propiedades del archivo .aar (y otras extensiones) hacia una aplicación Xamarin Android (otros tipos de proyecto también), así que después de encontrar esta librería me dispuse a crear un Custom Control para poder utilizarla desde mi aplicación Xamarin Forms.

La librería  Java del repositorio tiene implementación para Android y IOS, en mi caso he probado con Android y si funciona, quedando como tarea pendiente terminar la de IOS.

Primero creamos una aplicación Xamarin Forms con código compartido NET Strandar 2.0, después en la solución creamos un proyecto de Biblioteca de enlaces de Android.

1

En el repositorio encontramos un ejemplo de cómo se agrega el archivo .aar y como se utiliza con una aplicación Xamarin Android, pero por si no entienden igual les explicare.

La librería .aar debe estar en acción de compilación LibraryProjectZip y en Metadata.xml  se agregan los remove-node de la librería, para entender más de Binding a una librería de Java revisen esta documentación.

2

Después pasé a crear una clase YaseaRenderer.cs en el proyecto Android y una clase Yasea.cs en el proyecto compartido.

Screenshot_20190202-122718

 

La ruta del servidor RTMP la saque de una librería, Streamaxia, la cual es esta rtmp://rtmp.streamaxia.com/streamaxia/demo , como pueden ver la transmisión que estoy emitiendo desde mi celular se puede visualizar desde el vlc.

WhatsApp Image 2019-01-31 at 1.56.43 PM

Una cosa mas que olvidaba que quizás del por que no les funcione tiene que ver con los permisos, tienen que manejar los permisos de la cámara y el micrófono y si quieren hacer recording de la transmisión también permisos de escritura en el disco de almacenamiento.

YaseaRenderer.cs

Como ven es muy simple lo que hago es exponer los métodos de StartPublish y StopPublish de la librería Yasea, y también otras propiedades para poder cambiar la cámara.

Yasea.cs

Cualquier duda o consulta me las pueden hacer llegar, con gusto les responderé. Saludos!.