我們正在開發一款應用程序,該應用程序將通過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
任何人都可以請說明這一點。任何幫助將不勝感激。