我们正在开发一款应用程序,它将通过RTSP协议从IP摄像头发送实时视频。
该流只在我们的一台设备(LG G2 - KitKat 4.4.2)上工作正常。然而,当我们尝试在任何其他设备(三星S3,S4,Note3,Nexus5)上运行它时,它会失败,并显示以下错误: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
有谁能解释一下这件事。任何帮助都将不胜感激。
发布于 2014-07-21 22:36:29
我们决定使用Vitamio图书馆。现在在所有设备上,一切都运行得很好。
https://stackoverflow.com/questions/24860052
复制相似问题