`
Clayz
  • 浏览: 298579 次
  • 性别: Icon_minigender_1
  • 来自: 东京
社区版块
存档分类
最新评论

JMF简单示例

    博客分类:
  • Java
阅读更多
java 代码
 
  1. import  java.awt.*;  
  2. import  java.awt.event.*;  
  3. import  javax.swing.*;  
  4. import  javax.media.*;  
  5.   
  6. public   class  VideoDemo  extends  JFrame  implements  ActionListener,ControllerListener  
  7. {  
  8. JMenuBar jMenuBar1=new  JMenuBar();  
  9. JMenu jMenuFile=new  JMenu( "File" );  
  10. JMenu jMenuList=new  JMenu( "List" );  
  11. JMenu jMenuControl=new  JMenu( "Control" );  
  12. JMenu jMenuSkin=new  JMenu( "Skin" );  
  13. JMenu jMenuHelp=new  JMenu( "Help" );  
  14. JMenuItem jMenuFileOpen=new  JMenuItem( "Open" );  
  15. JMenuItem jMenuFileExit=new  JMenuItem( "Exit" );  
  16. JMenuItem jMenuControlPlay=new  JMenuItem( "Play" );  
  17. JMenuItem jMenuControlPause=new  JMenuItem( "Pause" );  
  18. JMenuItem jMenuControlStop=new  JMenuItem( "Stop" );  
  19. JMenuItem jMenuSkinmetal=new  JMenuItem( "metalSkin" );  
  20. JMenuItem jMenuSkinwindows=new  JMenuItem( "windowsSkin" );  
  21. JMenuItem jMenuSkinmotif=new  JMenuItem( "motifSkin" );  
  22. JMenuItem jMenuControlFullScreen=new  JMenuItem( "FullScreen" );  
  23. JLabel statusBar=new  JLabel();  
  24. JLabel welcome=new  JLabel();  
  25. Player player;  
  26. Component visualComponent;//Video player component   
  27. Component controlComponent;//video player control component   
  28. JPanel jPanel1=new  JPanel( new  BorderLayout());  
  29. String file="" ;  
  30. String strDir;  
  31.   
  32. public  VideoDemo()  
  33. {     
  34. this .setSize( 400 , 300 );  
  35. this .setTitle( "Casper's player" );  
  36. welcome=new  JLabel( new  ImageIcon( "girl.jpg" ));  
  37. jPanel1.add(welcome);  
  38. statusBar.setText(" " );  
  39. jMenuFileExit.addActionListener(this );  
  40. jMenuFileOpen.addActionListener(this );  
  41. jMenuFile.add(jMenuFileOpen);  
  42. jMenuFile.addSeparator();  
  43. jMenuFile.add(jMenuFileExit);  
  44. jMenuBar1.add(jMenuFile);  
  45.   
  46. jMenuBar1.add(jMenuSkin);  
  47. jMenuSkin.add(jMenuSkinmetal);  
  48. jMenuSkinmetal.addActionListener(this );  
  49. jMenuSkin.add(jMenuSkinwindows);  
  50. jMenuSkinwindows.addActionListener(this );  
  51. jMenuSkin.add(jMenuSkinmotif);  
  52. jMenuSkinmotif.addActionListener(this );  
  53.   
  54. jMenuBar1.add(jMenuControl);/////////////   
  55. jMenuControl.add(jMenuControlPlay);  
  56. jMenuControlPlay.addActionListener(this );  
  57. jMenuControl.add(jMenuControlPause);  
  58. jMenuControlPause.addActionListener(this );  
  59. jMenuControl.add(jMenuControlStop);  
  60. jMenuControlStop.addActionListener(this );  
  61. jMenuControl.add(jMenuControlFullScreen);///////////   
  62. jMenuControlFullScreen.addActionListener(this );  
  63.   
  64. jMenuBar1.add(jMenuList);  
  65. jMenuBar1.add(jMenuHelp);  
  66. this .setJMenuBar(jMenuBar1);  
  67. statusBar.setText("No file open" );  
  68. Manager.setHint(Manager.LIGHTWEIGHT_RENDERER,new  Boolean( true ));  
  69. //   
  70. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  71. this .getContentPane().add(statusBar, "South" );  
  72. this .getContentPane().add(jPanel1, "Center" );  
  73. this .setVisible( true );  
  74. }  
  75.   
  76. public   void  actionPerformed(ActionEvent e)  
  77. {  
  78.     //Skin menu(three skins)   
  79.     if (e.getSource()==jMenuSkinwindows)  
  80.     {  
  81.         String windows="com.sun.java.swing.plaf.windows.WindowsLookAndFeel" ;  
  82.         try {  
  83.             UIManager.setLookAndFeel(windows);//设置见面风格   
  84.             SwingUtilities.updateComponentTreeUI(this ); //使设置的界面风格生效   
  85.             this .pack();  
  86.             }catch (Exception e1){  
  87.                 System.out.println("can't set such style" );  
  88.             }  
  89.     }  
  90.     else   if (e.getSource()==jMenuSkinmetal)  
  91.     {  
  92.         String metal="javax.swing.plaf.metal.MetalLookAndFeel" ;  
  93.         try {  
  94.             UIManager.setLookAndFeel(metal);  
  95.             SwingUtilities.updateComponentTreeUI(this );  
  96.             this .pack();  
  97.             }catch (Exception e1){  
  98.                 System.out.println("can't set such style" );  
  99.             }  
  100.     }  
  101.     else   if (e.getSource()==jMenuSkinmotif)  
  102.     {  
  103.         String motif="com.sun.java.swing.plaf.motif.MotifLookAndFeel" ;  
  104.         try {  
  105.             UIManager.setLookAndFeel(motif);  
  106.             SwingUtilities.updateComponentTreeUI(this );  
  107.             this .pack();  
  108.             }catch (Exception e1){  
  109.                 System.out.println("can't set such style" );  
  110.             }  
  111.     }  
  112. //////////////////////////////////////////////////////////////////   
  113.      
  114. //File menu   
  115. else   if (e.getSource()==jMenuFileExit)  
  116. {  
  117. if (player!= null )  
  118.     player.close();  
  119. this .dispose();  
  120. System.exit(0 );  
  121. }  
  122. else   if (e.getSource()==jMenuFileOpen)  
  123. {  
  124. try   
  125.    {  
  126.    jPanel1.remove(welcome);  
  127.    FileDialog dlgOpen=new  FileDialog( this , "Open file" ,FileDialog.LOAD);  
  128.    dlgOpen.setDirectory(strDir);  
  129.    dlgOpen.setVisible(true );  
  130.    strDir=dlgOpen.getDirectory();  
  131.    if (strDir!= null )  
  132.     {  
  133.     if (player!= null )  
  134.         player.close();  
  135.     if (visualComponent!= null )  
  136.         jPanel1.remove(visualComponent);  
  137.     if (controlComponent!= null )  
  138.         jPanel1.remove(controlComponent);  
  139.     visualComponent=null ;  
  140.     controlComponent=null ;  
  141.     file=strDir+dlgOpen.getFile();  
  142.    // player=Manager.createPlayer(new URL("file:\\"+file));//create the object of the media will play   
  143.     player = Manager.createPlayer (new  MediaLocator("file: ” +file));  
  144.  
  145.     statusBar.setText(" playing:  "+file.toString());//display the file imfomation  
  146.     player.addControllerListener(this);  
  147.     player.prefetch();//get the file data  
  148.     }  
  149.    }catch(Exception ex){ex.printStackTrace();}  
  150. }  
  151. ////////////////////////////////////////////////////////  
  152.      
  153. //control funcitons Menu  
  154. else if(e.getSource()==jMenuControlFullScreen)//Full screen  
  155. {    
  156.     dispose();    
  157.     setUndecorated(true);    
  158.     getGraphicsConfiguration().getDevice().setFullScreenWindow(this);    
  159.     setVisible(true);  
  160. }    
  161.      
  162. else if(e.getActionCommand().equals(" Play ")) //play  
  163. {  
  164.      if(player != null)  
  165.      {  
  166.              player.start();  
  167.      }  
  168.      return;  
  169. }  
  170. else if(e.getActionCommand().equals(" Pause ")) //pause  
  171. {  
  172.      if(player != null)  
  173.      {  
  174.              player.stop();  
  175.      }  
  176.      return;  
  177. }  
  178. else if(e.getActionCommand().equals(" Stop")) //stop   
  179. {  
  180.      if (player !=  null )  
  181.      {  
  182.         player.stop();  
  183.          player.setMediaTime(new  Time( 0 ));  
  184. }  
  185. return ;  
  186. }  
  187. }  
  188.   
  189. public   void  controllerUpdate(ControllerEvent e)  
  190. {  
  191. if (e  instanceof  PrefetchCompleteEvent)  
  192. {  
  193. player.start();  
  194. return ;  
  195. }  
  196. if (e  instanceof  RealizeCompleteEvent)  
  197. {  
  198. visualComponent=player.getVisualComponent();  
  199. if (visualComponent!= null )  
  200. jPanel1.add(visualComponent,BorderLayout.CENTER);  
  201.   
  202. controlComponent=player.getControlPanelComponent();//time shaft control   
  203. if (controlComponent!= null )  
  204. jPanel1.add(controlComponent,BorderLayout.SOUTH);  
  205. player.getGainControl(); //volume control conponent   
  206.   
  207. this .pack();  
  208. this .setResizable( false );  
  209. this .setVisible( true );  
  210. return ;  
  211. }  
  212. }  
  213.   
  214. public   static   void  main(String[] args)  
  215. {new  VideoDemo();}  
  216. }  


/*Player类中的很多方法只有在Player对象处于Realized的状态下才会被调用。
为了保证Player对象已经到达了该状态,
你需要使用Manager的createRealizePlayer()方法
来获得Player对象。但是对于start()方法来说,
你可以在Player对象到达Prefetched状态之前调用它,
它可以自动将Player的状态转换到Started状态*/

//Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();//取出屏幕大小

//player.getGainControl().getControlComponent(); //是操作音量(增加)的可视组件volume control conponent

分享到:
评论

相关推荐

    java 通过jmf播放视频简单demo

    总结起来,这个Java通过JMF播放视频的简单示例展示了如何利用JMF进行多媒体数据的传输和播放,涉及到网络通信、多媒体处理和Java对象的生命周期管理。虽然JMF在当前环境中可能不是首选,但它仍然是理解多媒体处理和...

    java jmf 例子

    下面是一个简单的示例: ```java import javax.media.Manager; import javax.media.MediaLocator; public class JMFExample { public static void main(String[] args) { try { // 创建MediaLocator对象,指定...

    JMF教程详解及简单例子分析

    ### JMF教程详解及简单例子分析 #### 一、关于此指南 本指南旨在帮助读者了解Java Media Framework(简称JMF)的基础知识及其在实际应用中的实现方式。JMF是Sun Microsystems开发的一个Java API,用于处理多媒体...

    Jmf捕获摄像头的示例

    尽管JMF提供了一种相对简单的方式来处理多媒体,但它有一些局限性,比如对新格式的支持不足,性能可能较低,以及对现代硬件的兼容性问题。因此,许多开发者转向了其他更现代的解决方案,如JavaFX的`MediaView`,或者...

    利用JMF进行多媒体编程

    为了演示JMF的基本用法,一个简单的例子可能包括以下步骤: 1. 导入必要的JMF库。 2. 加载和实例化DataSource,这可能涉及文件路径或URL。 3. 创建Player对象,并关联DataSource。 4. 调整Player状态,使其从...

    JMF_demo.rar

    首先,`Java Media Framework (JMF) API播放.exe` 是一个可执行文件,可能是JMF的安装程序或者一个简单的演示应用程序,用于展示JMF如何处理和播放多媒体内容。这个程序可能包含了JMF的核心组件,让开发者可以快速...

    JMF.zip_JMF W_Java 播放器_hookqq_jmf_jmf-2_0-spec

    JMF提供了丰富的API,使得在Java应用程序中集成多媒体功能变得简单。"JMF.zip_JMF W_Java 播放器_hookqq_jmf_jmf-2_0-spec"这个压缩包包含了一个基于Java开发的媒体播放器示例,适用于初学者学习和理解JMF的用法。 ...

    Java_JMF的使用

    例如,可以创建一个简单的应用程序来演示如何使用JMF播放媒体文件。代码中可能包含以下组件: - javax.media:包含处理媒体捕获、处理和播放所需的类和接口。 - javax.media.protocol:定义了媒体源和媒体数据接收...

    jmf基础教程

    本教程旨在为初学者提供一个入门的起点,通过几个实际的示例展示 JMF 的基本用法。 ### 1. 下载和安装 JMF 首先,你需要下载适合你操作系统(如 Windows, Solaris, Linux)的 JMF 版本。推荐选择与操作系统匹配的...

    JMF(Java媒体框架)

    4. **测试安装**:运行示例程序或者自己编写的简单程序,验证JMF是否正确安装并工作。 在实际项目中,开发者可能还需要关注性能优化、错误处理、多媒体数据的编码解码等问题。同时,由于JMF的更新相对较慢,可能...

    sun官网JMF包

    7. **示例代码**:下面是一个简单的JMF播放音频文件的示例: ```java import javax.media.Manager; import javax.media.MediaLocator; import javax.media.Player; public class JmfPlayer { public static ...

    JMF教程和深入理解

    在JMF的子文件中,可能会包含实际的代码示例,这些示例展示了如何创建一个多线程的JMF应用程序。通过这些实例,你可以看到如何在不同线程中启动Player,以及如何处理线程间的通信和协作。你可能还会找到关于错误处理...

    jmf_mp3_plugin

    5. **示例代码**:可能提供了一些简单的示例,展示如何在Java程序中使用这个MP3插件。 在实际使用中,开发者需要将这个插件集成到他们的项目中,通常是通过将相关的库文件添加到项目的类路径中,并按照文档指示进行...

    jmf播放器_java

    总的来说,"jmf播放器_java"是一个简单的示例,展示了如何使用Java和JMF库来构建多媒体播放器。虽然它的功能有限,但对于学习JMF和多媒体处理的初学者来说,是一个很好的起点。然而,在实际项目中,考虑使用更现代和...

    jmf.rar_jmf_jmf 音频_麦克风

    以下是一段简单的代码示例,展示了如何使用JMF获取麦克风输入: ```java import javax.media.*; import javax.media.control.*; public class MicrophoneCapture { public static void main(String[] args) { ...

    JMF资料——官方说明文档、Demo和解决方案

    - 示例:提供简单的代码示例,帮助开发者快速上手。 - 故障排查:解决常见问题和错误的策略。 3. **开发指南** 开发指南是针对JMF编程的深入教程,涵盖以下主题: - 媒体播放:如何加载、解码和播放多媒体文件...

    jmf rtp 传输视频例子

    在描述中提到的"本机测试只能一个传一个接并展示,除非多个摄像头",这意味着这个示例可能是一个简单的点对点视频传输应用。在单个主机上运行时,可能只能同时支持一个发送者和一个接收者,这可能是因为JMF的实现...

Global site tag (gtag.js) - Google Analytics