如何在Android中制作YouTube视频缩略图?

Kri*_*hna 22 youtube android

在我的Android活动中,我想通过YouTube应用程序或其他方式播放来自YouTube的视频.为此,我想在我的活动中加载视频的缩略图.

这可能吗?如果是这样,怎么样?

Cha*_*ltz 63

YouTube会将视频的缩略图放在特定的可预测网址上.这会有点痛苦,但我确信您可以找到一种方法来显示URL中的图像,或者下载它们然后显示它们.

以下是我的博客上有关这些缩略图URL的信息:http: //alamoxie.com/blog/web-design/add-youtube-thumbnails/

我将复制并粘贴我在博客文章中写的内容:

查看视频的链接 - 例如, http://www.youtube.com/watch?v=GDFUdMvacI0

在这种情况下,取video ID......之后的部分.如果URL长于此值,则只能执行下一个&符号.例如,是一样的,.“v=”GDFUdMvacI0http://www.youtube.com/watch?v=GDFUdMvacI0&feature=youtu.beGDFUdMvacI0

然后,只需将您的视频ID替换为以下网址中的视频ID即可:

0.jpg是一个全尺寸的图像.其他三个非常小(120×90),并由YouTube从视频中的三个特定点自动拍摄.


小智 25

  • 下载picasso jar文件并将该jar文件放在"libs"文件夹中

  • 使用毕加索下载图像

  • 使用方法extractYoutubeId(url) 从YoutubeVideo Url中提取youtube id

要获取youtube视频的图像,请使用给定的链接并将youtube id放在该网址中,如下所示: "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;
        }

    }
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)


Abh*_*hek 8

试试这个

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

public static String getYoutubeVideoIdFromUrl(String inUrl) {
   inUrl = inUrl.replace("&feature=youtu.be", "");
   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;
}
Run Code Online (Sandbox Code Playgroud)