potterhsu / RtspLibrary

Android library based on FFMpeg for playing given RTSP endpoint.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

RtspLibrary

Android library based on FFMpeg for playing given RTSP endpoint.

Pipeline

  1. Open RTSP Endpoint
  2. Find Video Stream
  3. Read Frame
  4. Convert to RGB
  5. Invoke Callback
  6. Java Interface

Setup

  1. In root build.gradle:
allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}
  1. In target module build.gradle
dependencies {
  compile 'com.github.potterhsu:RtspLibrary:v1.0'
}

Usage

  1. 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);
            }
        });
    }
});
  1. Play
new Thread(new Runnable() {
    @Override
    public void run() {
        rtspClient.play("rtsp://endpoint/to/rtsp");
    }
}).start();
  1. Stop and release
rtspClient.stop();
rtspClient.dispose();

Demo

Clone the repository and run.

About

Android library based on FFMpeg for playing given RTSP endpoint.

License:MIT License


Languages

Language:C 96.6%Language:C++ 2.7%Language:Java 0.7%Language:CMake 0.1%