在我的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)
试试这个
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)
| 归档时间: |
|
| 查看次数: |
30767 次 |
| 最近记录: |