我有一个播放问题的RTSP音频流在Android中。基本上,在意外结束之前,流可以正常播放大约4-5分钟。我不确定它是客户端还是服务器端。这是我得到的错误:
05-05 10:47:38.040 2171-2179/com.ciamradio.ciamradio W/MediaPlayer-JNI﹕ MediaPlayer finalized without being released
05-05 10:47:38.040 931-1269/? D/NuPlayerDriver﹕ reset(0xb58f7520)
05-05 10:47:38.168 931-2187/? I/ARTSPConnection﹕ status: RTSP/1.0 200 OK
05-05 10:47:38.169 931-2187/? I/RTSPSource﹕ TEARDOWN completed with result 0 (Success)
05-05 10:47:38.174 931-2187/? I/qtaguid﹕ Untagging socket 16 failed errno=-2
05-05 10:47:38.175 931-2187/? E/HTTPBase﹕ Failed untagging socket 16 (My UID=1013)
05-05 10:47:38.177 931-2187/? E/ARTSPConnection﹕ Server unexpectedly closed the connection.
05-05 10:47:38.182 931-2186/? D/NuPlayerDriver﹕ notifyResetComplete(0xb58f7520)下面是我使用的mediaplayer的代码。
Uri myUri = Uri.parse("rtsp://ciam.audio.netbroadcasting.tv:1935/ciam-live/ciamfv.stream"); // initialize Uri here
try {
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(String.valueOf(myUri));
mediaPlayer.prepare();
android.os.SystemClock.sleep(1000);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mMediaPlayer) {
mMediaPlayer.release();
}
});
}
catch (IOException e) {
Log.d("CIAM", "create failed:");
}发布于 2015-05-06 01:04:39
基本上,问题是垃圾收集完成了mediaplayer,因为我没有在try/catch语句之外定义MP。固定代码为:
Uri myUri = Uri.parse("rtsp://ciam.audio.netbroadcasting.tv:1935/ciam-live/ciamfv.stream"); // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(String.valueOf(myUri));
mediaPlayer.prepare();
android.os.SystemClock.sleep(1000);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mMediaPlayer) {
mMediaPlayer.release();
}
});
}
catch (IOException e) {
Log.d("CIAM", "create failed:");
}https://stackoverflow.com/questions/30058940
复制相似问题