0

I have a playback issue with an RTSP audio stream in Android. Basically, the stream plays fine for around 4-5 minutes before it unexpectedly ends. I am not sure if it is client or server-side. This is the error I get:

05-05 10:47:38.040    2171-2179/com.ciamradio.ciamradio W/MediaPlayer-JNI﹕ MediaPlayer finalized without being released
05-05 10:47:38.040     931-1269/? D/NuPlayerDriver﹕ reset(0xb58f7520)
05-05 10:47:38.168     931-2187/? I/ARTSPConnection﹕ status: RTSP/1.0 200 OK
05-05 10:47:38.169     931-2187/? I/RTSPSource﹕ TEARDOWN completed with result 0 (Success)
05-05 10:47:38.174     931-2187/? I/qtaguid﹕ Untagging socket 16 failed errno=-2
05-05 10:47:38.175     931-2187/? E/HTTPBase﹕ Failed untagging socket 16 (My UID=1013)
05-05 10:47:38.177     931-2187/? E/ARTSPConnection﹕ Server unexpectedly closed the connection.
05-05 10:47:38.182     931-2186/? D/NuPlayerDriver﹕ notifyResetComplete(0xb58f7520)

Here is the code for the mediaplayer that I used.

 Uri myUri = Uri.parse("rtsp://ciam.audio.netbroadcasting.tv:1935/ciam-live/ciamfv.stream"); // initialize Uri here

        try {
            MediaPlayer mediaPlayer = new MediaPlayer();
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            mediaPlayer.setDataSource(String.valueOf(myUri));
            mediaPlayer.prepare();
            android.os.SystemClock.sleep(1000);

            mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    mp.start();
                }
            });
            mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                public void onCompletion(MediaPlayer mMediaPlayer) {
                    mMediaPlayer.release();
                }
            });
       }
       catch (IOException e) {
           Log.d("CIAM", "create failed:");

        }
gammaraptor
  • 1,886
  • 3
  • 14
  • 16

1 Answers1

0

Basically the issue was that Garbage Collection finalizes the mediaplayer because I did not define MP outside of the try/catch statement. The fixed code is:

Uri myUri = Uri.parse("rtsp://ciam.audio.netbroadcasting.tv:1935/ciam-live/ciamfv.stream"); // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
        try {

            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            mediaPlayer.setDataSource(String.valueOf(myUri));
            mediaPlayer.prepare();
            android.os.SystemClock.sleep(1000);

            mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    mp.start();
                }
            });
            mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                public void onCompletion(MediaPlayer mMediaPlayer) {
                    mMediaPlayer.release();
                }
            });
       }
       catch (IOException e) {
           Log.d("CIAM", "create failed:");

        }
gammaraptor
  • 1,886
  • 3
  • 14
  • 16