利用JMF播放视频

简介:
实现具体步骤:
1.  确定视频文件的位置
MediaLocator mrl=new MediaLocator(new java.lang.String(“文件路径和文件名”));
 
2.  利用Manager.createPlayer创建一个播放器(Player
Player player=null;
player=Manager.createPlayer(mrl);
 
3.  使用addControllerListener将此applet注册为播放器的控制器监视器。注册此监视器的目的是只要播放器载入一个媒体事件,那么该applet将会自动调用controllerUpdate方法。
player.addControllerListener(this);
 
4.  播放
player.start();
 
5.  停止与释放
player.stop();
player.deallocate();//调用此方法可以释放所有独占资源,这样可以避免其它播放器无法启动。
 
6.  关闭
player.close();//释放所有资源。
 
7.   
controllerUpdate方法可以通知applet对播放器的事件作出反应。
②一个播放器的用户接口容器只有在该播放器的状态为Realized时才能显示。
③用户接口容器包括:可视容器(VisualComponent)和控制面板容器(ControlPanelComponent)。
 
源代码:
PlayerApplet.java
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Component;
 
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.RealizeCompleteEvent;
 
public class PlayerApplet extends Applet implements ControllerListener {
       /**
        * Playing an MPEG Movie in an Applet
        */
       private static final long serialVersionUID = 1L;
 
       Player player = null;
 
       public void init() {
              setLayout(new BorderLayout());
              MediaLocator mrl = new MediaLocator(new java.lang.String(
                            "file:///D:/Dvp/workspace/JavaSound/foo.wav"));
             
              try {
 
                     player = Manager.createPlayer(mrl);
                     //System.out.println("test1:" + player);
                     player.addControllerListener(this);
              } catch (Exception e) {
                     System.err.println("Got exception " + e);
              }
       }
 
       public void start() {
              player.start();
       }
 
       public void stop() {
              player.stop();
              player.deallocate();
       }
 
       public void destroy() {
              player.close();
       }
 
       public synchronized void controllerUpdate(ControllerEvent event) {
              if (event instanceof RealizeCompleteEvent) {
                     Component comp;
                     if ((comp = player.getVisualComponent()) != null)
                            add("Center", comp);
                     if ((comp = player.getControlPanelComponent()) != null)
                            add("South", comp);
                     validate();
              }
       }
}
 本文转自zhangjunhd51CTO博客,原文链接:http://blog.51cto.com/zhangjunhd/25474,如需转载请自行联系原作者
相关文章
|
C#
WPF之VLC流媒体播放
原文:WPF之VLC流媒体播放 最近在做关于在WPF使用VLC流媒体播放的问题,现在可以在WPF中实现VLC本地播放了,流播放解决了,在下面的代码中注释流媒体播放那两段代码,更多的在乎大家摸索了^^,以供大家相互学习,这里我就先把实现VLC本地播放的代码和过程写给需要的朋友参考。
2593 0
|
26天前
|
编解码 开发工具 Android开发
Android平台RTSP|RTMP播放器如何实现TextureView渲染
本文介绍了在Android平台上使用TextureView进行RTSP和RTMP视频流渲染的技术背景和实现方法。TextureView相较于SurfaceView具备更高性能、更强功能性和更灵活的绘制方式等优势,但也有必须在硬件加速环境下运行和较高内存占用等局限。文中详细展示了如何在SmartPlayerV2工程中创建和配置TextureView,并通过代码示例解释了如何根据视频分辨率信息调整显示比例,以及处理TextureView的各种生命周期回调。此外,还列举了该播放器SDK支持的多项高级功能,如多实例播放、多种编码格式支持、硬解码能力等,旨在帮助开发者更好地理解和实现高性能的直播播放器。
|
3月前
音视频播放器
音视频播放器
|
数据处理 开发工具 Android开发
Android平台RTMP/RTSP播放器开发系列之解码和绘制
本文主要抛砖引玉,粗略介绍下Android平台RTMP/RTSP播放器中解码和绘制相关的部分(Github)。
|
编解码 Windows 内存技术
QT应用编程: 基于FFMPEG设计的流媒体播放器(播放rtmp视频流)
QT应用编程: 基于FFMPEG设计的流媒体播放器(播放rtmp视频流)
696 0
QT应用编程: 基于FFMPEG设计的流媒体播放器(播放rtmp视频流)
|
iOS开发
iOS - AVPlayer 音视频播放
前言 NS_CLASS_AVAILABLE(10_7, 4_0) @interface AVPlayer : NSObject @available(iOS 4.0, *) public class AVPlayer : NSObject NS_C...
2142 1