`
liuguihua0823
  • 浏览: 110715 次
  • 性别: 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 获取视频时长、格式、大小需要的jar

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

    java用ffmpeg截取视频图片

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

    java错误处理:java.lang.OutOfMemoryError: Java heap space

    ### Java 错误处理:java.lang.OutOfMemoryError: Java heap space 在Java应用程序开发过程中,经常遇到的一个问题就是内存溢出错误,特别是在处理大量数据或长时间运行的应用时。其中,“java.lang....

    北京圣思园Java.Web培训视频--笔记

    北京圣思园Java.Web培训视频的笔记,记录了视频里的重点内容和PPT

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

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

    java获取视频信息,帧(封面图片)

    在Java编程环境中,获取视频信息和提取视频帧作为封面图片是一项常见的任务,特别是在处理多媒体内容时。本篇文章将深入探讨如何使用FFmpeg这个强大的跨平台命令行工具,并结合Java进行调用来实现这一功能。FFmpeg是...

    JAVA获取视频缩略图

    首先,Java本身并不直接支持从视频文件中提取缩略图,但可以通过第三方库如JMF(Java Media Framework)或FFmpeg来实现。不过,JMF已经较为过时,目前更推荐使用FFmpeg库,它是一个强大的多媒体处理工具,提供了跨...

    java.io.CharConversionException: isHexDigit处理

    在 Java 项目中,出现了 java.io.CharConversionException: isHexDigit 异常,导致项目无法运行。该异常通常发生在 URL 传值时,例如在 JSP 页面中加载 JS 文件时。在 URL 传值时,服务器端获取参数时出现问题,导致...

    axis2.jar 解决 org.apache.axis2.util.JavaUtils.callStackToString问题

    &lt;Call Stack = DEBUG_FRAME = org.apache.axis2.util.JavaUtils.callStackToString(JavaUtils.java:564) DEBUG_FRAME = org.apache.axis2.description.ParameterIncludeImpl.debugParameterAdd(ParameterIncludeImpl...

    提取关键词(Java版)

    Java版的关键词提取程序可以广泛应用于新闻分析、文档摘要生成和智能推荐系统等场景。 TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用的统计方法,用于评估一个词在文档集合中的重要性。TF表示...

    java封装ffmpeg截取视频图片

    Java 封装FFmpeg库是将FFmpeg的强大功能与Java编程语言相结合的一种方式,使得开发者在Java环境中可以方便地处理视频和音频文件。FFmpeg是一个跨平台的解决方案,用于处理多媒体数据,包括视频转码、视频剪辑、视频...

    UnixFTPEntryParser.java和FTPTimestampParserImplExZH.java

    UnixFTPEntryParser的核心功能是对FTP服务器返回的类似于“drwxr-xr-x 5 user group 4096 Mar 1 15:33 folder”的条目进行解析,提取出文件或目录的权限、所有者、组、大小、最后修改日期等信息。 `...

    Java基于jsp的在线视频教育系统的实现.zip

    Java基于jsp的在线视频教育系统的实现.zipJava基于jsp的在线视频教育系统的实现.zipJava基于jsp的在线视频教育系统的实现.zipJava基于jsp的在线视频教育系统的实现.zipJava基于jsp的在线视频教育系统的实现.zipJava...

    JavaCV SIFT 特征提取

    在实际应用中,SIFT 特征提取常用于图像匹配、物体识别、3D重建等领域。由于其鲁棒性和不变性,SIFT 成为了计算机视觉中的经典方法,尽管现代技术如 SURF、ORB 和深度学习方法已经涌现,但 SIFT 仍然有其独特价值。

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

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

    java 视频截取 播放

    4. **视频截取**:视频截取通常涉及从视频文件中提取特定帧。这可以通过读取视频流,定位到所需帧,然后将其保存为图像文件(如JPEG或PNG)来实现。在Java中,这可能需要使用Xuggler或其他类似库来完成。 5. **视频...

    Java开发技术大全(500个源代码).

    outputMax.java 求两个数中的最大数 overflowExample.java 演示溢出 precedence.java 演示自加运算符的优先级 primeNumber.java 输出100-200之间的所有素数 ranking.java 评定成绩等级 rankingBySwitch.java ...

    java后端调用大华视频的demo

    在Java后端开发中,有时候我们需要与硬件设备进行交互,比如视频监控系统。"java后端调用大华视频的demo"就是一个典型的示例,它展示了如何利用Java调用大华提供的SDK来访问并控制大华监控设备。在这个场景中,...

    java.lang.UnsupportedClassVersionError Bad version number in .class file异常的解决办法

    在使用MyEclipse进行Java开发的过程中,可能会遇到`java.lang.UnsupportedClassVersionError: Bad version number in .class file`这样的错误提示。这种错误通常发生在编译器版本与实际使用的JVM版本不匹配的情况下...

    Struts的java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource异常的解决方法

    然而,对于初学者来说,遇到错误是常有的事,比如“java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource”。这个异常表明在运行时,系统无法找到指定的类,即Apache Commons DBCP的...

Global site tag (gtag.js) - Google Analytics