Android library based on FFMpeg for playing given RTSP endpoint.
- Open RTSP Endpoint
- Find Video Stream
- Read Frame
- Convert to RGB
- Invoke Callback
- Java Interface
- In root
build.gradle
:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
- In target module
build.gradle
dependencies {
compile 'com.github.potterhsu:RtspLibrary:v1.0'
}
- Initialize
ImageView ivPreview = (ImageView) findViewById(R.id.ivPreview);
RtspClient rtspClient = new RtspClient(new NativeCallback() {
@Override
public void onFrame(final byte[] frame, final int nChannel, final int width, final int height) {
ivPreview.post(new Runnable() {
@Override
public void run() {
int area = width * height;
int pixels[] = new int[area];
for (int i = 0; i < area; i++) {
int r = frame[3 * i];
int g = frame[3 * i + 1];
int b = frame[3 * i + 2];
if (r < 0) r += 255;
if (g < 0) g += 255;
if (b < 0) b += 255;
pixels[i] = Color.rgb(r, g, b);
}
Bitmap bmp = Bitmap.createBitmap(pixels, width, height, Bitmap.Config.ARGB_8888);
ivPreview.setImageBitmap(bmp);
}
});
}
});
- Play
new Thread(new Runnable() {
@Override
public void run() {
rtspClient.play("rtsp://endpoint/to/rtsp");
}
}).start();
- Stop and release
rtspClient.stop();
rtspClient.dispose();
Clone the repository and run.