ver - Cómo jugar video RTSP en Android?
reproducir videos de youtube en android studio (2)
Quiero jugar video de Youtube en VideoView. He buscado mucho y encuentro VideoView Support rtsp URL Video. Pero recibo un error: mi dispositivo Android es 2.3.5 y uso de Wifi. Mi código de VideoView es:
final VideoView videoView = (VideoView) findViewById(R.id.VideoView);
Button youtube=(Button)findViewById(R.id.button1);
final MediaController mediaController = new MediaController(this);
mediaController.setScrollBarStyle(DEFAULT_KEYS_DISABLE);
mediaController.setPressed(true);
mediaController.setAnchorView(videoView);
Uri video = Uri.parse("rtsp://v3.cache7.c.youtube.com/CiILENy73wIaGQlOCTh0GvUeYRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp");
// Uri video = Uri.parse(getUrlVideoRTSP("http://gdata.youtube.com/feeds/api/users/mashable/uploads?&v=2"));
videoView.setMediaController(mediaController);
videoView.setVideoURI(video);
videoView.requestFocus();
videoView.start();
Mi error LogCat es:
10-12 11:56:50.369: D/WindowManagerImpl(6880): addView, new view, mViews[0]: com.android.internal.policy.impl.PhoneWindow$DecorView@4055c4e0
10-12 11:56:50.430: I/AudioSystem(6880): getting audio flinger
10-12 11:56:50.430: I/AudioSystem(6880): returning new audio session id
10-12 11:56:50.430: D/MediaPlayer(6880): setDataSource(Context context, rtsp://v3.cache7.c.youtube.com/CiILENy73wIaGQlOCTh0GvUeYRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp, Map<String, String> headers) in
10-12 11:56:50.460: I/MediaPlayer(6880): skip setting (httpproxyip,null)
10-12 11:56:50.460: I/MediaPlayer(6880): skip setting (httpproxyport,null)
10-12 11:56:50.460: I/MediaPlayer(6880): skip setting (rtspproxyip,null)
10-12 11:56:50.460: I/MediaPlayer(6880): skip setting (rtspproxyport,null)
10-12 11:56:50.460: I/MediaPlayer(6880): add setting (minudpport,1024)
10-12 11:56:50.460: I/MediaPlayer(6880): add setting (maxudpport,65535)
10-12 11:56:50.460: I/MediaPlayer(6880): add setting (buffertime,7)
10-12 11:56:50.460: I/MediaPlayer(6880): add setting (rtsptimeout,25000)
10-12 11:56:50.460: I/MediaPlayer(6880): add setting (rtptimeout,25000)
10-12 11:56:50.460: I/MediaPlayer(6880): add setting (rtcpreportinterval,3000)
10-12 11:56:50.460: I/MediaPlayer(6880): add setting (rtspkeepaliveinterval,35000)
10-12 11:56:50.460: D/MediaPlayer(6880): Couldn''t open file on client side, trying server side
10-12 11:56:50.470: I/MediaPlayer(6880): disable CIQ
10-12 11:56:50.470: D/MediaPlayer(6880): setDataSource(Context context, rtsp://v3.cache7.c.youtube.com/CiILENy73wIaGQlOCTh0GvUeYRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp, Map<String, String> headers) out
10-12 11:57:20.589: W/MediaPlayer(6880): info/warning (34355, 3000)
10-12 11:57:20.589: I/MediaPlayer(6880): Info (34355,3000)
10-12 11:57:20.599: E/MediaPlayer(6880): error (1, -1003)
10-12 11:57:20.599: E/MediaPlayer(6880): Error (1,-1003)
10-12 11:57:20.599: D/VideoView(6880): Error: 1,-1003
Al usar esta forma, toco el video rtsp en Android.
videourl="rtsp://..........";
videoView = (VideoView) findViewById(R.id.video_View);
progressDialog = ProgressDialog.show(Video.this, "",
"Buffering video...", true);
progressDialog.setCancelable(false);
// progressDialog.dismiss();
MediaController mediaController = new MediaController(Video.this);
mediaController.setAnchorView(videoView);
Uri video = Uri.parse(videourl);// insert video url
videoView.setMediaController(mediaController);
videoView.setVideoURI(video);
videoView.requestFocus();
sync = new myAsync();
sync.execute();
// PlayVideo();
}
private class myAsync extends AsyncTask<Void, Integer, Void> {
int duration = 0;
//int current = 0;
@Override
protected Void doInBackground(Void... params) {
videoView.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
progressDialog.dismiss();
videoView.seekTo(check);
videoView.start();
duration = videoView.getDuration();
}
});
do {
current = videoView.getCurrentPosition();
System.out.println("duration - " + duration + " current- "
+ current);
/*if(current/600==0)
{
//sync.cancel(true);
videoView.pause();
try {
wait(300000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();q
}
videoView.resume();
videoView.seekTo(current);
}*/
}
if (sync.isCancelled())
break;
} while (current != duration || current == 0);
return null;
}
}
Primero debes obtener videos de tu canal YOutube. Para este siguiente ejemplo, te ayudará.
Ver mi respuesta aquí. te dará una idea perfecta sobre esto.
También para reproducir video en videoview necesita el formato rtsp de su video.
Puede convertir su url en formato rtsp y crear una función para lo que está AQUÍ.