I am writing an application to play youtube videos using streaming.
First method:
I am getting the RTSP URL to the video using GData APIs. Here is the code to play the RTSP url.
VideoView mVideoView = new VideoView(this);
setContentView(mVideoView);
mVideoView.setVideoURI(Uri.parse("rtsp://rtsp2.youtube.com/CiILENy73wIaGQkDwpjrUxOWQBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp"));
mVideoView.start();
But it throws error on both G1 device and emulator (Emulator has some firewall problem as per mailing list) Here is the error message
ERROR/PlayerDriver(35): Command PLAYER_INIT completed with an error or info PVMFFailure
Second method:
A hack way to get the path of 3gp file from http://www.youtube.com/get_video?v=&t=<>&<>.. After getting the file path and I can call setVideoURI and it plays fine. But it is a hack way to achieve the requirement. I have checked the Youtube App also, it also does the hack way to play the youtube url.(Checked with logcat)
I have tried changing from VideoView to MediaPlayer but no change in the error.
Is there a "Clean" way to do this?
Please let me know your thoughts.
Video streaming is a continuous transmission of video files from a server to a client. Video streaming enables users to view videos online without having to download them. Streamed video content can include movies, TV shows, YouTube videos and livestreamed content.
As long as there aren't any live streaming restrictions on your channel, you can now live stream on YouTube through a web browser or streaming encoder. If you want to use a mobile device to live stream, there's an additional hurdle: your channel must have at least 50 subscribers.
Creators can live stream on YouTube via webcam, mobile, and encoder streaming. Webcam and mobile are considered great options for beginners and allow Creators to go live quickly.
If you're willing to do the work in a new activity, the following will work on a device but not on the emulator:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));
Sometimes Uri.parse return "null" because cant parse an rtsp protocol instead of http protocol.
Look it with an Log in logcat Uri.parse(rtspURL).toString()
and you will see nothing written. or only make Log.d("tag", Uri.parse);
and the same will be return.
Try to find another way to parse (create) an Uri.
I'd try with that and run:
String urlVideo = <your rtspURL> VideoView video = (VideoView)findViewById(R.id.VideoView01); Log.d(tag , urlVideo); video.setVideoURI(Uri.parse(urlVideo)); MediaController mc = new MediaController(this); video.setMediaController(mc); video.requestFocus(); video.start(); mc.show();
I'm impressed that the dirty way works at all! If you've got a working solution, go with it. I don't think there's a clean way to get RTSP streaming working in the SDK yet.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With