流式传输Youtube视频

我正在编写一个应用程序,使用流媒体播放YouTube视频。

第一种方法:

我使用GData API获取视频的RTSP URL。 这里是播放RTSP网址的代码。

   VideoView mVideoView = new VideoView(this);
   setContentView(mVideoView);
   mVideoView.setVideoURI(Uri.parse("rtsp://rtsp2.youtube.com/CiILENy73wIaGQkDwpjrUxOWQBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp"));
   mVideoView.start();

但它会在G1设备和模拟器上引发错误(Emulator在邮件列表中有一些防火墙问题)以下是错误消息

ERROR / PlayerDriver(35):命令PLAYER_INIT完成,出现错误或信息PVMFFailure

第二种方法:

从http://www.youtube.com/get_video?v=&t= <>&<>获取3gp文件路径的破解方式。获取文件路径后,我可以调用setVideoURI并且播放良好。 但这是达到要求的黑客方式。 我也检查了Youtube应用程序,它也采用黑客方式播放YouTube网址(使用logcat进行检查)

我曾尝试将VideoView更改为MediaPlayer,但没有更改错误。

有没有“干净”的方式来做到这一点?

请让我知道你的想法。


如果您愿意在新活动中完成这项工作,那么以下内容适用于设备,但不适用于模拟器:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));


有时候Uri.parse返回“null”,因为不能分析rtsp协议而不是http协议。

用一个登录logcat Uri.parse(rtspURL).toString()查看它,你将看不到任何内容。 或者只做Log.d("tag", Uri.parse); 同样会返回。

尝试找到解析(创建)Uri的另一种方法。

我会尝试一下并运行:

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();

令我印象深刻的是,这种肮脏的方式完全有效! 如果你有一个可行的解决方案,那就去吧。 我认为还没有一种干净的方式让RTSP流在SDK中工作。

链接地址: http://www.djcxy.com/p/28909.html

上一篇: Streaming Youtube Videos

下一篇: YouTube embedded video: set different thumbnail