第7周作业4——JMF(Java多媒体框架)的应用之视频播放器

import java.awt.*;
import java.io.*;
import java.util.*; 
import javax.media.*; 
import javax.media.format.*; 
import javax.swing.*;  
public class VideoPlayer implements ControllerListener {  
    Vector audioCapDevList = null;     
    Vector videoCapDevList = null; 
    CaptureDeviceInfo audioCapDevInfo = null;     
    CaptureDeviceInfo videoCapDevInfo = null;     
    MediaLocator audioCapDevLoc = null;     
    MediaLocator videoCapDevLoc = null;  
    Player audioPlayer;     Player videoPlayer;  
    public void initAudioCapDevLoc() { 
        //这里可以填写其它的音频编码格式,具体请看AudioFormat类 
        audioCapDevList = CaptureDeviceManager.getDeviceList(new AudioFormat( 
                AudioFormat.LINEAR));  
        if ((audioCapDevList.size() > 0)) {             //或许有几个CaptureDevice,这里取第一个             
        audioCapDevInfo = (CaptureDeviceInfo) audioCapDevList.elementAt(0); 
          audioCapDevLoc = audioCapDevInfo.getLocator();         
} 
else { 
            System.out.println("找不到音频采集设备");             
            System.exit(0);         }      }  
    public void initVideoCapDevLoc() { 
        //这里可以填写其它的编码视频格式,具体请看VideoFormat类 
        videoCapDevList = CaptureDeviceManager.getDeviceList(new VideoFormat( 
                VideoFormat.YUV));  
        if ((videoCapDevList.size() > 0)) { 
//或许有几个CaptureDevice,这里取第一个             videoCapDevInfo = (CaptureDeviceInfo) videoCapDevList.elementAt(0); 
            videoCapDevLoc = videoCapDevInfo.getLocator();         } else { 
            System.out.println("找不到视频采集设备");             
            System.exit(0);         }      }  
    public void initAudioPlayer() {  
        try { 
            audioPlayer = Manager.createPlayer(audioCapDevLoc);         
         } catch (NoPlayerException ex) {         } catch (IOException ex) {         }         
        //增加一个侦听器,侦听player状态的改变 
        audioPlayer.addControllerListener(this);         
        audioPlayer.realize();     }  
    public void initVideoPlayer() {         try { 
            videoPlayer = Manager.createPlayer(videoCapDevLoc);         } catch (NoPlayerException ex) {         } catch (IOException ex) {         } 
        //增加一个侦听器,侦听player状态的改变 
        videoPlayer.addControllerListener(this); 
        videoPlayer.realize();     }  
    public void stopAndClosePlayer(){         audioPlayer.stop();        
        audioPlayer.close(); 
         videoPlayer.stop(); 
         videoPlayer.close();     }  
    public synchronized void controllerUpdate(ControllerEvent ce) {         
      Player p = (Player) ce.getSourceController();  
      JFrame jFrame = new JFrame();              Component com;  
        if (p == null) {             return;         }  
        //如果player的状态变为Realized 
        if (ce instanceof RealizeCompleteEvent) {  
            if ((com = p.getControlPanelComponent()) != null) {                 jFrame.add(com, BorderLayout.SOUTH);             }  
            if ((com = p.getVisualComponent()) != null) {                 jFrame.add(com, BorderLayout.NORTH);             }  
            jFrame.setVisible(true);                          jFrame.pack(); 
            jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);            
          p.start();         
}     
}  
    public static void main(String args[]) {     
 VideoPlayer cap = new VideoPlayer();         cap.initAudioCapDevLoc();        
       cap.initVideoCapDevLoc();         
       cap.initAudioPlayer();         
       cap.initVideoPlayer();  
        try { 
            Thread.currentThread().sleep(20000);//20秒后停止并关闭播放器         
} 
catch (InterruptedException ex) {         } 
        cap.stopAndClosePlayer();     
} 
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值