pedroSG94 / RootEncoder

RootEncoder for Android (rtmp-rtsp-stream-client-java) is a stream encoder to push video/audio to media servers using protocols RTMP, RTSP, SRT and UDP with all code written in Java/Kotlin
Apache License 2.0
2.57k stars 776 forks source link

WHIP & RIST Support #1503

Open johan149 opened 5 months ago

johan149 commented 5 months ago

Is your feature request related to a problem? Please describe. I am currently using the RootEncoder library for streaming video/audio to media servers using various protocols (RTMP, RTSP, SRT, etc.). However, I am facing limitations in my streaming capabilities due to the absence of support for WHIP (WebRTC-HTTP Ingestion Protocol) and RIST (Reliable Internet Stream Transport). These protocols offer significant advantages for live streaming, such as improved reliability, low latency, and better handling of network issues, which are crucial for my use case.

Describe the solution you'd like I would like to see the implementation of WHIP and RIST protocols in the RootEncoder library. Specifically:

WHIP Protocol: Adding support for WHIP would enable seamless integration with WebRTC-based media servers, facilitating low-latency streaming directly from the encoder to the server using HTTP. RIST Protocol: Integrating RIST would enhance the reliability of streams over unreliable networks by providing features such as packet loss recovery, secure transport, and low latency, making it ideal for professional broadcasting scenarios. Describe alternatives you've considered

Using External Tools: I have considered using external tools and servers to convert the streams from supported protocols (e.g., RTMP, RTSP) to WHIP or RIST. However, this adds complexity and additional points of failure in the streaming pipeline. Custom Implementation: Implementing custom support for WHIP and RIST within my application is another alternative. However, this requires substantial effort and may not be as efficient or well-integrated as having native support in the RootEncoder library. Additional context

Adding support for these protocols would align RootEncoder with industry standards and enhance its appeal to a broader range of users, particularly those in professional broadcasting and low-latency streaming domains. Thank you for considering this feature request. The addition of WHIP and RIST support would significantly enhance the versatility and reliability of the RootEncoder library for diverse streaming applications.

pedroSG94 commented 5 months ago

Hello,

Do you have a server that support RIST? I can't find a server for it and it is necessary to test it.

Also, a documentation about the protocol implementation will be necessary. Do you know a way to get it instead of read tye code of a project?

johan149 commented 5 months ago

Hola Pedro, Los ejecutable de RIST se puede compilar standalone también librist funciona con ffmpeg, para testear puedes encodear a UDP y con el ejecutable de rist enviarlo como RIST protocol en el server lo puedes recibir como RIST y reproducir con ffmpeg UDP para hacer pruebas. Actualmente solo he visto WHIP y RIST en mobile solo en Larix Broadcaster, sería excelente poder soportar estos dos protocolos y quizás NDI también. Saludos.

pedroSG94 commented 4 months ago

Hola,

Voy a marcar esto como enhancement y creo que si empiezo con alguno de estos protocolos quizas sea con WHIP ya que es el que mas extendido está de los 3 que has comentado. El segundo lo decidire cuando termine WHIP y me ponga a mirar la documentación que hay. Ten en cuenta que la idea es desarrollar todo el protocolo en kotlin y no quiero añadir librerias compiladas en C++ por lo que si no hay buena documentacion de como funciona el protocolo probablemente no lo implemente.

johan149 commented 4 months ago

Hola Pedro me gustaria que hablaramos depronto podriamos ayudar en manera monetaria hablame por discord johan1111

johan149 commented 1 month ago

I found this:

https://github.com/software-mansion/react-native-whip-whep