使用了一下JNative,调用MediaInfo.dll的动态链接库。
MediaInfo提供的源码中很多的Example
其中有各类就是Mediainfo提供给用户用JNative调用的类,把它拷到项目下就行了叫做MediaInfoDLL.JNative.java
还有一个是交给我们怎么使用上面那个类的,做的真是周到,叫HowToUseDLL.jNative.java
可以通过这个来学习。
MediaInfo mi = new MediaInfo();
mi.Open(sourceFilePath);
mi.Option("Complete", "0");
format = mi.Get(MediaInfo.Stream_General, 0, "Format", MediaInfo.Info_Text, MediaInfo.Info_Name);
filesize = mi.Get(MediaInfo.Stream_General, 0, "FileSize", MediaInfo.Info_Text, MediaInfo.Info_Name);
duration1 = mi.Get(MediaInfo.Stream_General, 0, "Duration", MediaInfo.Info_Text, MediaInfo.Info_Name);
videoFormat = mi.Get(MediaInfo.Stream_Video, 0, "Format", MediaInfo.Info_Text, MediaInfo.Info_Name);
videoWidth = mi.Get(MediaInfo.Stream_Video, 0, "Width", MediaInfo.Info_Text, MediaInfo.Info_Name);
videoHeight = mi.Get(MediaInfo.Stream_Video, 0, "Height", MediaInfo.Info_Text, MediaInfo.Info_Name);
videoFrameRate = mi.Get(MediaInfo.Stream_Video, 0, "FrameRate", MediaInfo.Info_Text, MediaInfo.Info_Name);
audioFormat = mi.Get(MediaInfo.Stream_Audio, 0, "Format", MediaInfo.Info_Text, MediaInfo.Info_Name);
audioBitRate = mi.Get(MediaInfo.Stream_Audio, 0, "BitRate", MediaInfo.Info_Text, MediaInfo.Info_Name);
上面的代码可以得到视频的General,Video,Audio的信息,比如大小,时长,帧率,码率,高宽等等。
对于其中的参数"Format"等,可以用一下代码获得,其实是在HowToUseDLL.jNative.java这个文件中的,叫做Info_Parameters。
String File_Name = "C:\\v\\content\\uploads\\admin\\shenqi.wmv";
if (args.length > 0)
File_Name = args[0];
String To_Display = "";
//Info about the library
// To_Display += MediaInfo.Option_Static("Info_Version");
To_Display += "\r\n\r\nInfo_Parameters\r\n";
To_Display += MediaInfo.Option_Static("Info_Parameters");
//To_Display += "\r\n\r\nInfo_Capacities\r\n";
//To_Display += MediaInfo.Option_Static("Info_Capacities");
// To_Display += "\r\n\r\nInfo_Codecs\r\n";
//To_Display += MediaInfo.Option_Static("Info_Codecs");
//An example of how to use the library
MediaInfo MI = new MediaInfo();
To_Display += "\r\n\r\nOpen\r\n";
if (MI.Open(File_Name)>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", "1");
To_Display += MI.Inform();
System.out.println(To_Display);
我这个是在windows上的,MediaInfo.dll和JNativeCpp.dll文件放在了system32下面,不知道怎么能用在linux下,持续更新中....
分享到:
相关推荐
jnative包用于调用dll动态库,目前(2011-12-20)最新版本为1.4RC2,官方正式版本文档为1.3,详见官方地址: http://jnative.free.fr/docs/ 这是最新的帮助文档HTML离线包,希望对大家有帮助 Packages org.xvolks....
《深入解析org.xvolks.jnative源码》 在Java世界中,为了实现与本地代码的交互,开发者经常需要借助JNI(Java Native Interface)技术。然而,JNI的使用门槛相对较高,涉及到C/C++编程,这给许多Java开发者带来了...
《深入理解JNative:Java调用DLL的桥梁》 在Java世界中,由于其平台无关性的特性,直接调用本地动态链接库(DLL)并非易事。然而,JNative库的出现,为Java程序员提供了一个方便的解决方案,使得Java能够无缝地与C/...
JNative是一个Java库,它为Java程序员提供了一种直接调用这些本地代码的能力,无需通过JNI(Java Native Interface)的复杂过程。 JNative的核心思想是将Java方法与本地函数绑定,使得Java代码可以像调用普通Java...
1. **导入JNative.jar**: 将`JNative.jar`添加到项目的类路径中,这样Java虚拟机(JVM)就能找到并加载这个库。 2. **声明本地方法**: 在Java类中使用`native`关键字声明本地方法。例如: ```java public class ...
**JNative API说明文档** **一、JNative简介** JNative是Java平台上的一个库,它允许Java程序直接调用本地(C/C++)代码,实现了Java与原生代码的无缝交互。通过JNative,开发者可以利用Java的跨平台优势,同时...
JNative getstring = new JNative("libmylib.so", "getstring"); getstring.setRetVal(Type.STRING); getstring.invoke(); System.out.println(getstring.getRetVal()); } } 4.输出结果 this is in test_a.....
标题中的"JNative.jar"和"JNativeCpp.dll"是两个关键组件,分别代表Java和C++之间的交互层。在IT行业中,这样的组合通常用于实现Java应用与原生系统资源的紧密集成,例如调用操作系统底层功能或者加速计算密集型任务...
《Jnative资源包源码详解》 Jnative是一款强大的Java本地接口库,它允许Java程序直接调用C和C++的动态链接库(DLL或.so文件),极大地拓展了Java平台的功能。本文将深入探讨Jnative的核心概念、工作原理以及如何在...
这里我们关注的工具是`jnative`,它是一个Java本地接口(Java Native Interface,JNI)的实现,允许Java代码直接调用C++编写的动态链接库(DLL)或共享库(如libJNativeCpp.so在Linux系统中)。这个过程涉及的知识点...
JNative完全自学手册 本手册旨在帮助读者完全深度理解掌握JNative核心技术,通过实例众多的讲解,让读者快速掌握JNative技术。 JNative是Java Native Interface的缩写,允许Java程序调用本地函数库,实现Java程序...
《JNative综合学习指南》 在Java编程世界中,JNative是一个重要的工具,它允许Java程序直接调用本地(C/C++)代码,打破了Java原生的“一次编写,到处运行”的沙箱环境,为开发者提供了更强大的功能扩展能力。...
标题中的“jnative调用动态库”指的是Java中使用JNative库来调用本地(操作系统级别的)动态链接库(DLL或SO文件)的技术。在Java中,为了与操作系统底层功能进行交互,比如调用C/C++编译的库,我们可以使用Java ...
《JNative.jar包详解》 在Java编程领域,我们经常需要与本地代码进行交互,以利用C++或C等语言的高效性能或者调用特定的系统功能。这就是JNI(Java Native Interface)发挥作用的地方。JNative.jar包就是这样一个...
在Java程序中调用DLL(动态链接库)文件通常是通过JNI(Java Native Interface)来实现的,而JNative是JNI的一个封装库,它提供了一种更简洁的方式来调用C/C++编写的本地代码。这篇博客文章可能介绍了如何利用...
在这个场景中,我们关注的是JNative,一个简化Java调用C/C++库的开源库。 JNative 的优点在于它的易用性、数据类型处理的高效以及对回调函数的支持。在使用JNative之前,我们需要了解一些基本概念。例如,`...
**JNative:Java与本地代码交互的桥梁** 在Java编程中,有时我们需要调用本地操作系统提供的功能,或者利用已有的C/C++库,这时就需要用到JNative这样的库。JNative是一个开源的Java本地接口(JNI)工具包,它简化...
JNative库是实现这一目标的一种工具,它允许Java代码通过JNI(Java Native Interface)来调用C/C++编写的本地代码,进而调用Win32 API。JNative-1.3.2版本提供了对这一功能的支持。 首先,我们来理解一下Java ...
《深入解析JNative:连接Java与C++的桥梁》 JNative,作为一款强大的库,为Java程序员提供了与C++代码交互的能力。它允许Java应用程序调用C++编写的动态链接库(DLL或.so),从而扩展了Java的功能,特别是在处理...
《JNative:Java调用C++的桥梁》 在IT领域,跨语言通信是一个常见的需求,比如Java开发者可能需要调用C或C++编写的库来实现特定功能。JNative正是这样一个工具,它允许Java程序无缝地调用本地(Native)代码,尤其...