Sponsored with 💖 by
Enterprise Grade APIs for Feeds & Chat. Try the Android Chat tutorial 💬
Library for stream in RTMP and RTSP. All code in Java.
If you need a player see this project:
https://github.com/pedroSG94/vlc-example-streamplayer
https://github.com/pedroSG94/rtmp-rtsp-stream-client-swift
https://github.com/pedroSG94/rtmp-rtsp-stream-client-java/wiki
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--Optional for play store-->
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
To use this library in your project with gradle add this to your build.gradle:
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.pedroSG94.rtmp-rtsp-stream-client-java:rtplibrary:2.2.6'
}
- Android min API 16.
- Support camera1 and camera2 API
- Encoder type buffer to buffer.
- Encoder type surface to buffer.
- Audio noise suppressor.
- Audio echo cancellation.
- Disable/Enable video and audio while streaming.
- Switch camera while streaming.
- Change video bitrate while streaming (API 19+).
- H264, H265 and AAC hardware/software encoding.
- Force video and audio Codec to use hardware/software encoding (Not recommended).
- Record MP4 file while streaming (API 18+).
- Set Image, Gif or Text to stream on real time.
- OpenGL real time filters. More info
- Stream from video and audio files like mp4, webm, mp3, etc (Limited by device decoders). More info
- Stream device screen (API 21+).
- Get upload bandwidth used.
- RTSP auth (adobe and llnw).
- H264, H265 (Using RTMP enhanced) and AAC support.
- RTMPS (under TLS)
- RTMPT and RTMPTS (tunneled and tunneled under TLS)
- AMF0
- AMF3
- Get upload bandwidth used.
- RTMP auth (basic and digest).
- H264, H265 and AAC support.
- TCP/UDP.
- RTSPS.
Currently developing SRT
https://github.com/pedroSG94/RTSP-Server
https://github.com/pedroSG94/AndroidReStreamer
https://github.com/pedroSG94/Stream-USB-test
Projects related with the library developed by other users. Contact with user owner if you have any problem or question.
https://github.com/FunnyDevs/rtmp-rtsp-stream-client-java-recordcontrollers
In library version 2.0.9, the filters was refactored. Check the wiki link to migrate your implementation.
https://github.com/pedroSG94/rtmp-rtsp-stream-client-java/wiki/Real-time-filters
This code is a basic example. I recommend you go to Activities in app module and see all examples.
//default
//create builder
RtmpCamera1 rtmpCamera1 = new RtmpCamera1(openGlView, connectCheckerRtmp);
//start stream
if (rtmpCamera1.prepareAudio() && rtmpCamera1.prepareVideo()) {
rtmpCamera1.startStream("rtmp://yourEndPoint");
} else {
/**This device cant init encoders, this could be for 2 reasons: The encoder selected doesnt support any configuration setted or your device hasnt a H264 or AAC encoder (in this case you can see log error valid encoder not found)*/
}
//stop stream
rtmpCamera1.stopStream();
//with params
//create builder
RtmpCamera1 rtmpCamera1 = new RtmpCamera1(openGlView, connectCheckerRtmp);
//start stream
if (rtmpCamera1.prepareAudio(int bitrate, int sampleRate, boolean isStereo, boolean echoCanceler,
boolean noiseSuppressor) && rtmpCamera1.prepareVideo(int width, int height, int fps, int bitrate, int rotation)) {
rtmpCamera1.startStream("rtmp://yourEndPoint");
} else {
/**This device cant init encoders, this could be for 2 reasons: The encoder selected doesnt support any configuration setted or your device hasnt a H264 or AAC encoder (in this case you can see log error valid encoder not found)*/
}
//stop stream
rtmpCamera1.stopStream();
//default
//create builder
//by default TCP protocol.
RtspCamera1 rtspCamera1 = new RtspCamera1(openGlView, connectCheckerRtsp);
//start stream
if (rtspCamera1.prepareAudio() && rtspCamera1.prepareVideo()) {
rtspCamera1.startStream("rtsp://yourEndPoint");
} else {
/**This device cant init encoders, this could be for 2 reasons: The encoder selected doesnt support any configuration setted or your device hasnt a H264 or AAC encoder (in this case you can see log error valid encoder not found)*/
}
//stop stream
rtspCamera1.stopStream();
//with params
//create builder
RtspCamera1 rtspCamera1 = new RtspCamera1(openGlView, connectCheckerRtsp);
rtspCamera1.setProtocol(protocol);
//start stream
if (rtspCamera1.prepareAudio(int bitrate, int sampleRate, boolean isStereo, boolean echoCanceler,
boolean noiseSuppressor) && rtspCamera1.prepareVideo(int width, int height, int fps, int bitrate, int rotation)) {
rtspCamera1.startStream("rtsp://yourEndPoint");
} else {
/**This device cant init encoders, this could be for 2 reasons: The encoder selected doesnt support any configuration setted or your device hasnt a H264 or AAC encoder (in this case you can see log error valid encoder not found)*/
}
//stop stream
rtspCamera1.stopStream();