我们正在开发一款应用,可通过RTSP协议从IP Camera发送实时视频。
该流仅适用于我们的一个设备(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,320x240,90k tbr,90k tbn,180k tbc
音频:pcm_mulaw,8000 Hz,单声道,s16,64 kb / s
任何人都可以对此有所了解。任何帮助将不胜感激。
答案 0 :(得分:0)
我们决定使用Vitamio图书馆。现在,所有设备都能正常运行。