文档章节

J2EE中使用MediaInfo库获取视频信息

雷霄骅
 雷霄骅
发布于 2014/08/16 13:48
字数 507
阅读 28
收藏 1

MediaInfo 用来分析视频和音频文件的编码和内容信息,是一款是自由软件 (免费使用、免费获得源代码)。

我在J2EE项目软件中集成了它的DLL,很好用。

下面简单记录一下它的使用方法。
(系统开发平台是MyEclipse)

1.需要加入JNA库。加入项目的 Build Path 后就可以使用Java调用DLL了。

2.需要MediaInfo的Dll。可以放到“C:\Windows\System32”里面。

3.需要一个名为MediaInfo的类(在MediaInfoDLL.JNA.java中)。

4.加入以下代码(这是个片段)试一下:

String To_Display = "\r\n\r\nOpen\r\n";
MediaInfo MI = new MediaInfo();
if (MI.Open("test.flv")>0)
	To_Display+="is OK\r\n";
else
	To_Display+="has a problem\r\n";
To_Display += "\r\n\r\nInform with Complete=false\r\n";
MI.Option("Complete", "");
To_Display += MI.Inform();
MI.Close();

System.out.println(To_Display);

如果没问题,可以打印出test.flv的完整信息。


实际Struts2 + Spring + Hibernate项目中可以按照如下方式使用:

(一个实际的Action)

package action.video;


import javax.servlet.ServletContext;

import org.apache.struts2.ServletActionContext;

import service.BaseService;

import bean.Video;
import util.MediaInfo;
import com.opensymphony.xwork2.ActionSupport;
/**
 * @author 雷霄骅
 * Action
 */
public class VideoReadByID extends ActionSupport {
	private int videoid;
	private BaseService baseService;
	private String original_videoinfo;
	private String convert_videoinfo;
	private Video video;
	public int getVideoid() {
		return videoid;
	}
	public void setVideoid(int videoid) {
		this.videoid = videoid;
	}
	public BaseService getBaseService() {
		return baseService;
	}
	public void setBaseService(BaseService baseService) {
		this.baseService = baseService;
	}
	
	public Video getVideo() {
		return video;
	}
	public void setVideo(Video video) {
		this.video = video;
	}

	public String getOriginal_videoinfo() {
		return original_videoinfo;
	}
	public void setOriginal_videoinfo(String original_videoinfo) {
		this.original_videoinfo = original_videoinfo;
	}
	public String getConvert_videoinfo() {
		return convert_videoinfo;
	}
	public void setConvert_videoinfo(String convert_videoinfo) {
		this.convert_videoinfo = convert_videoinfo;
	}
	public String execute(){
		try{
			video=(Video) baseService.ReadByID("Video", videoid);
			ServletContext servletContext = ServletActionContext.getServletContext();
			String realfilePath=servletContext.getRealPath("/")+video.getPath();
			String realfileoriginalPath=servletContext.getRealPath("/")+video.getTemppath();
			//MediaInfo-------------------
			MediaInfo MI = new MediaInfo();
			MI.Option("Output", "HTML");
			original_videoinfo = "";
		    if (MI.Open(realfileoriginalPath)>0){
		    	MI.Option("Complete", "");
				original_videoinfo+= MI.Inform();
		    	}
		    	else{
		    	original_videoinfo+="媒体信息检测失败\r\n";
		    	}
			
			//----------------------------
			convert_videoinfo= "";
			if (MI.Open(realfilePath)>0){
				MI.Option("Complete", "");
				convert_videoinfo+= MI.Inform();
			}
		    else{
		    	convert_videoinfo+="媒体信息检测失败\r\n";
		    }
			
			//----------------------------
			//System.out.println(original_videoinfo);
			//System.out.println(convert_videoinfo);
			return SUCCESS;
		}
		catch(Exception ex){
			ex.printStackTrace();
			return ERROR;
		}
	}
}


最终original_videoinfo 和convert_videoinfo中都得到了相应媒体的信息,事实上分别是转码前和转码后视频文件的信息。

在J2EE项目中应该注意:MI.Option("Output", "HTML");这句一定要加,这样才能保证original_videoinfo 和convert_videoinfo中的字符串是HTML格式的(以<table>的形式输出)。




本文转载自:http://blog.csdn.net/leixiaohua1020/article/details/12623915

共有 人打赏支持
雷霄骅
粉丝 205
博文 419
码字总数 2129
作品 4
朝阳
程序员
私信 提问
StandardWrapper分析-tomcat6.x源码阅读

2013-10-20 StandardWrapper是什么StandardWrapper是负责对Servlet的封装,在tomcat的结构层次中属于最内层,跟Servlet最接近的组件,是装载Servlet的容器,StandardWrapper没有子容器,因为...

douglaswei
2013/11/19
0
0
重温JSP学习笔记--三大指令九大内置对象

最近在温习javaweb的相关基础知识,鉴于我弄丢了记满了整整一本的笔记,决定以后把笔记和一些学习上的心得以及碰到的一些问题统统都放在网上,今天看了一下jsp的相关基础,以下是笔记:   JSP三...

冬至饮雪
2016/01/26
0
0
EL表达式和JSTL标签

EL表达式: EL表达式用于获取数据,在JSP页面中可使用${标识符}的形式,通知JSP引擎调用pageContext.findAttribute()方法,以标识符为关键字从各个域对象中获取对象。如果域对象中不存在标识...

晨曦之光
2012/05/16
174
0
JSP自定义标签基础

自定义标签:就是程序员定义的一宗好难过JSP标签,这种标签把那些信息显示逻辑封装在一个单独的Java类中,通过一个xml文件来描述它的使用。当页面中需要使用类似的显示逻辑时,就可以在页面中...

晨曦之光
2012/05/16
135
0
web 基础巩固——JSP基础

本文按照官网文档总结,但是有可能会理解错误,学习时尽量和其他网站进行对比,同时也欢迎指出错误,好让我及时改正 什么是JSP页面? JSP页面是一个文本文档,包含两种类型的文本:静态数据,...

SXJR
2018/11/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式项目(五)iot-pgsql

书接上回,在Mapping server中,我们已经把数据都整理好了,现在利用postgresql存储历史数据。 iot-pgsql 构建iot-pgsql模块,这里我们写数据库为了性能考虑不在使用mybatis,换成spring jd...

lelinked
今天
2
0
一文分析java基础面试题中易出错考点

前言 这篇文章主要针对的是笔试题中出现的通过查看代码执行结果选择正确答案题材。 正式进入题目内容: 1、(单选题)下面代码的输出结果是什么? public class Base { private Strin...

一看就喷亏的小猿
今天
1
0
cocoapods 用法

cocoapods install pod install 更新本地已经install的仓库 更新所有的仓库 pod update --verbose --no-repo-update 更新制定的仓库 pod update ** --verbose --no-repo-update...

HOrange
今天
3
0
linux下socket编程实现一个服务器连接多个客户端

使用socekt通信一般步骤 1)服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。 2)客户端:socker()建立套接字,连接(connect)服务器,连接上后...

shzwork
昨天
3
0
android自定义viewgroup画背景

设计部要求背景实现一个背景边框带圆弧的效果: 所以想着用自定义控件画一个背景。 为了方便,继承的是LinearLayout,在onMeasure中先获取控件宽高: @Overrideprotected void onMeasure(in...

醉雨
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部