how to stream rtsp url using exoplayer?

13,144

Solution 1

Now ExoPlayer has support RTSP - https://github.com/google/ExoPlayer/pull/3854

Also you can follow to see example app with rtsp - https://github.com/google/ExoPlayer/pull/3854#issuecomment-377010803

Solution 2

Now exoplayer supports RTSP streaming.

Refer to link : github.com/google/ExoPlayer

Solution 3

Actually current version of ExoPlayer doesn't support RTSP. But as indicated in the issue issue 55 there's an active pull request #3854 to add this support.

In the meantime, you can clone the original authors exoplayer fork which does support RTSP (branch dev-v2-rtsp):

git clone -b dev-v2-rtsp https://github.com/tresvecesseis/ExoPlayer.git

I've tested it and it works perfectly. The authors are working actively to fix the issues reported by many users and I hope that RTSP support at some point becomes part of the official exoplayer.

Share:
13,144
Vikash Kumar Verma
Author by

Vikash Kumar Verma

love to code.

Updated on August 03, 2022

Comments

  • Vikash Kumar Verma
    Vikash Kumar Verma almost 2 years

    I want to stream rtsp video using exoplayer. I am using ExoMedia library which is an An Android ExoPlayer wrapper. I have search on stackoverflow but I didn't find any good answer. After some google search I found that exoplayer does not support rtsp stream issue 55. Is there any way to stream rtsp url using exoplayer? Here is my code.

    public class MainActivity extends AppCompatActivity implements OnPreparedListener{
        EMVideoView emPlayer;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            playVideo();
        }
    
    
        private void playVideo() {
            emPlayer = (EMVideoView)findViewById(R.id.video_view);
            emPlayer.setOnPreparedListener(this);
    
            emPlayer.setVideoURI(Uri.parse("rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov"));
        }
    
        @Override
        public void onPrepared() {
            emPlayer.start();
            Log.v("TAG","video is playing");
        }
    }
    

    Here is my log

    com.google.android.exoplayer.ExoPlaybackException: com.google.android.exoplayer.upstream.HttpDataSource$HttpDataSourceException: Unable to connect to rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov
               at com.google.android.exoplayer.SampleSourceTrackRenderer.maybeThrowError(SampleSourceTrackRenderer.java:262)
               at com.google.android.exoplayer.SampleSourceTrackRenderer.maybeThrowError(SampleSourceTrackRenderer.java:148)
               at com.google.android.exoplayer.ExoPlayerImplInternal.incrementalPrepareInternal(ExoPlayerImplInternal.java:273)
               at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:203)
               at android.os.Handler.dispatchMessage(Handler.java:98)
               at android.os.Looper.loop(Looper.java:135)
               at android.os.HandlerThread.run(HandlerThread.java:61)
               at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)
            Caused by: com.google.android.exoplayer.upstream.HttpDataSource$HttpDataSourceException: Unable to connect to rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov
               at com.google.android.exoplayer.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:191)
               at com.google.android.exoplayer.upstream.DefaultUriDataSource.open(DefaultUriDataSource.java:133)
               at com.google.android.exoplayer.extractor.ExtractorSampleSource$ExtractingLoadable.load(ExtractorSampleSource.java:823)
               at com.google.android.exoplayer.upstream.Loader$LoadTask.run(Loader.java:222)
               at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
               at java.util.concurrent.FutureTask.run(FutureTask.java:237)
               at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
               at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
               at java.lang.Thread.run(Thread.java:818)
            Caused by: java.net.MalformedURLException: Unknown protocol: rtsp
               at java.net.URL.<init>(URL.java:182)
               at java.net.URL.<init>(URL.java:125)
               at com.google.android.exoplayer.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:330)
               at com.google.android.exoplayer.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:189)
               at com.google.android.exoplayer.upstream.DefaultUriDataSource.open(DefaultUriDataSource.java:133) 
               at com.google.android.exoplayer.extractor.ExtractorSampleSource$ExtractingLoadable.load(ExtractorSampleSource.java:823) 
               at com.google.android.exoplayer.upstream.Loader$LoadTask.run(Loader.java:222) 
               at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 
               at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
               at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
               at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
               at java.lang.Thread.run(Thread.java:818)