`
liuguihua0823
  • 浏览: 110628 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JAVA提取优酷等视频网址的视频信息(持续更新中......)

阅读更多

支持以下网址:优酷、土豆、酷6、乐视、腾讯、搜狐、凤凰视频、音悦台MV播放页面的解析,解析出来的属性包括:视频标题、视频缩略图、视频简介、视频时长、视频来源、视频页面地址、视频FLASH地址、页面嵌入HTML代码。

 

版本更新说明:
1、2011-09-12 创建版本,支持优酷、土豆、酷6、6间房、新浪、搜狐、56(我乐)视频播放页面的信息解析
2、2011-09-13 新加对凤凰视频的支持,链接地址不在支持的列表中时返回原链接地址以及链接的页面标题

3、2011-09-23 新加对音悦台MV播放也的解析支持http://www.yinyuetai.com

4、2015-05-25 更新支持,支持视频:优酷、土豆、酷6、乐视、腾讯、搜狐、凤凰视频、音悦台MV

 

使用方法如下:

1、视频对象类com.guihua.video.extract.Video.java

package com.guihua.video.extract;

import java.io.Serializable;

public class Video implements Serializable {

	private static final long serialVersionUID = -6220973207083491817L;

	private String title = "";// 视频标题

	private String thumbnail = "";// 视频缩略图

	private String summary = "";// 视频简介

	private String time = "";// 视频时长

	private String source = "";// 视频来源

	private String pageUrl = "";// 视频页面地址

	private String flashUrl = "";// 视频FLASH地址

	private String htmlCode = "";// 视频HTML代码

	public String getTitle() {
		if (null == title) {
			return "";
		} else {
			return title;
		}
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getThumbnail() {
		if (null == thumbnail) {
			return "";
		} else {
			return thumbnail;
		}
	}

	public void setThumbnail(String thumbnail) {
		this.thumbnail = thumbnail;
	}

	public String getSummary() {
		if (null == summary) {
			return "";
		} else {
			return summary;
		}
	}

	public void setSummary(String summary) {
		this.summary = summary;
	}

	public String getTime() {
		if (null == time) {
			return "";
		} else {
			return time;
		}
	}

	public void setTime(String time) {
		this.time = time;
	}

	public String getSource() {
		if (null == source) {
			return "";
		} else {
			return source;
		}
	}

	public void setSource(String source) {
		this.source = source;
	}

	public String getPageUrl() {
		if (null == pageUrl) {
			return "";
		} else {
			return pageUrl;
		}
	}

	public void setPageUrl(String pageUrl) {
		this.pageUrl = pageUrl;
	}

	public String getFlashUrl() {
		if (null == flashUrl) {
			return "";
		} else {
			return flashUrl;
		}
	}

	public void setFlashUrl(String flashUrl) {
		this.flashUrl = flashUrl;
	}

	public String getHtmlCode() {
		if (null == htmlCode) {
			return "";
		} else {
			return htmlCode;
		}
	}

	public void setHtmlCode(String htmlCode) {
		this.htmlCode = htmlCode;
	}

}

 

2、测试类代码

 

String url = "http://v.youku.com/v_show/id_XMzAyMjE1Nzgw.html";
// String url = "http://www.tudou.com/programs/view/Zkazx5iaUSQ/";
// String url = "http://v.ku6.com/special/show_4024167/Dwq_4xKT5Go4f4F6.html";
// String url = "http://v.ku6.com/show/bFx2VCEiF15U53E6.html";
// String url = "http://6.cn/watch/14757577.html";
// String url = "http://www.56.com/u37/v_NjE3OTQ4NTg.html";
// String url = "http://video.sina.com.cn/p/news/s/v/2011-09-11/133861482545.html";
// String url = "http://tv.sohu.com/20110912/n319076906.shtml";
// String url = "http://v.ifeng.com/documentary/discovery/201109/ed52d159-a3f4-4969-972d-c9e6d51d00ff.shtml";
// String url = "http://www.yinyuetai.com/video/271439";
// String url = "http://www.baidu.com/";

Video video = VideoUtil.getVideoInfo(url);
System.out.println("视频标题:" + video.getTitle());
System.out.println("视频地址:" + video.getFlashUrl());
System.out.println("视频时长:" + video.getTime());
System.out.println("视频来源:" + video.getSource());
System.out.println("视频简介:" + video.getSummary());
System.out.println("视频缩略图:" + video.getThumbnail());
System.out.println("视频原始地址:" + video.getPageUrl());
System.out.println("视频网页代码:" + video.getHtmlCode());
7
6
分享到:
评论
25 楼 dreamzal 2016-12-28  
不咋样,不能用。
24 楼 dreamzal 2016-12-28  
23 楼 wdmcygah 2016-07-01  
发现有些土豆地址不支持,比如:http://www.tudou.com/programs/view/ZZo6Je9DUvg/
22 楼 sunshine52013 2015-09-07  
提取出来的视频除了优酷能在微信客户端打开  其他的都不行
21 楼 AllureLove2580 2015-04-20  
楼主 空指针怎么解决。。
20 楼 liyuhaoo 2014-12-17  
目前你的这个方法已经不行了啊
19 楼 pan921103 2014-10-30  
根本就没用
18 楼 nash_2012 2014-03-27  
包非常不错,是我需要的,非常感谢
17 楼 jinbaking 2012-06-30  
你好!现在这段代码好像只有6房间和56视频网好使了,其他的都不能用了啊~~有什么新的方法吗?
16 楼 jinbaking 2012-06-30  
韩国特别人体吧人
15 楼 Flyinggg 2012-04-20  
null
Exception in thread "main" java.lang.NullPointerException
at com.hlj.test.Know.main(Know.java:24)


用的你测试的方法。。。

出现video为null。。。这是什么问题。


import org.osm.video.Video;
import org.osm.video.VideoUtil;

public class Know {

public static void main(String[] args) {
    //String url = "http://v.youku.com/v_show/id_XMzAyMjE1Nzgw.html"; 
     String url = "http://www.tudou.com/programs/view/Zkazx5iaUSQ/"; 
    // String url = "http://v.ku6.com/special/show_4024167/Dwq_4xKT5Go4f4F6.html"; 
    // String url = "http://v.ku6.com/show/bFx2VCEiF15U53E6.html"; 
    // String url = "http://6.cn/watch/14757577.html"; 
    // String url = "http://www.56.com/u37/v_NjE3OTQ4NTg.html"; 
    // String url = "http://video.sina.com.cn/p/news/s/v/2011-09-11/133861482545.html"; 
    // String url = "http://tv.sohu.com/20110912/n319076906.shtml"; 
    // String url = "http://v.ifeng.com/documentary/discovery/201109/ed52d159-a3f4-4969-972d-c9e6d51d00ff.shtml"; 
    // String url = "http://www.yinyuetai.com/video/271439"; 
    // String url = "http://www.baidu.com/"; 
     
    Video video = VideoUtil.getVideoInfo(url); 
    System.out.println(video);
    System.out.println("视频标题:" + video.getTitle()); 
    System.out.println("视频地址:" + video.getFlashUrl()); 
    System.out.println("视频时长:" + video.getTime()); 
    System.out.println("视频来源:" + video.getSource()); 
    System.out.println("视频简介:" + video.getSummary()); 
    System.out.println("视频缩略图:" + video.getThumbnail()); 
    System.out.println("视频原始地址:" + video.getPageUrl()); 
    System.out.println("视频网页代码:" + video.getHtmlCode()); 
}
}
14 楼 hy0664 2012-02-03  
hy0664 写道
hy0664 写道
在你原代码上加入网易视频的支持:

public static Video getNetEaseVideo(String url) throws Exception {
		Document doc = getURLContent(url);

		String content = doc.html();
		content = content.substring(content.indexOf("topicid"));
		content = content.substring(0,content.indexOf("</script>"));
		content = content.replaceAll("\"","").replaceAll("\n","").trim();
		String contents[] = content.split(";");
		/**
		 * 视频标题
		 */
		String title = getScriptVarByName("title=",contents);
		String topicid = getScriptVarByName("topicid=",contents);
		String vid = getScriptVarByName("vid=",contents);
		/**
		 * 视频缩略图
		 */
		String imgpath = getScriptVarByName("imgpath=",contents);

		/**
		 * 视频地址
		 */
		String flash = "http://img1.cache.netease.com/flvplayer081128/~false~"+topicid+"_"+vid+"~"+imgpath.substring(7,imgpath.length()-4)+"~.swf";
		Video video = new Video();
		video.setTitle(title);
		video.setThumbnail(imgpath);
		video.setFlashUrl(flash);
		video.setSource("网易视频");
		video.setPageUrl(url);
		// video.setSummary(summary);
		video.setHtmlCode(getHtmlCode(flash));
		return video;
	}

private static String getScriptVarByName(String name,String contents[]) {
		String text = "";
		for(String s:contents){
			if(s.contains(name)){
				text = s.substring(s.indexOf(name)+name.length());
				break;
			}
		}
		return text;
	}




再加腾讯视频支持

public static Video getQQVideo(String url) throws Exception {
		Document doc = getURLContent(url);
		/**
		 * 视频标题
		 */
		String vid = url.substring(url.lastIndexOf("/")+1,url.lastIndexOf("."));
		System.out.println(vid);
		String title = doc.title().split("-")[0].trim();
		/**
		 * 视频地址
		 */
		String flash = "http://imgcache.qq.com/tencentvideo_v1/player/TencentPlayer.swf?vid="+vid;
		Video video = new Video();
		video.setTitle(title);
		video.setSource("腾讯视频");
		video.setFlashUrl(flash);
		return video;
	}


忘了两个参数:
	public final static String VIDEO_DOMAIN_NETEASE = "v.163.com/video";//网易
	
	public final static String VIDEO_DOMAIN_QQ = "v.qq.com/play";//QQ
13 楼 hy0664 2012-02-03  
hy0664 写道
在你原代码上加入网易视频的支持:

public static Video getNetEaseVideo(String url) throws Exception {
		Document doc = getURLContent(url);

		String content = doc.html();
		content = content.substring(content.indexOf("topicid"));
		content = content.substring(0,content.indexOf("</script>"));
		content = content.replaceAll("\"","").replaceAll("\n","").trim();
		String contents[] = content.split(";");
		/**
		 * 视频标题
		 */
		String title = getScriptVarByName("title=",contents);
		String topicid = getScriptVarByName("topicid=",contents);
		String vid = getScriptVarByName("vid=",contents);
		/**
		 * 视频缩略图
		 */
		String imgpath = getScriptVarByName("imgpath=",contents);

		/**
		 * 视频地址
		 */
		String flash = "http://img1.cache.netease.com/flvplayer081128/~false~"+topicid+"_"+vid+"~"+imgpath.substring(7,imgpath.length()-4)+"~.swf";
		Video video = new Video();
		video.setTitle(title);
		video.setThumbnail(imgpath);
		video.setFlashUrl(flash);
		video.setSource("网易视频");
		video.setPageUrl(url);
		// video.setSummary(summary);
		video.setHtmlCode(getHtmlCode(flash));
		return video;
	}

private static String getScriptVarByName(String name,String contents[]) {
		String text = "";
		for(String s:contents){
			if(s.contains(name)){
				text = s.substring(s.indexOf(name)+name.length());
				break;
			}
		}
		return text;
	}




再加腾讯视频支持

public static Video getQQVideo(String url) throws Exception {
		Document doc = getURLContent(url);
		/**
		 * 视频标题
		 */
		String vid = url.substring(url.lastIndexOf("/")+1,url.lastIndexOf("."));
		System.out.println(vid);
		String title = doc.title().split("-")[0].trim();
		/**
		 * 视频地址
		 */
		String flash = "http://imgcache.qq.com/tencentvideo_v1/player/TencentPlayer.swf?vid="+vid;
		Video video = new Video();
		video.setTitle(title);
		video.setSource("腾讯视频");
		video.setFlashUrl(flash);
		return video;
	}
12 楼 hy0664 2012-02-03  
在你原代码上加入网易视频的支持:

public static Video getNetEaseVideo(String url) throws Exception {
		Document doc = getURLContent(url);

		String content = doc.html();
		content = content.substring(content.indexOf("topicid"));
		content = content.substring(0,content.indexOf("</script>"));
		content = content.replaceAll("\"","").replaceAll("\n","").trim();
		String contents[] = content.split(";");
		/**
		 * 视频标题
		 */
		String title = getScriptVarByName("title=",contents);
		String topicid = getScriptVarByName("topicid=",contents);
		String vid = getScriptVarByName("vid=",contents);
		/**
		 * 视频缩略图
		 */
		String imgpath = getScriptVarByName("imgpath=",contents);

		/**
		 * 视频地址
		 */
		String flash = "http://img1.cache.netease.com/flvplayer081128/~false~"+topicid+"_"+vid+"~"+imgpath.substring(7,imgpath.length()-4)+"~.swf";
		Video video = new Video();
		video.setTitle(title);
		video.setThumbnail(imgpath);
		video.setFlashUrl(flash);
		video.setSource("网易视频");
		video.setPageUrl(url);
		// video.setSummary(summary);
		video.setHtmlCode(getHtmlCode(flash));
		return video;
	}

private static String getScriptVarByName(String name,String contents[]) {
		String text = "";
		for(String s:contents){
			if(s.contains(name)){
				text = s.substring(s.indexOf(name)+name.length());
				break;
			}
		}
		return text;
	}

11 楼 Hobo86 2011-12-16  
要是把列表的再加上就完美了
10 楼 nuoheng 2011-11-06  
9 楼 liuguihua0823 2011-09-14  
sxitzmg 写道
?????
Exception in thread "main" java.lang.IllegalArgumentException: usage: supply url to fetch
at org.osm.jsoup.helper.Validate.isTrue(Validate.java:45)
at org.osm.jsoup.examples.ListLinks.main(ListLinks.java:16)

视频地址贴一下
8 楼 sxitzmg 2011-09-13  
?????
Exception in thread "main" java.lang.IllegalArgumentException: usage: supply url to fetch
at org.osm.jsoup.helper.Validate.isTrue(Validate.java:45)
at org.osm.jsoup.examples.ListLinks.main(ListLinks.java:16)
7 楼 sghcel 2011-09-13  
标记一下!!1
6 楼 xingxuan2101 2011-09-13  

相关推荐

    java web在线播放视频.zip

    java web在线播放视频java web在线播放视频.zipjava web在线播放视频.zipjava web在线播放视频.zipjava web在线播放视频.zipjava web在线播放视频.zipjava web在线播放视频.zipjava web在线播放视频.zipjava web在线...

    Java实现解析dcm医学影像文件并提取文件信息的方法示例

    本文详细介绍了Java实现解析dcm医学影像文件并提取文件信息的方法,包括安装dcm4che库、测试类实现、dcm文件解析、文件信息提取等步骤。该方法可以帮助开发者快速实现dcm文件的解析和信息提取,提高医疗信息化系统的...

    Java 获取视频时长、格式、大小需要的jar

    在Java编程环境中,有时我们需要处理多媒体文件,特别是视频文件,比如获取视频的时长、格式以及文件大小等信息。为了实现这些功能,开发者通常会依赖第三方库。在本例中,我们关注的是名为"jave-1.0.2"的库,它是一...

    java用ffmpeg截取视频图片

    在这个例子中,`-i` 参数指定输入的视频文件,`-vframes 1` 指定仅提取第一帧作为图片,最后是输出图片的路径。运行 `main` 方法,将会从指定的视频文件中截取首帧图片并保存到指定路径。 对于更复杂的操作,如视频...

    基于java的开发源码-从压缩包中提取文件.zip

    基于java的开发源码-从压缩包中提取文件.zip 基于java的开发源码-从压缩包中提取文件.zip 基于java的开发源码-从压缩包中提取文件.zip 基于java的开发源码-从压缩包中提取文件.zip 基于java的开发源码-从压缩包中...

    Java利用FFmpeg解析视频,截图,获取视频播放时间

    在Java中,我们可以构建一个包含"ffprobe"命令和视频文件路径的字符串数组,然后使用ProcessBuilder运行该命令,读取返回的元数据信息。 2. **视频截图**:要截取视频的某一帧作为图片,可以使用FFmpeg的"-ss"选项...

    java后台利用ffmpeg实现将视频截取某一帧图片并保存

    FFmpeg支持多种操作,如转换、合并、剪辑视频以及从视频中提取音频等。对于我们的需求,关键在于调用适当的函数来截取视频帧。以下是一个简单的步骤概述: 1. **引入依赖**:在项目中,确保引入了`ffmpeg.jar`,在...

    Java利用VLC实现从视频中抽取帧图片

    在Java编程环境中,利用VLC库可以实现在视频中抽取帧图片的功能。VLC是一款流行的开源多媒体播放器,同时也提供了一个强大的开发库,名为libVLC,使得开发者能够利用其功能进行媒体处理,包括视频帧的提取。在这个...

    java使用Xuggler获得视频时长,分辨率,高宽,码率等信息

    Java编程语言在处理多媒体文件,特别是视频文件时,常常需要获取诸如时长、分辨率、高宽比以及码率等关键信息。Xuggler是一个强大的开源库,专为处理音视频数据而设计,它提供了丰富的API,使得在Java环境中解析和...

    JAVA_API1.6文档(中文)

    java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...

    opencv_java.so+opencv.jar

    在Java编程环境中,OpenCV提供了`opencv_java.so`动态链接库文件和`opencv.jar`库文件,以便开发者能够利用其功能。 `opencv_java.so`是OpenCV的Java接口的动态链接库,通常在Linux系统中使用。它是OpenCV库的本机...

    Java获取文件分辨率,大小等基本信息Demo

    在Java编程语言中,获取文件的基本信息,如分辨率、大小等,是常见的文件操作任务,尤其是在处理多媒体文件,如视频时。本示例Demo提供了两种方法来实现这一目标,使用了两个不同的库:xuggle-xuggler-5.4.jar 和 ...

    纯java代码实现各种视频转flv格式,支持在线播放。

    Java中的`java.io`和`javax.imageio`包提供了读取视频帧的API,如`BufferedImage`和`ImageIO`类。我们可以逐帧读取视频,提取其图像数据。 2. **音频处理**:同样,我们也要处理视频的音频部分。Java Sound API...

    java 实现视频上传

    在Java开发中,实现视频上传是一项常见的任务,尤其在构建Web应用或云存储服务时。这个Demo涵盖了几个关键的技术点,包括文件上传、视频转码和播放。让我们逐一深入探讨这些知识点。 首先,**文件上传**是Web应用...

    java在上传视频中截取一张视频内的截图

    Java在处理多媒体任务时,尤其是上传视频时,经常需要从中截取一帧作为视频的预览图或封面。这个过程通常涉及到对视频文件的操作,包括读取、解析和图像处理。下面将详细介绍如何使用Java来实现这个功能。 首先,...

    视频时长和截取视频封面(Java)

    视频时长的获取通常涉及到解析视频元数据,元数据中包含了视频的总帧数、帧率等信息,通过这些信息我们可以计算出视频的总时长。例如,使用Xuggler库,你可以创建一个`Container`对象来打开视频文件,然后获取`...

    JAVA API官方中文版手册chm文件文档

    java.applet java.awt java.awt.color java.awt.datatransfer java.awt.dnd java.awt.event java.awt.font java.awt.geom java.awt.im java.awt.im.spi java.awt.image java.awt.image.renderable java....

    Java利用vlc实现播放在线视频

    在Java编程环境中,利用VLC库来实现在线视频播放是一个高效且灵活的选择。VLC是一款强大的多媒体播放器,它的开源特性使得开发者可以将其内核集成到自己的应用中,以处理各种视频流。在这个项目中,我们将关注如何...

    Android 音视频配音之音频提取、截断、混音、合并、合成(一)——从视频中提取音频文件

    首先,我们从最基础的开始——从视频文件中提取音频。 ### 1. 视频中的音频提取 Android提供了`MediaExtractor`类,它能够从多媒体文件中提取音频和视频轨道。要从视频中提取音频,首先我们需要创建一个`...

    阿里云视频点播(视频上传+视频点播)JAVA

    7. **视频管理**:包括视频的列举、删除、更新元数据等操作,可以使用点播服务提供的管理接口来实现。 8. **安全与监控**:为了保障视频内容的安全,可以设置防盗链策略,限制非法访问。同时,通过阿里云的监控服务...

Global site tag (gtag.js) - Google Analytics