我用这个api代码在android videoview中播放youtube视频。它总是说我不播放。我用很多方法打开它。我在stackoverflow.com上找了很多关于这个的问题,但我还是不明白。最后一个我对这个问题的解决方案之一是这个。我使用这些方法:
public static String getUrlVideoRTSP(String urlYoutube) {
try {
String gdy = "http://gdata.youtube.com/feeds/api/videos/";
DocumentBuilder documentBuilder = DocumentBuilderFactory
.newInstance().newDocumentBuilder();
String id = extractYoutubeId(urlYoutube);
URL url = new URL(gdy+id);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
Document doc = documentBuilder.parse(connection.getInputStream());
Element el = doc.getDocumentElement();
NodeList list = el.getElementsByTagName("media:content");
String cursor = urlYoutube;
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
if (node != null) {
NamedNodeMap nodeMap = node.getAttributes();
HashMap<String, String> maps = new HashMap<String, String>();
for (int j = 0; j < nodeMap.getLength(); j++) {
Attr att = (Attr) nodeMap.item(j);
maps.put(att.getName(), att.getValue());
}
if (maps.containsKey("yt:format")) {
String f = maps.get("yt:format");
if (maps.containsKey("url"))
cursor = maps.get("url");
if (f.equals("1"))
return cursor;
}
}
}
return cursor;
} catch (Exception ex) {
return urlYoutube;
}
}
public static String extractYoutubeId(String url) throws MalformedURLException {
String query = new URL(url).getQuery();
String[] param = query.split("&");
String id = null;
for (String row : param) {
String[] param1 = row.split("=");
if (param1[0].equals("v")) {
id = param1[1];
}
}
return id;
}
这个代码在我的 play_video_button_on_click_event 中:
VideoView videoView = (VideoView) findViewById(R.id.videoView1);
String urlYoutube = "http://www.youtube.com/watch?v=dJhRW_vg-dI";
String urlRtsp = getUrlVideoRTSP(urlYoutube);//Il metodo che abbiamo visto
videoView.setVideoURI(Uri.parse(urlRtsp));
MediaController controller = new MediaController(CaillouizleActivity.this);
videoView.setMediaController(controller);
videoView.start();
但它仍然错误:无法播放此视频。我能做些什么?谢谢...