JMF播放视频的问题

来源:互联网 发布:2015网络搞笑歌曲 编辑:程序博客网 时间:2024/05/17 05:04

最近在公司开发一个视频分析的项目时,由于用到的是Java进行开发,所以播放视频等操作采用了JMF进行开发。在开发过程中主要遇到以下几个问题:1、JMF的安装配置;2、JMF支持那些格式;3、如果格式不支持,可以采用那些软件进行转码。

1、JMF的安装配置问题:主要可以从Oracle上面下载一个jmf-2_1_1e-windows-i586.exe文件,双击运行进行安装;

      1.1 在安装过程中,JMF会产生一个文件夹,里面包含一些库(lib文件夹)和可执行文件(bin文件夹下);同时它还会产生21个(有的地方说是20个)以jm开头的dll文件;

      1.2 如果你是32位系统,则这21个dll文件会被添加到C:\Windows\System32文件夹下;如果你是64位操作系统,则这21个dll会被添加到C:\Windows\SysWOW64文件夹下;

      1.3 安装好之后,你需要将C:\Program Files (x86)\JMF2.1.1e\lib目录下的jmf.properties和jmf.properties.orig文件拷贝到你的JDK的lib目录下,需要将1.2中所说的21个dll文件拷贝到JDK的bin目录下;另外,在开发你的Java项目时,你需要将C:\Program Files (x86)\JMF2.1.1e\lib文件夹下的jmf.jar拷贝到你的项目下,并通过Build Path添加到项目环境;


2、JMF支持的视频格式:就我现在所进行的实验,mpg好像都是支持的,avi好像只支持一部分avi格式,其他的还没有实验过;


3、常用的转码工具:我用到的转码工具大概有以下几个:格式工厂(FormatFactory)、私房视频格式转换专业版、狸窝FLV视频转换器(只用于FLV视频转MPG格式),其他的应该还有很多视频编码格式转换的工具。


附上一段我参考的人家的测试代码:

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Component;


import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.RealizeCompleteEvent;


public class JMFMediaPlayer extends Applet implements ControllerListener {


private static final long serialVersionUID = 1L;
Player player = null;


public void init() {
setLayout(new BorderLayout());
MediaLocator mrl = new MediaLocator(new java.lang.String(
"file:///C:/Users/zzhao/Desktop/2.mpg"));
try {
player = Manager.createPlayer(mrl);
player.addControllerListener(this);
} catch (Exception e) {
System.err.println("Got exception " + e);
}
}


public void start() {
player.start();
}


public void stop() {
player.stop();
player.deallocate();
}


public void destroy() {
player.close();
}


public synchronized void controllerUpdate(ControllerEvent event) {
if (event instanceof RealizeCompleteEvent) {
Component comp;
if ((comp = player.getVisualComponent()) != null)
add("Center", comp);
if ((comp = player.getControlPanelComponent()) != null)
add("South", comp);
validate();
}
}
}


上述代码中,只要将MediaLocator中的String变量值改为你所需要展示的视频地址就可以了,另外,在这个地方可以使用MediaLocator来实现视频定位,也可以使用URL的形式实现,我实验过这两种方式,都是可以的。


最后,祝大家项目开发成功~

0 0
原创粉丝点击