流式传输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