学习 jmf 的时候出现问题,请各位大侠搭救!!!

用 JMF 开发视频播放器,运行能成功载入视频文件,可是没有声音,也不会自动播放。研究了好久都没研究出来哪里出现问题了。


import java.awt.BorderLayout;

import java.awt.Component;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.URL;


import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Manager;
import javax.media.Player;
import javax.media.PrefetchCompleteEvent;
import javax.media.RealizeCompleteEvent;
import javax.media.Time;


public class VideoPlayer extends Frame implements ControllerListener
{
private int videoWidth=0;
private int videoHeight=0;
private int controlHeight=30;
private int insetWidth=10;
private int insetHeight=30;


private Player player; // 播放器
private Component visual; // 播放组件
private Component control; // 控制组件


public VideoPlayer()
{
// 设置窗口属性
setTitle("视频播放器");
setSize(500,400);
setLocation(400,80);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
if(player!=null)
player.close();
System.exit(0);
}
});


setVisible(true);
}


public void play()
{
try
{
// 准备一个要播放视频文件的 URL
URL url=new URL("测试的哥们请在这里加个 mpg 视频的路径");
player=Manager.createPlayer(url);
}catch(Exception e)
{
e.printStackTrace();
}


// 对 Player 对象注册监听器,能在相关事件发生时候执行相关的动作
player.addControllerListener(this);


// 让 Player 对象进行相关的资源分配
player.realize();
}


@Override
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;
add(visual);
}
else
videoWidth=320;


// 取得 Player 中的视频播放控制条组件,并把该组件添加到 Frame 中
if((control=player.getControlPanelComponent())!=null)
{
controlHeight=control.getPreferredSize().height;
add(control,BorderLayout.SOUTH);
}


// 设定 Frame 窗口的大小,使其满足视频文件的默认大小
setSize(videoWidth+insetWidth,videoHeight+controlHeight+insetHeight);
validate();

// 启用视频播放组件并开始播放
player.start();
}

else if(ce instanceof EndOfMediaEvent)
{
// 当播放视频完成后,把时间条恢复到开始,并再次重新开始播放
player.setMediaTime(new Time(0));
player.start();
}
}

public static void main(String[] args)
{
VideoPlayer videoPlayer=new VideoPlayer();
videoPlayer.play();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值