【发布时间】:2014-07-21 07:49:03
【问题描述】:
我们正在开发一款应用,该应用将通过 RTSP 协议从 IP 摄像机发送实时视频流。
该流仅在我们的一台设备上正常运行(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
任何人都可以对此有所了解。任何帮助将不胜感激。
【问题讨论】:
标签: android video-streaming android-mediaplayer rtsp