2012-01-12 18 views

cevap

45

YouTube, videonun küçük resimlerini belirli bir tahmin edilebilir URL'ye yerleştirir. Biraz acı çeker, ama eminim ki görüntüleri URL'den görüntülemenin ya da onları indirmenin ve sonra onları görüntülemenin bir yolunu bulabilirsin.

İşte bu küçük resim URL'lerdir ne bloguma bilgi verilmiştir: http://alamoxie.com/blog/web-design/add-youtube-thumbnails/

kopyalamak ve ben blog yazısı yazdıklarını yapıştıracaksınız

: Video-örneğin bağlantıyı

Look http://www.youtube.com/watch?v=GDFUdMvacI0

video ID“v=”'dan sonraki bölüm, bu durumda GDFUdMvacI0. URL bundan daha uzunsa, yalnızca bir sonraki "ve" işaretine kadar devam edin. Örneğin, http://www.youtube.com/watch?v=GDFUdMvacI0&feature=youtu.be aynıdır, GDFUdMvacI0.

Sonra sadece bu küçük resimlerin aşağıdaki URL'lerindeki Video kimliğini video kimliğini yerine:

0.jpg olduğunu Tam boyutlu bir görüntü. Diğer üç tanesi çok küçük (120 × 90) ve YouTube tarafından videoda üç belirli noktadan otomatik olarak çekiliyor.

+0

Bu video kimliği nasıl programlanabilir? –

+0

Bu, başladığınız bilgilere bağlıdır. Özel senaryonun hakkında hiçbir şey bilmiyorum, o yüzden korkarım ki orada sana yardım edemem. Lütfen ne yaptığınızı daha fazla ayrıntı eklemek için sorunuzu gözden geçirin - video kimliğini bir URL'den ayrıştırmaya mı çalışıyorsunuz? Bir API aracılığıyla yeni bir YouTube videosu gönderiyor musunuz? Ya da ne? –

+1

blog bağlantısının süresi doldu lütfen güncelleyin. –

2

Bu, birisine yardımcı olabilir. Buradaki fikir ilk önce istediğiniz videoları almaktır. Burada bir oynatma listesinden videoların listesini aldım. Bundan sonra bu sınıfı kullandım:
Küçük resim web'den alınırken bir ilerleme çubuğu görüntülemek için.

/*** 
* Fetch all videos in a playlist 
* @param playlistId 
* @return 
* @throws ClientProtocolException 
* @throws IOException 
* @throws JSONException 
*/ 
public YouTubePlaylist fetchPlaylistVideos(String playlistId) throws ClientProtocolException, IOException, JSONException { 
    String playlistUrl = "https://gdata.youtube.com/feeds/api/playlists/" + playlistId + "?v=2&alt=jsonc"; 
    HttpClient client = new DefaultHttpClient(); 
    HttpUriRequest request = new HttpGet(playlistUrl); 
    HttpResponse response = client.execute(request); 
    String jsonString = GeneralHelpers.convertToString(response.getEntity().getContent()); 
    JSONObject json = new JSONObject(jsonString); 

    if (jsonString.contains("Playlist not found")) { 
     Log.e(TAG, "playlist not found. id: " + playlistId); 
     return null; 
    } 

    JSONArray jsonArray = json.getJSONObject("data").getJSONArray("items"); 

    String playlistTitle = json.getJSONObject("data").getString("title"); 
    String author = json.getJSONObject("data").getString("author"); 

    List<YouTubeVideo> videos = new ArrayList<YouTubeVideo>(); 
    for (int i = 0; i < jsonArray.length(); i++) { 
     JSONObject video = jsonArray.getJSONObject(i).getJSONObject("video"); 
     // The title of the video 
     String title = video.getString("title"); 

     String url; 
     try { 
      url = video.getJSONObject("player").getString("mobile"); 
     } catch (JSONException ignore) { 
      url = video.getJSONObject("player").getString("default"); 
     } 

     String thumbUrl = video.getJSONObject("thumbnail").getString("sqDefault"); 
     String videoId = video.getString("id"); 
     String uploaded = video.getString("uploaded"); 
     String duration = video.getString("duration"); 
     String minutes = (Integer.parseInt(duration)/60 < 10) ? "0" + (Integer.parseInt(duration)/60) : "" + (Integer.parseInt(duration)/60); 
     String seconds = (Integer.parseInt(duration) % 60 < 10) ? "0" + (Integer.parseInt(duration) % 60): "" + (Integer.parseInt(duration) % 60); 
     duration = minutes + ":" + seconds; 

     videos.add(new YouTubeVideo(title, author, url, thumbUrl, videoId, uploaded, duration)); 
    } 

    YouTubePlaylist playlist = new YouTubePlaylist(author, playlistId, playlistTitle, videos); 
    return playlist; 
}//end fetchPlaylistVideos 
21
  • İndir picasso kavanoz dosyası ve

  • Kullanım picasso imajını indirmek için "kütüphanelerini" klasöründe o kavanoz dosyasını koymak

  • Kullanım yöntemi extractYoutubeId(url) YouTubeVideo Url'sinin

    den youtube id ayıklamak için

Youtube video görüntüsünü elde etmek için aşağıdaki gibi bu url n bağlantısı ve youtube id koyun: "http://img.youtube.com/vi/"+extractYoutubeId(url)+"/0.jpg"

Youtube_Video_thumnail

package com.app.download_video_demo; 

    import java.net.MalformedURLException; 
    import java.net.URL; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.util.Log; 
    import android.widget.ImageView; 

    import com.squareup.picasso.Picasso; 


    // get Picasso jar file and put that jar file in libs folder 

    public class Youtube_Video_thumnail extends Activity 
    { 
     ImageView iv_youtube_thumnail,iv_play; 
     String videoId; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      // TODO Auto-generated method stub 
      super.onCreate(savedInstanceState); 
      super.setContentView(R.layout.youtube_video_activity); 

      init(); 

      try 
      { 
       videoId=extractYoutubeId("http://www.youtube.com/watch?v=t7UxjpUaL3Y"); 

       Log.e("VideoId is->","" + videoId); 

       String img_url="http://img.youtube.com/vi/"+videoId+"/0.jpg"; // this is link which will give u thumnail image of that video 

       // picasso jar file download image for u and set image in imagview 

       Picasso.with(Youtube_Video_thumnail.this) 
       .load(img_url) 
       .placeholder(R.drawable.ic_launcher) 
       .into(iv_youtube_thumnail); 

      } 
      catch (MalformedURLException e) 
      { 
       e.printStackTrace(); 
      } 

     } 
     public void init() 
     { 
      iv_youtube_thumnail=(ImageView)findViewById(R.id.img_thumnail); 
      iv_play=(ImageView)findViewById(R.id.iv_play_pause); 
     } 

     // extract youtube video id and return that id 
     // ex--> "http://www.youtube.com/watch?v=t7UxjpUaL3Y" 
     // videoid is-->t7UxjpUaL3Y 


     public 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; 
     } 

    } 

youtube_video_activity.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <RelativeLayout 
     android:id="@+id/webvideo_layout2" 
     android:layout_width="250dp" 
     android:layout_height="180dp" 
     android:layout_gravity="center" 
     android:layout_marginBottom="10dp" 
     android:layout_marginTop="10dp" 
     > 


     <ImageView 
      android:id="@+id/img_thumnail" 
      android:layout_width="250dp" 
      android:layout_height="180dp" 
      android:layout_centerInParent="true" 
      android:scaleType="fitXY" /> 

     <ImageView 
      android:id="@+id/iv_play_pause" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:src="@drawable/icn_play" /> 
    </RelativeLayout> 

</LinearLayout> 
+1

harika bir iş ..... yardım için teşekkürler .. – Bunny

+0

Volley de harika çalıştı – BlackPearl

4

kendi başınıza başlatmaya denediniz bu

public static String getYoutubeThumbnailUrlFromVideoUrl(String videoUrl) { 
    String imgUrl = "http://img.youtube.com/vi/"+getYoutubeVideoIdFromUrl(videoUrl) + "/0.jpg"; 
    return imgUrl; 
} 

public static String getYoutubeVideoIdFromUrl(String inUrl) { 
    if (inUrl.toLowerCase().contains("youtu.be")) { 
     return inUrl.substring(inUrl.lastIndexOf("/") + 1); 
    } 
    String pattern = "(?<=watch\\?v=|/videos/|embed\\/)[^#\\&\\?]*"; 
    Pattern compiledPattern = Pattern.compile(pattern); 
    Matcher matcher = compiledPattern.matcher(inUrl); 
    if (matcher.find()) { 
     return matcher.group(); 
    } 
    return null; 
} 
+1

En iyi çözüm, her durumda dinamically çalışır! Teşekkürler – Pelanes

İlgili konular