मैं अपने एंड्रॉइड डिवाइस पर रास्पबेरी पीआई से स्ट्रीम स्ट्रीम वीडियो के लिए एक एप्लिकेशन बना रहा हूं। मैं इस धारा खेलने के तीन कार्यात्मक तरीके होते हैं:आरटीएसपी लाइव वीडियो स्ट्रीमिंग
rtsp://media.smart-streaming.com/mytest/mp4:sample_phone_150k.mp4
- मीडिया प्लेयर + SurfaceView
- VideoView
- Intent.ACTION_VIEW
समस्या आवेदन ऊपर निभाता है^धारा लेकिन मेरा खेल नहीं है (आरटीएसपी: //192.168.1.143: 8554/vid.mp4) ... लेकिन वीएलसी करता है।
मैंने कई वीडियो प्रारूपों में वीएलसी और LIVE555 के साथ स्ट्रीमिंग करने का प्रयास किया है और मैंने फोन पर रिकॉर्ड किए गए वीडियो को चलाने का भी प्रयास किया है।
यहाँ मेरी कोड है:
//Stream methods 0 = MediaPlayer & SurfaceView, 1 = VideoView, 2 = Native Video Player
final int STREAM_USING = 0;
//MediaPlayer on surfaceView
String streamPath = "rtsp://192.168.1.143:8554/vid.mp4";//"rtsp://media.smart-streaming.com/mytest/mp4:sample_phone_150k.mp4";//"rtsp://192.168.1.143:8554/vid.mp4";//;"rtp://239.255.0.1:5004/";
Uri streamUri;
private MediaPlayer mediaPlayer;
private SurfaceView surfaceView;
private SurfaceHolder surfaceHolder;
//VideoView
VideoView videoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//MediaPlayer
switch (STREAM_USING) {
case 0: {
surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.setFixedSize(800, 480);
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
if (what == MediaPlayer.MEDIA_ERROR_SERVER_DIED) {
mediaPlayer.release();
mediaPlayer = new MediaPlayer();
//mediaPlayer.stop();
play();
}
return false;
}
});
mediaPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
Toast.makeText(getApplicationContext(), "BUFF : " + percent, Toast.LENGTH_SHORT).show();
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
}
}
});
//Intent i = new Intent(Intent.ACTION_GET_CONTENT);
//i.setType("video/*");
//startActivityForResult(i, 1234);
streamUri = Uri.parse(streamPath);
play();
break;
}
case 1: {
videoView = (VideoView) findViewById(R.id.videoView);
videoView.setVideoURI(Uri.parse(streamPath));
MediaController mediaController = new MediaController(this);
//mediaController.setAnchorView(videoView);
videoView.setMediaController(mediaController);
videoView.requestFocus();
try {
videoView.start();
}
catch (SecurityException se) {
Log.e("SE", se.getMessage());
se.printStackTrace();
}
break;
}
case 2: {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(streamPath));
startActivity(intent);
break;
}
default: {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(streamPath));
startActivity(intent);
}
}
}
private void play() {
try {
//final FileInputStream fis = new FileInputStream(streamPath);
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.setDataSource(MainActivity.this, streamUri);
//mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
//mediaPlayer.reset();
mediaPlayer.start();
}
});
} catch (SecurityException se) {
Log.e("SE", se.getMessage());
se.printStackTrace();
} catch (IOException ie) {
ie.printStackTrace();
}
}
किसी भी मदद की सराहना की है, मैं एक सप्ताह के लिए कोशिश कर रहा है यह कोई सफलता :(
क्या बारे में logcat प्रदान एंड्रॉइड मीडिया एपीआई जब आप उस आरटीएसपी यूरी को लोड करने का प्रयास करते हैं ?? मीडिया प्लेयर और वीडियो व्यू इसके साथ क्या कर रहा है? –
ठीक है, मैं कल – ciprianoss
देर उत्तर के लिए क्षमा करें इसके साथ वापस मिल जाएगा: आरटीपी मामला: 'ई/MediaPlayer: त्रुटि (1, -1003)' RTSP मामला: 'ई/MediaPlayer: त्रुटि (1, - 2147483648) ' – ciprianoss