2016-09-27 344 views
1

我想使用exoplayer流rtsp視頻。我正在使用ExoMedia library這是一個Android ExoPlayer包裝。我有搜索stackoverflow,但我沒有找到任何好的答案。經過一些谷歌搜索後,我發現exoplayer不支持rtsp流issue 55。 有沒有任何方式使用exoplayer流rtsp url? 這是我的代碼。如何使用exoplayer傳輸rtsp url?

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"); 
    } 
} 

這是我的日誌

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) 

回答

2

ExoPlayer不支持RTSP流。在這裏你可以check這個。對於RTSP流式傳輸,您需要使用其他一些庫,如libvlc或其他庫。

相關問題