• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Making a basic RTSP APP

Jo_Han_Solo

Newbie
Oct 4, 2017
21
2
Hey guys,

I'm currently employed as a software engineer at my current workplace but my expertise doesn't lie with Android or Java, I'm a C++ engineer that normally works with robotics, so this is all quite new to me.

Basically I was wondering if anyone could help me out with some instructions/tips/github code or anything else that could help me create a very basic RTSP stream app.

All it needs to do is open an RTSP stream from a webcam and play it until the app is turned off without interruptions.

It doesn't need any fancy controls or specific GUI, the RTSP address can be hardcoded into the app so long as the app opens the stream upon launch and plays the stream.

The only thing that would be useful is if the opening screen had the option to open two different webcam streams, so that from the main stream you had say Button 1 and Button 2 leading to "Camera 1" and "Camera 2" but honestly I would settle with just an app that could view the RTSP stream at all.

Can you guys help me figure this out?

I've found a bunch of links online of people saying "this code works" and "it's very simple" but I've tried like 10-15 different codes and I can't get it to work.

The camera I am using is a LevelOne FCS-1131 running RTSP.

FYI, the stream is viewable using VLC or RTSP Player, but it's very important that the stream is integrated in our app and doesn't simply use an "intent" to move to another app.

Thanks Guys!
 
  • Like
Reactions: Unforgiven
Upvote 0
So I tried the: https://github.com/pedroSG94/rtmp-rtsp-stream-client-java solution and it seems to have imported correctly by adding the gradle files:
Code:
I put this in the project level gradle file:
allprojects {
  repositories {
   maven { url 'https://jitpack.io' }
  }
}

And this in the app level build gradle file:

dependencies {
  compile 'com.github.pedroSG94.rtmp-rtsp-stream-client-java:rtplibrary:1.1.5'
}

I then tried some of the source code and I simplified it to the following:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.SurfaceView;

import com.pedro.rtplibrary.rtsp.RtspCamera1;
import com.pedro.rtsp.utils.ConnectCheckerRtsp;

public class MainActivity extends AppCompatActivity {
    ConnectCheckerRtsp connectCheckerRtsp;
    [USER=1021285]@override[/USER]
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //default
        SurfaceView surfaceView = (SurfaceView) findViewById(R.id.surfaceView);

//create builder
//by default TCP protocol.
        RtspCamera1 rtspCamera1 = new RtspCamera1(surfaceView,connectCheckerRtsp);
//start stream
        rtspCamera1.startStream("MY URL");
    }
}

Where my URL is replaced by the actual rtsp:// url that I know to be working through testing on RTSP Player and VLC on the phone itself as well as on the PC and the webcam shows up.

When I run this app the app crashes, any idea why?

My permissions are:
Code:
<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" />
<!--some devices need it-->
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera2.full" />
<uses-feature android:name="android.hardware.camera2.autofocus" />

in the AndroidManifest.xml file.
 
Last edited by a moderator:
Upvote 0
Since I am a bit green (no pun intended) I'm not sure if this is what you wanted but I hope this is the right thing:

Code:
10-05 16:01:55.234 15632-15632/au.com.httppraesidiumglobal.stream_app_test E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                             Process: au.com.httppraesidiumglobal.stream_app_test, PID: 15632
                                                                                             java.lang.RuntimeException: Unable to start activity ComponentInfo{au.com.httppraesidiumglobal.stream_app_test/au.com.httppraesidiumglobal.stream_app_test.MainActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'void com.pedro.rtsp.utils.ConnectCheckerRtsp.onConnectionFailedRtsp()' on a null object reference
                                                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253)
                                                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
                                                                                                 at android.app.ActivityThread.access$1100(ActivityThread.java:221)
                                                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
                                                                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                                 at android.os.Looper.loop(Looper.java:158)
                                                                                                 at android.app.ActivityThread.main(ActivityThread.java:7225)
                                                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
                                                                                              Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void com.pedro.rtsp.utils.ConnectCheckerRtsp.onConnectionFailedRtsp()' on a null object reference
                                                                                                 at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                                 at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                                 at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                                 at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onCreate(MainActivity.java:24)
                                                                                                 at android.app.Activity.performCreate(Activity.java:6876)
                                                                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135)
                                                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206)
                                                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
                                                                                                 at android.app.ActivityThread.access$1100(ActivityThread.java:221)
                                                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
                                                                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                                 at android.os.Looper.loop(Looper.java:158)
                                                                                                 at android.app.ActivityThread.main(ActivityThread.java:7225)
                                                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
 
Last edited by a moderator:
  • Like
Reactions: steve
Upvote 0
  • Like
Reactions: steve
Upvote 0
Okay so it is still not working, digging through the stack trace I'm thinking that the problem might be that the video encoder is not enabled... I'm running a very barebones version of the code from the link you posted earlier steve.

The code is below:
Java:
[/B][/B][/B]
package au.com.httppraesidiumglobal.stream_app_test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.SurfaceView;
import android.view.WindowManager;
import android.widget.Toast;

import com.pedro.rtplibrary.rtsp.RtspCamera1;
import com.pedro.rtsp.utils.ConnectCheckerRtsp;

public class MainActivity extends AppCompatActivity implements ConnectCheckerRtsp {
    private RtspCamera1 rtspCamera1;;

    [USER=1021285]@override[/USER]
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        setContentView(R.layout.activity_main);
        SurfaceView surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
        rtspCamera1 = new RtspCamera1(surfaceView, this);
        rtspCamera1.startStream("rtsp://root:0000@169.254.13.222:554/h264");

    }
    public void onConnectionSuccessRtsp(){
        rtspCamera1.startStream("rtsp://root:0000@169.254.13.222:554/h264");
        Toast.makeText(this, "Rtsp Connection Success", Toast.LENGTH_SHORT).show();
    }
    public void onConnectionFailedRtsp(){
        rtspCamera1.stopStream();
        Toast.makeText(this, "Rtsp Connection Failed", Toast.LENGTH_SHORT).show();
    }
    public void onDisconnectRtsp(){
        rtspCamera1.startStream("rtsp://root:0000@169.254.13.222:554/h264");
        Toast.makeText(this, "Rtsp Disconnected", Toast.LENGTH_SHORT).show();
    }
    public void onAuthSuccessRtsp(){
        rtspCamera1.startStream("rtsp://root:0000@169.254.13.222:554/h264");
        Toast.makeText(this, "Rtsp Auth Success", Toast.LENGTH_SHORT).show();
    }
    public void onAuthErrorRtsp(){
        rtspCamera1.stopStream();
        Toast.makeText(this, "Rtsp Auth Error", Toast.LENGTH_SHORT).show();
    }
}
[B][B]

The part of the stack trace I'm concerned with is:
Code:
10-06 12:57:31.793 8781-8781/au.com.httppraesidiumglobal.stream_app_test E/VideoEncoder: VideoEncoder need be prepared, VideoEncoder not enabled
10-06 12:57:31.793 8781-8781/au.com.httppraesidiumglobal.stream_app_test E/AudioEncoder: AudioEncoder need be prepared, AudioEncoder not enabled
10-06 12:57:31.793 8781-8781/au.com.httppraesidiumglobal.stream_app_test E/Camera1ApiManagerGl: Camera1ApiManager need be prepared, Camera1ApiManager not enabled
10-06 12:57:31.793 8781-8781/au.com.httppraesidiumglobal.stream_app_test E/MicrophoneManager: Microphone no created, MicrophoneManager not enabled


Do you think that this would be the reason for the crashes? or is there something wrong in my code that you could spot?
 
Last edited by a moderator:
Upvote 0
This is another problem that I can see, highlighted in red:
Code:
10-06 12:57:31.803 8781-9018/au.com.httppraesidiumglobal.stream_app_test E/AndroidRuntime: FATAL EXCEPTION: Thread-964
                                                                                           Process: au.com.httppraesidiumglobal.stream_app_test, PID: 8781
                                                                                           java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
                                                                                               at android.os.Handler.<init>(Handler.java:200)
                                                                                               at android.os.Handler.<init>(Handler.java:114)
                                                                                               at android.widget.Toast$TN.<init>(Toast.java:693)
                                                                                               at android.widget.Toast.<init>(Toast.java:143)
                                                                                               at android.widget.Toast.makeText(Toast.java:456)
                                                                                               at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:31)
                                                                                               at com.pedro.rtsp.rtsp.RtspClient$1.run(RtspClient.java:209)
                                                                                               at java.lang.Thread.run(Thread.java:818)
 
Last edited by a moderator:
Upvote 0
This is another problem that I can see, highlighted in red:
10-06 12:57:31.803 8781-9018/au.com.httppraesidiumglobal.stream_app_test E/AndroidRuntime: FATAL EXCEPTION: Thread-964
Process: au.com.httppraesidiumglobal.stream_app_test, PID: 8781
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler. (Handler.java:200)
at android.os.Handler. (Handler.java:114)
at android.widget.Toast$TN. (Toast.java:693)
at android.widget.Toast. (Toast.java:143)
at android.widget.Toast.makeText(Toast.java:456)
at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:31)
at com.pedro.rtsp.rtsp.RtspClient$1.run(RtspClient.java:209)
at java.lang.Thread.run(Thread.java:818)

This is from trying to run code on a background thread that is trying to update the UI. You can use this:

Java:
activity.runOnUiThread(new Runnable() { public void run() {
 // Your UI code that is failing
} });

There are other ways too that get the same result... like using a Handler that gets the looper thread.

EDIT: It's probably the Toast code trying to be called in the worker thread.
 
Upvote 0
EDIT: It's probably the Toast code trying to be called in the worker thread.

Okay I got rid of toast completely, app still crashes, now I'm just legit trying to force the stream in every possibly scenario but it just crashes.

Code:
Java:
[/B]
package au.com.httppraesidiumglobal.stream_app_test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.SurfaceView;
import android.view.WindowManager;
import android.widget.Toast;

import com.pedro.rtplibrary.rtsp.RtspCamera1;
import com.pedro.rtsp.utils.ConnectCheckerRtsp;

public class MainActivity extends AppCompatActivity implements ConnectCheckerRtsp {
    private RtspCamera1 rtspCamera1;

    [USER=1021285]@override[/USER]
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        setContentView(R.layout.activity_main);
        SurfaceView surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
        rtspCamera1 = new RtspCamera1(surfaceView, this);
        rtspCamera1.startStream("rtsp://root:0000@169.254.13.222:554/h264");

    }
    public void onConnectionSuccessRtsp(){
        rtspCamera1.startStream("rtsp://root:0000@169.254.13.222:554/h264");
    }
    public void onConnectionFailedRtsp(){
        rtspCamera1.startStream("rtsp://root:0000@169.254.13.222:554/h264");
    }
    public void onDisconnectRtsp(){
        rtspCamera1.startStream("rtsp://root:0000@169.254.13.222:554/h264");
    }
    public void onAuthSuccessRtsp(){
        rtspCamera1.startStream("rtsp://root:0000@169.254.13.222:554/h264");
    }
    public void onAuthErrorRtsp(){
        rtspCamera1.startStream("rtsp://root:0000@169.254.13.222:554/h264");
    }
}
[B]

Full Stack Trace (with red text in bold):
Code:
10-06 13:47:52.743 11619-11619/? E/Zygote: v2
10-06 13:47:52.743 11619-11619/? I/libpersona: KNOX_SDCARD checking this for 10200
10-06 13:47:52.743 11619-11619/? I/libpersona: KNOX_SDCARD not a persona
10-06 13:47:52.743 11619-11619/? W/SELinux: Function: selinux_compare_spd_ram, index[1], priority [2], priority version is VE=SEPF_SECMOBILE_6.0.1_0029
10-06 13:47:52.743 11619-11619/? E/Zygote: accessInfo : 0
10-06 13:47:52.743 11619-11619/? W/SELinux: SELinux: seapp_context_lookup: seinfo=default, level=s0:c512,c768, pkgname=au.com.httppraesidiumglobal.stream_app_test
10-06 13:47:52.743 11619-11619/? I/art: Late-enabling -Xcheck:jni
10-06 13:47:52.773 11619-11619/? D/TimaKeyStoreProvider: TimaSignature is unavailable
10-06 13:47:52.773 11619-11619/? D/ActivityThread: Added TimaKeyStore provider
10-06 13:47:52.873 11619-11619/au.com.httppraesidiumglobal.stream_app_test W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm --instruction-set-features=smp,div,atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=krait --instruction-set-features=default --dex-file=/data/app/au.com.httppraesidiumglobal.stream_app_test-2/split_lib_dependencies_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@au.com.httppraesidiumglobal.stream_app_test-2@split_lib_dependencies_apk.apk@classes.dex) because non-0 exit status
10-06 13:47:53.063 11619-11619/au.com.httppraesidiumglobal.stream_app_test W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm --instruction-set-features=smp,div,atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=krait --instruction-set-features=default --dex-file=/data/app/au.com.httppraesidiumglobal.stream_app_test-2/split_lib_slice_0_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@au.com.httppraesidiumglobal.stream_app_test-2@split_lib_slice_0_apk.apk@classes.dex) because non-0 exit status
10-06 13:47:53.133 11619-11619/au.com.httppraesidiumglobal.stream_app_test W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm --instruction-set-features=smp,div,atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=krait --instruction-set-features=default --dex-file=/data/app/au.com.httppraesidiumglobal.stream_app_test-2/split_lib_slice_1_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@au.com.httppraesidiumglobal.stream_app_test-2@split_lib_slice_1_apk.apk@classes.dex) because non-0 exit status
10-06 13:47:53.183 11619-11619/au.com.httppraesidiumglobal.stream_app_test W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm --instruction-set-features=smp,div,atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=krait --instruction-set-features=default --dex-file=/data/app/au.com.httppraesidiumglobal.stream_app_test-2/split_lib_slice_2_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@au.com.httppraesidiumglobal.stream_app_test-2@split_lib_slice_2_apk.apk@classes.dex) because non-0 exit status
10-06 13:47:53.243 11619-11619/au.com.httppraesidiumglobal.stream_app_test W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm --instruction-set-features=smp,div,atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=krait --instruction-set-features=default --dex-file=/data/app/au.com.httppraesidiumglobal.stream_app_test-2/split_lib_slice_3_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@au.com.httppraesidiumglobal.stream_app_test-2@split_lib_slice_3_apk.apk@classes.dex) because non-0 exit status
10-06 13:47:53.333 11619-11619/au.com.httppraesidiumglobal.stream_app_test W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm --instruction-set-features=smp,div,atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=krait --instruction-set-features=default --dex-file=/data/app/au.com.httppraesidiumglobal.stream_app_test-2/split_lib_slice_4_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@au.com.httppraesidiumglobal.stream_app_test-2@split_lib_slice_4_apk.apk@classes.dex) because non-0 exit status
10-06 13:47:53.393 11619-11619/au.com.httppraesidiumglobal.stream_app_test W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm --instruction-set-features=smp,div,atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=krait --instruction-set-features=default --dex-file=/data/app/au.com.httppraesidiumglobal.stream_app_test-2/split_lib_slice_5_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@au.com.httppraesidiumglobal.stream_app_test-2@split_lib_slice_5_apk.apk@classes.dex) because non-0 exit status
10-06 13:47:53.443 11619-11619/au.com.httppraesidiumglobal.stream_app_test W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm --instruction-set-features=smp,div,atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=krait --instruction-set-features=default --dex-file=/data/app/au.com.httppraesidiumglobal.stream_app_test-2/split_lib_slice_6_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@au.com.httppraesidiumglobal.stream_app_test-2@split_lib_slice_6_apk.apk@classes.dex) because non-0 exit status
10-06 13:47:53.503 11619-11619/au.com.httppraesidiumglobal.stream_app_test W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm --instruction-set-features=smp,div,atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=krait --instruction-set-features=default --dex-file=/data/app/au.com.httppraesidiumglobal.stream_app_test-2/split_lib_slice_7_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@au.com.httppraesidiumglobal.stream_app_test-2@split_lib_slice_7_apk.apk@classes.dex) because non-0 exit status
10-06 13:47:53.553 11619-11619/au.com.httppraesidiumglobal.stream_app_test W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm --instruction-set-features=smp,div,atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=krait --instruction-set-features=default --dex-file=/data/app/au.com.httppraesidiumglobal.stream_app_test-2/split_lib_slice_8_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@au.com.httppraesidiumglobal.stream_app_test-2@split_lib_slice_8_apk.apk@classes.dex) because non-0 exit status
10-06 13:47:53.623 11619-11619/au.com.httppraesidiumglobal.stream_app_test W/art: Failed execv(/system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --debuggable --instruction-set=arm --instruction-set-features=smp,div,atomic_ldrd_strd --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=krait --instruction-set-features=default --dex-file=/data/app/au.com.httppraesidiumglobal.stream_app_test-2/split_lib_slice_9_apk.apk --oat-file=/data/dalvik-cache/arm/data@app@au.com.httppraesidiumglobal.stream_app_test-2@split_lib_slice_9_apk.apk@classes.dex) because non-0 exit status
10-06 13:47:53.623 11619-11619/au.com.httppraesidiumglobal.stream_app_test W/System: ClassLoader referenced unknown path: /data/app/au.com.httppraesidiumglobal.stream_app_test-2/lib/arm
10-06 13:47:53.643 11619-11619/au.com.httppraesidiumglobal.stream_app_test I/InstantRun: starting instant run server: is main process
10-06 13:47:53.753 11619-11619/au.com.httppraesidiumglobal.stream_app_test W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
10-06 13:47:54.253 11619-11619/au.com.httppraesidiumglobal.stream_app_test D/AndroidRuntime: Shutting down VM
10-06 13:47:54.343 11619-11619/au.com.httppraesidiumglobal.stream_app_test E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                             Process: au.com.httppraesidiumglobal.stream_app_test, PID: 11619
                                                                                             java.lang.StackOverflowError: stack size 8MB
                                                                                                 at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                                 at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                                 at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                                 at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                                 at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                                 at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                                 at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                                 at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                                 at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                                 at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                                 at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                                 at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                                 at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                                 at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                                 at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                                 at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                                 at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                                 at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                                 at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                                 at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                                 at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                                 at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                                 at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                                 at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                                 at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                                 at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                                 at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                                 at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                                 at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                                 at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                                 at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                                 at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                                 at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                                 at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                                 at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                                 at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                                 at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                                 at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                                 at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                                 at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                                 at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                                 at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                                 at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                                 at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                                 at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                                 at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                                 at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                                 at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                                at au.com.httppraesidiumglobal.stream_app_test.Mai
10-06 13:47:54.403 11619-11619/au.com.httppraesidiumglobal.stream_app_test D/Error: ERR: exClass=java.lang.StackOverflowError
10-06 13:47:54.403 11619-11619/au.com.httppraesidiumglobal.stream_app_test D/Error: ERR: exMsg=stack size 8MB
10-06 13:47:54.403 11619-11619/au.com.httppraesidiumglobal.stream_app_test D/Error: ERR: file=MainActivity.java
10-06 13:47:54.403 11619-11619/au.com.httppraesidiumglobal.stream_app_test D/Error: ERR: class=au.com.httppraesidiumglobal.stream_app_test.MainActivity
10-06 13:47:54.403 11619-11619/au.com.httppraesidiumglobal.stream_app_test D/Error: ERR: method=onConnectionFailedRtsp line=29
10-06 13:47:54.413 11619-11619/au.com.httppraesidiumglobal.stream_app_test D/Error: ERR: stack=java.lang.StackOverflowError: stack size 8MB
                                                                                        at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                        at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                        at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                        at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                        at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                        at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                        at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                        at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                        at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                        at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                        at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                        at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                        at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                        at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                        at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                        at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                        at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                        at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                        at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                        at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                        at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                        at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                        at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                        at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                        at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                        at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                        at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                        at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                        at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                        at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                        at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                        at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                        at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                        at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                        at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                        at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                        at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                        at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                        at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                        at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                        at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                        at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                        at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                        at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                        at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                        at com.pedro.rtsp.rtsp.RtspClient.setUrl(RtspClient.java:106)
                                                                                        at com.pedro.rtplibrary.rtsp.RtspCamera1.startStreamRtp(RtspCamera1.java:65)
                                                                                        at com.pedro.rtplibrary.base.Camera1Base.startStream(Camera1Base.java:193)
                                                                                        at au.com.httppraesidiumglobal.stream_app_test.MainActivity.onConnectionFailedRtsp(MainActivity.java:29)
                                                                                        at com.pedro.rtsp.rtsp.RtspCl
10-06 13:47:54.413 11619-11619/au.com.httppraesidiumglobal.stream_app_test D/Error: ERR: TOTAL BYTES WRITTEN: 1241228
10-06 13:47:54.413 11619-11619/au.com.httppraesidiumglobal.stream_app_test E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!  (parcel size = 1241312)
10-06 13:47:54.413 11619-11619/au.com.httppraesidiumglobal.stream_app_test E/AndroidRuntime: Error reporting crash
                                                                                             android.os.TransactionTooLargeException: data parcel size 1241312 bytes
                                                                                                 at android.os.BinderProxy.transactNative(Native Method)
                                                                                                 at android.os.BinderProxy.transact(Binder.java:503)
                                                                                                 at android.app.ActivityManagerProxy.handleApplicationCrash(ActivityManagerNative.java:5455)
                                                                                                 at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:96)
                                                                                                 at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
                                                                                                 at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
10-06 13:47:54.413 11619-11619/au.com.httppraesidiumglobal.stream_app_test I/Process: Sending signal. PID: 11619 SIG: 9

 
Last edited by a moderator:
Upvote 0
What's your latest status on this? I could try a good test today. Sorry for the delay but I had very little extra time over the last view days :)

Right well basically I revamped the entire thing, and got the app running with LibVLC that maffen has pushed to JCenter (https://github.com/mrmaffen/vlc-android-sdk).

and using some sample code from this dude: https://bitbucket.org/edwardcw/libvlc-android-sample

So at least it works now but however I'm still looking for a better and more "real-time" response, and I'm not sure I'll achieve that with LibVLC. If you've got any suggestions I'd be happy to take a look elsewhere, but I needed to get something working ASAP to make my boss happy.
 
Upvote 0

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones