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

2014-08-16  来源:本站原创  分类:MediaInfo  人气:2 

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>的形式输出)。

相关文章
  • J2EE中使用MediaInfo库获取视频信息 2014-08-16

    MediaInfo 用来分析视频和音频文件的编码和内容信息,是一款是自由软件 (免费使用.免费获得源代码). 我在J2EE项目软件中集成了它的DLL,很好用. 下面简单记录一下它的使用方法. (系统开发平台是MyEclipse) 1.需要加入JNA库.加入项目的 Build Path 后就可以使用Java调用DLL了. 2.需要MediaInfo的Dll.可以放到"C:\Windows\System32"里面. 3.需要一个名为MediaInfo的类(在MediaInfoDLL.JNA

  • C++中使用MediaInfo库获取视频信息 2014-08-16

    MediaInfo 用来分析视频和音频文件的编码和内容信息,是一款是自由软件 (免费使用.免费获得源代码). 我在项目软件中集成了它的DLL,发现真的是非常好用! 下面简单记录一下它的使用方法. (系统开发平台是VC2010) 1.将下载下来的MediaInfo.dll拷贝到项目里面 2.拷贝MediaInfoDLL.h到项目目录 3.CPP文件中添加头文件和命名空间 #include "MediaInfoDLL.h" //Dynamicly-loaded library (.dll

  • php获取YouTube视频信息的方法 2014-02-10

    这篇文章主要介绍了php获取YouTube视频信息的方法,实例分析了YouTube视频格式的原理与解析的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了php获取YouTube视频信息的方法.分享给大家供大家参考.具体分析如下: YouTube的视频地址格式 https://www.youtube.com/watch?v=[VIDEO_ID] 例子:https://www.youtube.com/watch?v=psvkyf3PzjE //根据video id 获取YouTube视频

  • Python中获取对象信息的方法 2013-10-08

    这篇文章主要介绍了Python中获取对象信息的方法,是Python学习当中的基础知识,需要的朋友可以参考下 当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>> type(123) <type 'int'> >>> type('str') <type 'str'> >>> type(None) <

  • PHP中使用FFMPEG获取视频缩略图和视频总时长实例 2013-10-21

    这篇文章主要介绍了PHP中使用FFMPEG获取视频缩略图和视频总时长实例,需要的朋友可以参考下 //获得视频文件的缩略图 function getVideoCover($file,$time,$name) { if(empty($time))$time = '1';//默认截取第一秒第一帧 $strlen = strlen($file); // $videoCover = substr($file,0,$strlen-4); // $videoCoverName = $videoCover.'.

  • Oracle中获取会话信息的两个函数分享 2014-05-12

    这篇文章主要介绍了Oracle中获取会话信息的两个函数分享,本文分别讲解了USERENV和两个函数sys_context,并对可以获取哪些信息作了介绍,需要的朋友可以参考下 1. USERENV(OPTION) 返回当前的会话信息. OPTION='ISDBA'若当前是DBA角色,则为TRUE,否则FALSE. OPTION='LANGUAGE'返回数据库的字符集. OPTION='SESSIONID'为当前会话标识符. OPTION='ENTRYID'返回可审计的会话标识符. OPTION='

  • MySQL中show命令方法得到表列及整个库的详细信息(精品珍藏) 2014-07-28

    MySQL中show 句法得到表列及整个库的详细信息,方便查看数据库的详细信息. show databases; show tables from db_name; show columns from table_name from db_name; show index from talbe_name [from db_name]; show status; show variables; show [full] processlist; show table status [from db_

  • 完整删除ecshop中获取店铺信息的API 2014-10-02

    这篇文章主要介绍了完整删除ecshop中获取店铺信息的API的步鄹,十分的详细,推荐给小伙伴们. 使用的版本是ECShop_V2.7.3_UTF8_release1106,按以下步骤可完整去除其中获取店铺信息的API接口. 一. 删除获取店铺信息的API 1. admin/index.php 搜索 "elseif ($_REQUEST['act'] == 'main_api')" ,删除,源文件 489 - 539 行. 此段功能是官方获取ecshop版本.语种.发布时间.PHP版本.

  • android中利用GPS获取位置信息的源码分析 2012-11-14

    这几天做的项目中涉及到GPS方面的内容,然后也使用了GPS去获取经纬度,行驶距离,速度等,于是就对源码产生了兴趣,下面是很常见的GPS获取经纬度的代码: LocationManager locationManager; String serviceName = Context.LOCATION_SERVICE; locationManager = (LocationManager) this.getSystemService(serviceName); // 查找到服务信息 Criteria c

  • Koala中Controller层如何获取当前登录的用户的信息 2014-12-30

    1.背景说明 当前登录的普通用户只能修改.删除自己相关的信息,不能对其他用户的信息进行操作. 目前,Koala的权限系统能做到按钮级别的限制控制,好像无法对要显示的数据进行过滤,所以我想到在Controller层拿到当前用户的信息,在pageJson方法将当用用户信息传入application层,在组织查询条件时将用户的权限考虑进去,这样就能进行数据过滤了. 因此,问题就是,如何在Controller层如何获取当前登录的用户的信息. 2.解决方法 Koala3.x与4.x获取当前用户信息的方式不

  • 从BIRT报表文件中获取页面设置信息(页边距.纸张大小.输出方向)的方法 2015-02-27

    报表打印时,尤其是套打的报表,页面设置信息非常重要,比如页边距,纸张大小,输出方向等,而且每个报表的相关参数有可能不同,因此相关参数从具体报表中获取是一个非常正常而且合理的想法. 如果采用BIRT作为报表的开发工具,报表设计器负责报表的制作,BIRT运行时负责处理报表文件,对于浏览器来说,BIRT后端输出的是网页,并不包含页面设置相关信息,浏览器有自己的打印设置选项,也不会从网页中读取,但是报表设计器在报表设计时提供页面设置信息的设置界面,因此我们需要通过运行时API手工写代码从具体报表中获取页

  • php获取服务器信息的实现代码 2014-02-07

    php获取服务器信息的一段代码,包括获取mysql数据库版本信息.GD库信息.php上传相关信息等.有需要的朋友,可以参考下 <html> <head> <meta http-equiv="content-type" content="text/html; charset=gb2312"> <title>获取服务器信息</title> </head> <body> <?php

  • Python中使用PDB库调试程序 2014-02-18

    这篇文章主要介绍了Python中使用PDB库调试程序,本文讲解了使用PDB的二种模式以及PDB模式下的常用调试命令,需要的朋友可以参考下 Python自带的pdb库,发现用pdb来调试程序还是很方便的,当然了,什么远程调试,多线程之类,pdb是搞不定的. 用pdb调试有多种方式可选: 1. 命令行启动目标程序,加上-m参数,这样调用myscript.py的话断点就是程序的执行第一行之前 python -m pdb myscript.py 2. 在Python交互环境中启用调试 复制代码 代码如下

  • 研究Python的ORM框架中的SQLAlchemy库的映射关系 2014-06-14

    这篇文章主要介绍了研究Python的ORM框架中的SQLAlchemy库的映射关系,SQLAlchemy库是一个常见的Python中操作数据库的工具,需要的朋友可以参考下 前面介绍了关于用户账户的User表,但是现实生活中随着问题的复杂化数据库存储的数据不可能这么简单,让我们设想有另外一张表,这张表和User有联系,也能够被映射和查询,那么这张表可以存储关联某一账户的任意数量的电子邮件地址.这种联系在数据库理论中是典型的1-N (一对多)关系,用户表某一用户对应N条电子邮件记录. 之前我们的用户

  • c#反射机制学习和利用反射获取类型信息 2015-04-11

    反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的名称.限定符和参数等.有了反射,即可对每一个类型了如指掌.如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道 1..NET可执行应用程序结构 程序代码在编译后生成可执行的应用,我们首先要了解这种可执行应用程序的结构. 应用程序结构分为应用程序域-程序集-模块-类型-成员几

  • Python获取服务器信息的最简单实现方法 2015-04-22

    这篇文章主要介绍了Python获取服务器信息的最简单实现方法,涉及Python中urllib2库的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了Python获取服务器信息的最简单实现方法.分享给大家供大家参考.具体如下: 主要核心代码如下: sUrl = 'http://www.163.com' sock = urllib2.urlopen(sUrl) sock.headers.values() 希望本文所述对大家的Python程序设计有所帮助.

  • 如何获取用户信息-- "兼容".保护.挖掘与反侦查 2013-12-04

    读者:互联网观察人员.互联网媒体及广告从业人员.互联网开发技术人员.网络黑客 关键字:用户跟踪(User Track).Cookies.URL.Google.广告 引言:随着Firefox大举蚕食微软IE的浏览器市场,新一轮的桌面浏览器大战序幕已被拉开.无论是微软.Mozilla.Google .Opera,还是许多其他非主流浏览器生产厂商,都盯着这块蛋糕,以及蛋糕后面不可估量的市场--互联网定向广告. 首先我们和以往一样,要定义什么是这里关注的"用户信息".这篇文章中,及我本人理解,

  • Linux C 获取硬件信息的一些方法 2013-10-26

    Linux get hardware information over C ioctl(input output controller)函数获取磁盘信息 出现同一份代码RedHat上可以拿到 /dev/sda serial number, 在Ubuntu上出错 获取主板信息 出现有些主板找不到serial number,暂时有两种方法: dmidecode工具,github.com上有repo fork 从 /sys/class/dmi/id/ 中直接读取 get mac info 获得Unix

  • 在Python中使用NLTK库实现对词干的提取的教程 2013-10-14

    这篇文章主要介绍了在Python中使用NLTK库实现对词干的提取的教程,其中还用到了Pandas和IPython,需要的朋友可以参考下 什么是词干提取? 在语言形态学和信息检索里,词干提取是去除词缀得到词根的过程─-得到单词最一般的写法.对于一个词的形态词根,词干并不需要完全相同:相关的词映射到同一个词干一般能得到满意的结果,即使该词干不是词的有效根.从1968年开始在计算机科学领域出现了词干提取的相应算法.很多搜索引擎在处理词汇时,对同义词采用相同的词干作为查询拓展,该过程叫做归并. 一个面向

  • Python中使用第三方库xlrd来读取Excel示例 2013-11-12

    这篇文章主要介绍了Python中使用第三方库xlrd来读取Excel示例,本文讲解了安装xlrd.xlrd的API.使用xlrd读取Excel代码示例,需要的朋友可以参考下 本篇文章介绍如何使用xlrd来读取Excel表格中的内容,xlrd是第三方库,所以在使用前我们需要安装xlrd.另外我们一般会使用xlwt来写Excel,所以下一篇文章我们会来介绍如何使用xlwt来写Excel.xlrd下载:xlrd 0.8.0 安装xlrd 安装xlrd,只需运行setup即可,另外你也可以直接解压缩到你