2013-01-09 71 views

回答

2

這取決於設備的Android版本和閃光燈支持功能。 除非在設備上安裝了閃存,否則無法使用VideoView setVideoUri方法播放視頻(將http鏈接解析爲uri後)。

以下代碼適用於我,但這對您來說是一種破解。
將此代碼用於未安裝Flash的設備。

public Uri getYoutubeUriForVideoId() 
{ 
     String YOUTUBE_VIDEO_INFORMATION_URL = "http://m.youtube.com/watch?ajax=1&layout=mobile&tsp=1&utcoffset=330&v="; 

     String USER_AGENT ="Mozilla/5.0 (Linux; U; Android 2.2.1; en-gb; GT-I9003 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"; 

     HttpClient lClient = new DefaultHttpClient(); 
     HttpGet lGetMethod = new HttpGet(YOUTUBE_VIDEO_INFORMATION_URL + videoId); 
     // setting the header as to get the high quality video url 
     lGetMethod.setHeader("User-Agent",UrlConstants.USER_AGENT); 
     HttpResponse lResp = lClient.execute(lGetMethod); 

     if(lResp == null) 
      return null; 
     String lInfoStr = EntityUtils.toString(lResp.getEntity(), "UTF-8"); 

     JSONObject videoInfoJson = new JSONObject(lInfoStr.substring(4,lInfoStr.length())); 
     JSONObject content = (JSONObject) videoInfoJson.get("content"); 
     JSONObject video = (JSONObject) content.get("video"); 
     JSONArray fmt_stream_map = video.getJSONArray("fmt_stream_map"); 
     String url = fmt_stream_map.getJSONObject(0).getString("url"); 

     return Uri.parse(url); 
} 
+0

我不僅需要播放視頻,還需要提取其中間幀或任何其他幀。我的意思是構成視頻流的任何組成圖像;我需要一種方法來捕捉在播放視頻時特定時間顯示的圖像。 – luvieere

+1

k ..試過這個.. [MediaMetadataRetriever.getFrameAtTime()](http://developer.android.com/reference/android/media/MediaMetadataRetriever.html#getFrameAtTime%28long,%20int%29) – Sush