java多媒体视频播放,。第7周作业——JMF(Java多媒体框架)的应用之音频播放与视频播放...

通过老师的提点 ,知道了要播放音频和视频需要JMF。下面是实例

播放mp3的例子

import java.io.File;

import java.net.MalformedURLException;

import java.net.URL;

import javax.media.Manager;

import javax.media.Player;

@SuppressWarnings("restriction")

public class SimpleAudioPlayer {

private Player audioPlayer = null;//建立一个播放接口

public SimpleAudioPlayer(URL url) throws Exception{//创建一个准备Player,准备好播放

audioPlayer = Manager.createRealizedPlayer(url);

}

@SuppressWarnings("deprecation")

public SimpleAudioPlayer(File file) throws MalformedURLException, Exception{//将本地文件改为URL

this(file.toURL());

}

public void play(){//直接调用播放方法就可以

audioPlayer.start();

}

public void stop(){//停止的时候一定要释放资源

audioPlayer.stop();

audioPlayer.close();

}

public static void main(String [] args) throws MalformedURLException, Exception{

File file = new File("d:/新滚滚红尘.mp3");

SimpleAudioPlayer Player = new SimpleAudioPlayer(file);

Player.play();

}

}

播放mpg视频的实例:

import java.awt.BorderLayout;

import java.awt.Component;

import java.awt.Dimension;

import java.awt.Frame;

import java.awt.Panel;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.io.IOException;

import java.net.MalformedURLException;

import java.net.URL;

import javax.media.CannotRealizeException;

import javax.media.ControllerEvent;

import javax.media.ControllerListener;

import javax.media.EndOfMediaEvent;

import javax.media.Manager;

import javax.media.MediaLocator;

import javax.media.NoPlayerException;

import javax.media.Player;

import javax.media.PrefetchCompleteEvent;

import javax.media.RealizeCompleteEvent;

import javax.media.Time;

@SuppressWarnings({ "restriction", "unused" })

public class JMFSample implements ControllerListener {

public static void main(String[] args) {

JMFSample sp = new JMFSample();

sp.play();

}

private Player mediaPlayer;

private Frame f;

private Player player;

private Panel panel;

private Component visual;

private Component control = null;

public void play(){

f = new Frame("JMF Sample1");

f.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent we) {

if(player != null) {

player.close();

}

System.exit(0);

}

});

f.setSize(500,400);

f.setVisible(true);

URL url = null;

try {

//准备一个要播放的视频文件的URL

url = new URL("file:/d:/1.mpg");

} catch (MalformedURLException e) {

e.printStackTrace();

}

try {

//通过调用Manager的createPlayer方法来创建一个Player的对象

//这个对象是媒体播放的核心控制对象

player = Manager.createPlayer(url);

} catch (NoPlayerException e1) {

e1.printStackTrace();

} catch (IOException e1) {

e1.printStackTrace();

}

//对player对象注册监听器,能噶偶在相关事件发生的时候执行相关的动作

player.addControllerListener(this);

//让player对象进行相关的资源分配

player.realize();

}

private int videoWidth = 0;

private int videoHeight = 0;

private int controlHeight = 30;

private int insetWidth = 10;

private int insetHeight = 30;

//监听player的相关事件

public void controllerUpdate(ControllerEvent ce) {

if (ce instanceof RealizeCompleteEvent) {

//player实例化完成后进行player播放前预处理

player.prefetch();

} else if (ce instanceof PrefetchCompleteEvent) {

if (visual != null)

return;

//取得player中的播放视频的组件,并得到视频窗口的大小

//然后把视频窗口的组件添加到Frame窗口中,

if ((visual = player.getVisualComponent()) != null) {

Dimension size = visual.getPreferredSize();

videoWidth = size.width;

videoHeight = size.height;

f.add(visual);

} else {

videoWidth = 320;

}

//取得player中的视频播放控制条组件,并把该组件添加到Frame窗口中

if ((control = player.getControlPanelComponent()) != null) {

controlHeight = control.getPreferredSize().height;

f.add(control, BorderLayout.SOUTH);

}

//设定Frame窗口的大小,使得满足视频文件的默认大小

f.setSize(videoWidth + insetWidth, videoHeight + controlHeight + insetHeight);

f.validate();

//启动视频播放组件开始播放

player.start();

mediaPlayer.start();

} else if (ce instanceof EndOfMediaEvent) {

//当播放视频完成后,把时间进度条恢复到开始,并再次重新开始播放

player.setMediaTime(new Time(0));

player.start();

}

}

}

运行的截图:

0818b9ca8b590ca3270a3433284dd417.png

这两个例子还需要慢慢吃透啊!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值