JMF这个多媒体开发框架太牛了,简单的几句代码就能实现一个视频播放器的开发,厉害,就是支持的格式少了一些,没关系,这个视频播放器可以播放mpg,avi,fvl等等,想播放其他的请开发自己的插件,下面将代码贴上去

[java] view plaincopy print?
  1. package com.bird.jmf;
  2. import java.awt.BorderLayout;
  3. import java.awt.Component;
  4. import java.awt.Dimension;
  5. import java.awt.Frame;
  6. import java.awt.Panel;
  7. import java.awt.event.WindowAdapter;
  8. import java.awt.event.WindowEvent;
  9. import java.io.IOException;
  10. import java.net.MalformedURLException;
  11. import java.net.URL;
  12. import javax.media.CannotRealizeException;
  13. import javax.media.ControllerEvent;
  14. import javax.media.ControllerListener;
  15. import javax.media.EndOfMediaEvent;
  16. import javax.media.Manager;
  17. import javax.media.MediaLocator;
  18. import javax.media.NoPlayerException;
  19. import javax.media.Player;
  20. import javax.media.PrefetchCompleteEvent;
  21. import javax.media.RealizeCompleteEvent;
  22. import javax.media.Time;
  23. @SuppressWarnings({ "restriction", "unused" })
  24. public class JMFSample implements ControllerListener {
  25. public static void main(String[] args) {
  26. JMFSample sp = new JMFSample();
  27. sp.play();
  28. }
  29. private Player mediaPlayer;
  30. private Frame f;
  31. private Player player;
  32. private Panel panel;
  33. private Component visual;
  34. private Component control = null;
  35. public void play(){
  36. f = new Frame("JMF Sample1");
  37. f.addWindowListener(new WindowAdapter() {
  38. public void windowClosing(WindowEvent we) {
  39. if(player != null) {
  40. player.close();
  41. }
  42. System.exit(0);
  43. }
  44. });
  45. f.setSize(500,400);
  46. f.setVisible(true);
  47. URL url = null;
  48. try {
  49. //准备一个要播放的视频文件的URL
  50. url = new URL("file:/d:/2.mpg");
  51. } catch (MalformedURLException e) {
  52. e.printStackTrace();
  53. }
  54. try {
  55. //通过调用Manager的createPlayer方法来创建一个Player的对象
  56. //这个对象是媒体播放的核心控制对象
  57. player = Manager.createPlayer(url);
  58. } catch (NoPlayerException e1) {
  59. e1.printStackTrace();
  60. } catch (IOException e1) {
  61. e1.printStackTrace();
  62. }
  63. //对player对象注册监听器,能噶偶在相关事件发生的时候执行相关的动作
  64. player.addControllerListener(this);
  65. //让player对象进行相关的资源分配
  66. player.realize();
  67. }
  68. private int videoWidth = 0;
  69. private int videoHeight = 0;
  70. private int controlHeight = 30;
  71. private int insetWidth = 10;
  72. private int insetHeight = 30;
  73. //监听player的相关事件
  74. public void controllerUpdate(ControllerEvent ce) {
  75. if (ce instanceof RealizeCompleteEvent) {
  76. //player实例化完成后进行player播放前预处理
  77. player.prefetch();
  78. } else if (ce instanceof PrefetchCompleteEvent) {
  79. if (visual != null)
  80. return;
  81. //取得player中的播放视频的组件,并得到视频窗口的大小
  82. //然后把视频窗口的组件添加到Frame窗口中,
  83. if ((visual = player.getVisualComponent()) != null) {
  84. Dimension size = visual.getPreferredSize();
  85. videoWidth = size.width;
  86. videoHeight = size.height;
  87. f.add(visual);
  88. } else {
  89. videoWidth = 320;
  90. }
  91. //取得player中的视频播放控制条组件,并把该组件添加到Frame窗口中
  92. if ((control = player.getControlPanelComponent()) != null) {
  93. controlHeight = control.getPreferredSize().height;
  94. f.add(control, BorderLayout.SOUTH);
  95. }
  96. //设定Frame窗口的大小,使得满足视频文件的默认大小
  97. f.setSize(videoWidth + insetWidth, videoHeight + controlHeight + insetHeight);
  98. f.validate();
  99. //启动视频播放组件开始播放
  100. player.start();
  101. mediaPlayer.start();
  102. } else if (ce instanceof EndOfMediaEvent) {
  103. //当播放视频完成后,把时间进度条恢复到开始,并再次重新开始播放
  104. player.setMediaTime(new Time(0));
  105. player.start();
  106. }
  107. }
  108. }

效果图如下

使用JMF实现java写自己的视频播放器相关推荐

  1. 在Qt中如何用纯代码写一个本地视频播放器

    一.首先用纯代码写本地视频播放器需要用到以下类 #include <QWidget> #include <QHBoxLayout> //水平布局 #include <QV ...

  2. java音频播放器代码_谁可以用Java编写音频或视频播放器的代码. 您可以运行实现....

    全部展开 你好房东,你可以试试这个 import javax.media.ControllerEvent; import javax.media.ControllerListener; import ...

  3. 我想写一个网络视频播放器

    最近两个月跟着斯坦福大学白胡子老头的公开课学习了一下swift语言下的ios应用开发,作为实践,我计划开发自己的第一款App:网络视频播放器. 产品设计 什么,就你一个搬砖的还要产品设计?好好,没有产 ...

  4. java写一个音乐播放器源码_求一个JAVA音乐播放器的源代码

    展开全部 import javax.media.ControllerEvent; import javax.media.ControllerListener; import javax.media.E ...

  5. java写键盘鼠标录制器,易语言仿按键精灵录制键盘鼠标操作的代码

    DLL命令表 .版本 2 .DLL命令 取按键状态, 短整数型, "user32.dll", "GetAsyncKeyState" .参数 鼠标键, 整数型 . ...

  6. java三角形判断器_花了两个小时做了那么一个很丑的Java写的三角形判断器.........

    闲着无事,花了两三个小时做了那么一个自己都看不下去的Java小程序,可用来判断三角形的类型,输入三边,可以求出各个角的正弦.余弦以及正切值! 说实话,丑得连自己都看不下去了! (不喜勿喷! ) 话不多 ...

  7. java jsp html嵌入视频播放器

    在最近一个项目中需要简单的流媒体视频播放,经过一番搜索后找到一些合适的播放器及代码,在此记录并分享给大家. 由于仅需播放一些简单的格式因此不需要视频解码服务器. 1.播放rm.rmvb则需要vlc或r ...

  8. java如何开发视频软件_使用JAVA编写视频播放器

    Java因其跨平台优势而陷入困境. 当时,我以为"写一次,到处跑". 这听起来不错,它应该是所有语言开发的最终方法. Java必将统治世界. 事实证明当时我还太小. 所谓的鱼和熊掌 ...

  9. java视频播放器制作_java创建简易视频播放器

    java创建简易视频播放器 发布时间:2020-09-23 04:28:09 来源:脚本之家 阅读:98 作者:南柯一梦xihe 最近有个多媒体的作业,要求使用visualC++和OpenCV编写一个 ...

最新文章

  1. Dubbo源码学习总结系列三 dubbo-cluster集群模块
  2. jvm性能调优 - 07线上应用部署JVM实战_栈内存与永久代预估与设置
  3. 时间控件_Selenium时间控件的处理
  4. 在.NET Core类库中使用EF Core迁移数据库到SQL Server
  5. arm32和arm64常用指令B BL BLX机器码计算
  6. 好象现在才开始热爱生活了
  7. SWJTU 2208 最大覆盖
  8. ubuntu的无比注意事项
  9. 请假系统特例规则详细设计
  10. Python--随机森林模型
  11. Pg Admin4 无法正常启动
  12. 网络性能监测-系统监视器
  13. 21根火柴取放 c语言,趣味C语言题Word版
  14. denoted(denoted by)
  15. 【全开源+免费更新】doodoo.js快速入门教程 1
  16. Matlab计算矩阵频率分布直方图
  17. 使用for循环打印空心菱形图案
  18. C#字节数组(byte[])和字符串相互转换
  19. 使用canvas画折线图和曲线图
  20. iOS——3DES的加密

热门文章

  1. 杭州城西科创大走廊管委会副主任一行莅临谐云实地调研
  2. matlab 像素最大值,如何在MATLAB中的图像中找到局部最大值?
  3. 【渝粤教育】电大中专电大中专计算机应用基础考试考核石头作业 题库
  4. 华为笔试之CDkey的生成
  5. xna开发_Xbox360 XNA游戏开发-Hanselman对话模拟器
  6. 将代码保留原格式(高亮)复制到word
  7. Aster“一拖二”,双键盘双鼠标双显示屏,互不影响
  8. Python学习笔记:第四站 往哪走
  9. laravel8 分页样式的改变
  10. 2017 计蒜之道 初赛 第一场 A、B题