Java常用的一些多媒体文件基本操作方法简介

 更新时间:2015年10月10日 08:52:31   投稿:goldensun  
这篇文章主要介绍了Java常用的一些多媒体文件基本操作方法,包括对音频视频以及幻灯片的播放,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

播放幻灯片和动画

用实例说明播放幻灯片和动画的方法。

【例】小应用程序先将幻灯片读入数组在存储,单击鼠标变换幻灯片,逐张显示。

import java.applet.*import java.awt.*;
import java.awt.event.*;
public class Example7_7 extends Applet implements MouseListener{
  final int number = 50; //假定幻灯片有50张
  int count = 0;
  Image[] card = new Image[number];
  public void init(){
    addMouseListener(this);
    for (int i = 0; i < number; i++){
      card[i] = getImage(getCodeBase(), "DSC0033" + i + ".jpg");
    }
  }
  public void paint(Graphics g){
    if ((card[count]) != null)
      g.drawImage(card[count], 10, 10, card[count].getWidth(this),card[count].getHeitht(this), this);
  }
  public void mousePressed(MouseEvent e){
    count = (count + 1) % number; //循环逐张显示
    repaint();
  }
  public void mouseRelease(MouseEvent e){}
  public void mouseEntered(MouseEvent e){}
  public void mouseExited(Mouse Event e){}
  public void mouseClicked(MouseEvent e){}
}

【例】小应用程序说明播放动画的方法,要求播放的图片和小程序放在相同的目录中,程序通过快速显示一组图片造成显示动画的效果。小应用程序利用线程控制动画图片的逐显示。

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Example7_8 extends Applet implements Runnable{
  final int number = 50;
  int count = 0;
  Thread mythread;
  Image[] pic = new Image[number];
  public void init(){
    setSize(300, 200);
    for (int i = 0; i <= number; i++){
      //载入动画图片
      pic[i - 1] = getImage(getCodeBase(), "DSC0033" + i + ".jpg");
    }
  }
  public void start(){
    mythread = new Thread(this); //创建一个线程
    mythread.start(); //启动线程执行
  }
  public void stop(){
    mythread = null;
  }
  public void run(){
    //线程的执行代码
    while (true){
      repaint();
      count = (count + 1) % number; //改变显示的图片号
      try{
        mhythread.sleep(200);
      }
      catch (InterruptedExeception e){}
    }
  }
  public void paint(Graphics g){
    if ((pic[count] != null)
      g.drawImage(pic[count], 10, 10, pic[count].getwidth(this), pic[count].getHeight(this), this);
  }
}

播放声音

Java语言老根据地的音频格式有多种:au、aiff、wav、midi、rfm等。小程序要播放音频文件,可使用类AudioClip,该类在java.applet.AudioClip类库中定义。小程序先创建AudioClip对象,并用getAudioClip()方法为其初始化。代码形式如下:

  AudioClip audioClip = getAudioClip(getCodeBase(),”myAudioClipFile.au”);


如果要从网上获得音频文件,可用方法getAudioClip(URL url, String name),根据url地址及音频文件name获得可播放的音频对象。

控制声音的播放有3个方法:play()播放声音,loop()循环播放和stop()停止播放。

【例】能播放声音的小应用程序。

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Example7_9 extends Applet implements ActionListener{
  AudioClip clip; //声明一个音频对象
  Button buttonPlay, buttonLoop, buttonStop;
  public void init(){
    clip = getAudioClip(getCodeBase(), "2.wav");
    //根据程序所在地址处声音文件2.wav创建音频对象,
    //Applet类的getCodeBase()方法可以获得小程序所在的html页面的URL地址。
    buttonPlay = new Button("开始播放");
    buttonLoop = new Button("循环播放");
    buttonStop = new Button("停止播放");
    buttonPlay.addActionListener(this);
    buttonStop.addActionListener(this);
    buttonLoop.addActionListener(this);
    add(buttonPlay);
    add(buttonLoop);
    add(buttonStop);
  }
  public void stop(){
    clip.stop(); //当离开此页面时停止播放
  }
  public void actionPerformed(ActionEvent e){
    if (e.getSource() == buttonPlay){
      clip.play();
    }
    else if (e.getSource() == buttonLoob){
      clip.loop();
    }
    else if (e.getSource() == buttonStop){
      clip.stop();
    }
  }
}

【例】如果声音文件较大或网络速度慢会影响小程序的初始化工作。这可用多线程技术解决。在一个级别较低的线程中完成音频对象的创建,即由后台载入声音文件,前台播放。

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Hanoi extends applet implements Runnable, ActionListener{
  AudioClip clip; //声明一个音频对象
  textField text;
  Thread thread;
  Button buttonPlay, buttonLoop, buttonStop;
  public void init(){
    thread = new Thread(this); //创建新线程
    thread .setPriority(Thread.MIN_PRIORITY);
    buttonPlay = new Button("开始播放");
    buttonLoop = new Button( "循环播放");
    buttonStop = new Button("停止播放");
    text = new textField(12);
    buttonPlay.addActionListener(this);
    buttonStop.addActionListener(this);
    buttonLoop.addActionListener(this);
    add(buttonPlay);
    add(buttonLoop);
    add(buttonStop);
    add(text);
  }
  public void start(){
    thread.start();
  }
  public void stop(){
    clip.stop();
  }
  public void actionPerformed(ActionEvent e){
    if (e.getSource() == buttonPlay(){
      clip.play();
    }
    else if (e.getSource() == buttonLoop(){
      clip.loop();
    }
    else if (e.getSource() == buttonStop(){
      clip.stop();
    }
  }
  public void run(){
    //在线程thread 中创建音频对象
    clip = getAudioclip(getCodeBase(), "2.wav");
    text.setText("请稍等"); 
    if(clip ! = null){
      buttonPlay.setBackground(Color.red); buttonLoop.setBackground(Color.green); text.setText("您可以播放了");
    } //获得音频对象后通知可以播放
  }
}

相关文章

  • java实现十六进制字符unicode与中英文转换示例

    java实现十六进制字符unicode与中英文转换示例

    当需要对一个unicode十六进制字符串进行编码时,首先做的应该是确认字符集编码格式,在无法快速获知的情况下,通过一下的str4all方法可以达到这一目的
    2014-02-02
  • Java连接数据库,及增删改查的示例

    Java连接数据库,及增删改查的示例

    这篇文章主要介绍了Java连接数据库,及增删改查的示例,帮助大家更好的利用Java处理数据,感兴趣的朋友可以了解下
    2020-10-10
  • Java集合定义与用法实例总结【Set、List与Map】

    Java集合定义与用法实例总结【Set、List与Map】

    这篇文章主要介绍了Java集合定义与用法,结合实例形式总结分析了Java集合中Set、List和Map相关概念、功能、用法及操作注意事项,需要的朋友可以参考下
    2018-08-08
  • Java的字符串中对子字符串的查找方法总结

    Java的字符串中对子字符串的查找方法总结

    这篇文章主要介绍了Java的字符串中对子字符串的查找方法总结,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • IDEA引入本地jar包的几种方法

    IDEA引入本地jar包的几种方法

    本文主要介绍了IDEA引入本地jar包的几种方法,文中通过图文结合的方式码介绍的非常详细,对大家的学习或工作有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2024-01-01
  • 详解spring boot rest例子

    详解spring boot rest例子

    这篇文章主要介绍了详解spring boot rest例子,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Java在长字符串中查找短字符串的实现多种方法

    Java在长字符串中查找短字符串的实现多种方法

    这篇文章主要介绍了Java在长字符串中查找短字符串的实现多种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • @MapperScan和@ComponentScan一块使用导致冲突的解决

    @MapperScan和@ComponentScan一块使用导致冲突的解决

    这篇文章主要介绍了@MapperScan和@ComponentScan一块使用导致冲突的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Springboot如何使用OSHI获取和操作系统和硬件信息

    Springboot如何使用OSHI获取和操作系统和硬件信息

    这篇文章主要介绍了Springboot如何使用OSHI获取和操作系统和硬件信息问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • springboot整合jasypt的详细过程

    springboot整合jasypt的详细过程

    这篇文章主要介绍了springboot整合jasypt的详细过程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-02-02

最新评论

?


http://www.vxiaotou.com