2013-01-09 4 views
3

나는 다음과 같은 YouTube 동영상 나는 검은 화면을보고 싶지 않아안드로이드에 youtube 비디오에서 프레임을 잡아?

http://www.youtube.com/watch?v=FovFG3N_RSU

에게 보여 VideoView를 지켜 보면서을 사용하지만 비디오의 커버와 비디오의 미드 프레임을 표시 할하고있다.

는 IOS에 도움이

https://developer.apple.com/library/mac/#documentation/AVFoundation/Reference/AVAssetImageGenerator_Class/Reference/Reference.html있다.

어떻게 안드로이드에서 수행 할 수 있습니까?

답변

2

기기의 Android 버전 및 플래시 지원 기능에 따라 다릅니다. 장치에 플래시가 설치되어 있지 않으면 VideoView setVideoUri 메서드를 사용하여 비디오를 재생할 수 없습니다 (http 링크를 uri로 파싱 한 후).

아래의 코드는 저에게 도움이되고 있지만 이것은 당신에게 해킹입니다.
플래시가 설치되어 있지 않은 장치에이 코드를 사용하십시오.

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