利用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,如需转载请自行联系原作者
相关文章
|
编解码 开发工具 Android开发
Android平台RTSP轻量级服务|RTMP推送摄像头或屏幕之音频接口设计
好多开发者在做Android平台录像或者RTSP轻量级服务、RTMP推送相关模块时,对需要设计哪些常用接口会心存疑惑,本文主要以大牛直播SDK(官方)为例,简单介绍下Android平台直播推送SDK所有音频相关的接口,感兴趣的开发者可以看看。
122 0
|
编解码 Android开发 数据安全/隐私保护
Android平台外部编码数据(H264/H265/AAC/PCMA/PCMU)实时预览播放技术实现
好多开发者可能疑惑,外部数据实时预览播放,到底有什么用? 是的,一般场景是用不到的,我们在开发这块前几年已经开发了非常稳定的RTMP、RTSP直播播放模块,不过也遇到这样的场景,部分设备输出编码后(视频:H.264/H.265,音频:AAC/PCMA/PCMU)的数据,比如无人机或部分智能硬件设备,回调出来的H.264/H.265数据,除了想转推到RTMP、轻量级RTSP服务或GB28181外,还需要本地预览甚至对数据做二次处理(视频分析、实时水印字符叠加等,然后二次编码),基于这样的场景诉求,我们开发了Android平台外部编码数据实时预览播放模块。
170 0
|
5月前
|
编解码 开发工具 Android开发
Android平台实现屏幕录制(屏幕投影)|音频播放采集|麦克风采集并推送RTMP或轻量级RTSP服务
Android平台屏幕采集、音频播放声音采集、麦克风采集编码打包推送到RTMP和轻量级RTSP服务的相关技术实现,做成高稳定低延迟的同屏系统,还需要有配套好的RTMP、RTSP直播播放器
|
6月前
|
iOS开发 开发者
iOS平台RTMP|RTSP播放器如何实时回调YUV数据
我们在做RTMP、RTSP播放器的时候,有开发者需要自己处理拉取到的YUV数据,做二次分析之用,为此,我们做了以下的设计:InitPlayer之后,再调用SmartPlayerStart()接口之前,设置yuv数据回调即可。
|
6月前
|
编解码 Linux 开发工具
iOS平台如何实现RTSP|RTMP播放端录像?
我们在做RTSP、RTMP直播播放器的时候,有个比较重要的功能,就是拉流端实时录像,包括设置单个录像文件大小、文件前缀、audio转AAC、只录制视频或只录制音频、开始录像、停止录像事件状态回调等。
120 5
|
9月前
|
编解码
音视频录制播放原理
音视频录制播放原理
174 1
|
vr&ar 开发工具 图形学
Windows平台Unity3d下如何同时播放多路RTSP或RTMP流
好多开发者在做AR、VR或者教育类产品时,苦于如何在windows平台构建一个稳定且低延迟的RTSP或者RTMP播放器,如果基于Unity3d完全重新开发一个播放器,代价大、而且周期长,不适合快速出产品,我们认为当前最好的方式就是集成现有Native平台上成熟稳定播放器,回调rgb/yuv数据到上层,上层做绘制即可。
169 1
|
Linux 开发工具 图形学
Unity下如何实现RTMP或RTSP播放端录像?
Unity下如何实现RTMP或RTSP播放端录像?
290 0
|
数据处理 开发工具 Android开发
Android平台RTMP/RTSP播放器开发系列之解码和绘制
本文主要抛砖引玉,粗略介绍下Android平台RTMP/RTSP播放器中解码和绘制相关的部分(Github)。
119 0
FFMPEG音频视频开发:QT采集摄像头数据帧与声卡音频通过FFMPEG实时推流到RTMP服务器(v1.0)
FFMPEG音频视频开发:QT采集摄像头数据帧与声卡音频通过FFMPEG实时推流到RTMP服务器(v1.0)
917 0