2014-07-21 112 views
1

我們正在開發一款應用程序,該應用程序將通過RTSP協議通過IP攝像機發送實況視頻。Android MediaPlayer RTSP未知錯誤

該流只適用於我們的設備之一(LG G2 - KitKat 4.4.2)。但是,當我們嘗試在我們的任何其他設備(Samsung S3,S4,Note 3,Nexus 5)上運行它時,它會失敗,並顯示以下錯誤:E/MediaPlayer﹕ Error (1,-2147483648)

對網絡的研究告訴我們,這意味着實際的錯誤是未知的,這有點令人沮喪。任何人都可以請幫助我們。下面是一些初始化的流代碼:

首先,我們surfaceCreated方法:

public void surfaceCreated(SurfaceHolder holder) { 

    dialog = ProgressDialog.show(this, "Please wait.." , "Connecting.." , true); 
    mediaPlayer = new MediaPlayer(); 
    mediaPlayer.setOnBufferingUpdateListener(this); 
    mediaPlayer.setOnErrorListener(this); 

    new PrepareStreamTask().execute(); 

} 

接着一個的AsyncTask準備流:

private class PrepareStreamTask extends AsyncTask<URL, Integer, Long> implements MediaPlayer.OnPreparedListener{ 

    @Override 
    protected Long doInBackground(URL... params) { 

     try { 

      mediaPlayer.setDisplay(vidHolder); 
      mediaPlayer.setDataSource(currentStream.getUrl()); 
      mediaPlayer.setOnPreparedListener(this); 
      mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
      mediaPlayer.prepareAsync(); 

     } catch (Exception e){ 
      e.printStackTrace(); 
     } 

     return null; 
    } 

    @Override 
    protected void onProgressUpdate(Integer... progress){ 
     setProgressPercent(progress[0]); 
    } 

    @Override 
    protected void onPostExecute(Long result){ 
    } 

    @Override 
    public void onPrepared(MediaPlayer mp) { 
     mediaPlayer.start(); 
    } 
} 

正如你可能已經猜到了錯誤發生在prepareAsync()方法。我們也嘗試使用prepare()

流本身就是建立這樣的:

視頻:H264(基線),YUV420P,320×240,90K TBR,90K TBN,180K TBC

音頻:pcm_mulaw,8000赫茲,單聲道,S16, 64 kb/s

任何人都可以請說明這一點。任何幫助將不勝感激。

回答

0

我們決定使用Vitamio圖書館。現在,所有設備上的一切都運行良好。