java简单媒体播放器源码.
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的状态变为Realizedif (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[]) {V ideoPlayer cap = new VideoPlayer();cap.initAudioCapDevLoc();cap.initVideoCapDevLoc();cap.initAudioPlayer();cap.initVideoPlayer();try {Thread.currentThread().sleep(20000);//20秒后停止并关闭播放器 } catch (InterruptedException ex) {}cap.stopAndClosePlayer();}}。
毕业设计(论文)-基于java的mp3播放器jmplayer[管理资料]
![毕业设计(论文)-基于java的mp3播放器jmplayer[管理资料]](https://img.taocdn.com/s3/m/d62b9a9925c52cc58ad6be43.png)
基于JA V A的Mp3播放器JMPlayer作者姓名专业计算机科学与技术指导教师姓名专业技术职务讲师山东轻工业学院本科毕业设计(论文)原创性声明本人郑重声明:所呈交的毕业论文,是本人在指导教师的指导下独立研究、撰写的成果。
论文中引用他人的文献、数据、图件、资料,均已在论文中加以说明,除此之外,本论文不含任何其他个人或集体已经发表或撰写的成果作品。
对本文研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示了谢意。
本声明的法律结果由本人承担。
毕业论文作者签名:年月日山东轻工业学院关于毕业设计(论文)使用授权的说明本毕业论文作者完全了解学校有关保留、使用毕业论文的规定,即:学校有权保留、送交论文的复印件,允许论文被查阅和借阅,学校可以公布设计论文的全部或部分内容,可以采用影印、扫描等复制手段保存本论文。
指导教师签名:毕业设计(论文)作者签名:年月日年月日目录摘要 (III)ABSTRACT (IV)第一章引言 (1)课题研究背景及意义 (1)音乐播发器的发展及历史 (1)系统开发目标 (2)本文的主要内容和结构 (2)第二章相关工具及技术介绍 (1)Eclipse简介 (3)Java Thread简介 (4)JavaSound简介 (5)Java Swing简介 (6)Java Properties简介 (7)第三章需求分析 (9)工作流程分析 (9)评价具体需求分析 (9)系统功能结构图 (9)功能详细描述 (10)Mp3播放 (10)播放控制 (10)播放信息控制 (10)Mp3列表管理 (11)歌词 (11)其他 (11)第四章总体设计 (12)系统要求 (12)系统功能描述 (12)系统运行环境 (13)系统设计思想 (13)总体流程设计 (13)Mp3播放设计 (14)播放模式设计 (15)Mp3文件列表管理设计 (15)歌词设计 (16)皮肤切换设计 (17)显示模式设计 (18)第五章详细设计 (19)界面设计 (19)系统关键类设计 (20)系统类结构 (22)第六章软件功能实现 (23)播放Mp3实现 (23)Mp3文件解析实现 (23)Mp3列表控制类实现 (23)Mp3歌词解析及显示控制实现 (23)结束语 (25)参考文献 (24)致谢 (27)摘要随着java 语言的出现,软件的跨平台性已经能被更进一步的解决和处理,随着Internet的发展,软件的跨平台性又被提高到另一个新的要求。
JMF(Java Media Framework)基础教程

Hi, Java媒体架构基础内容表格1. 关于此指南2. 一个简单的音频播放器3. JMF用户接口组件4. JMF概念5. 传播和接收媒体6. 总结以及资源第一节. 关于此指南此指南包含的内容?Java 媒体架构(JMF)是一个令人激动的通用的API,它允许Java开发者用许多不同的方法处理媒体。
本指南主要通过使用工作的例子提供一个JMF的一些主要的特征的概述。
阅读完本指南后,你将会明白JMF体系结构中的主要播放功能。
你同样能正确的使用JMF,使用现存的例子和可为更多特殊功能扩展的源代码。
本指南包含着以下主题:· 下载和安装JMF· 主要的JMF类以及它们在JMF体系结构中的应用· 播放本地的媒体文件· 为媒体的存取和操作制作以和图形用户界面(GUI)· 通过网络传播媒体· 通过网络接收媒体几乎所有的媒体类型的操作和处理都可以通过JMF来实现。
全面的讨论JMF所提供的所有特征已经超过了本指南的范围,我们将使用三个简单的媒体应用程序来学习此框架的构建模块。
通过这个方法,本指南将为你未来学习和实施更多特殊的应用提供准备。
我应该使用此指南吗?本指南会带你学习使用JMF工作的基础。
为完成这些,我们会创建三个的独立工作的例程序。
每个例子都会建立前一个例子的基础上,显示JMF功能性的不同方面。
在本指南中的例子假定你曾经使用过并且已经熟悉了Java程序语言。
除了Java 核心和JMF的类之外,我们会使用一些Java AWT和Swing类(用于创建GUI),也会有一些Java网络类(用于在网络中传输媒体)。
对GUI和网络类一些熟悉有助于你更快的明白观点和这里的例子,但并非是阅读本指南必须的。
我们将学习的例程序如下· 一个简单的音频播放器(JMF的HelloWorld应用):这个字符界面的播放器通过在命令行中简单的输入媒体文件的名字就可以播放大多数的音频类型。
用JMF构建媒体播放器(1)

try { //准备一个要播放的视频文件的URL url = new URL("file:/d:/2.mpg"); } catch (MalformedURLException e) { e.printStackTrace(); } try { //通过调用Manager的createPlayer方法来创建一个Player的对象 //这个对象是媒体播放的核心控制对象 player = Manager.createPlayer(url); } catch (NoPlayerException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); }
JMF(Java Media Frame ,rk)即Java媒体框架, 是sun公司推出的一个应用程序接口,可 以实现音频、视频信号的采集、存储、 和传输,支持压缩的媒体流及存储媒体 的同步、控制、处理和播放。JBuilder x是 Borland公司推出的可视化Java语言编程工 具,它提供了一个功能强大的集成开发 环境,可以方便地创建各种Java应用程和 小应用程
实例代码:
package com.bird.jmf; import java.awt.BorderLayout; import ponent; import java.awt.Dimension; import java.awt.Frame; import java.awt.Panel; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; import .MalformedURLException; import .URL; import javax.media.CannotRealizeException; import javax.media.ControllerEvent; import javax.media.ControllerListener; import javax.media.EndOfMediaEvent; import javax.media.Manager; import javax.media.MediaLocator; import javax.media.NoPlayerException; import javax.media.Player; import javax.media.PrefetchCompleteEvent; import javax.media.RealizeCompleteEvent; import javax.media.Time;
一个简单音乐播放器代码

一个简单音乐播放器代码package bofang;import java.io.IOException;import com.example.bofang.R;import android.content.Intent;import android.media.MediaPlayer;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class Activity extends android.app.Activity{ private Button bt1;private Button bt2;private MediaPlayer player;//mediaplayer对象private boolean isplaying;//是否播放@Overrideprotected void onCreate(Bundle savedInstanceState) { // TODO自动生成的方法存根super.onCreate(savedInstanceState);setContentView(yout.activity);bt1=(Button)findViewById(R.id.bt1);bt2=(Button)findViewById(R.id.bt2);bt3.setOnClickListener(new OnClickListener() {bt1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO自动生成的方法存根playOrpauseMusic();}});bt2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO自动生成的方法存根stopMusic();}});init();}private void playOrpauseMusic() {// TODO自动生成的方法存根isplaying=player.isPlaying();if(isplaying){player.pause();bt1.setText("播放");}else{player.start();bt1.setText("暂停");//setimageresource(r.drawable.play)设置更换图片资源位置}bt2.setEnabled(true);}private void stopMusic() {// TODO自动生成的方法存根player.stop();bt1.setText("播放");bt2.setEnabled(false);try{ player.prepare();//为下次播放准备}catch(IllegalStateException e){e.printStackTrace();}catch(IOException e){e.printStackTrace();}player.seekTo(0);//定位音乐起始位置}private void init(){player=MediaPlayer.create(this,R.raw.cmsj);bt2.setEnabled(false);} }。
常用的播放器控制代码

<object id="player" height="64" width="260" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"><param NAME="AutoStart" V ALUE="-1"><!--是否自动播放--><param NAME="Balance" V ALUE="0"><!--调整左右声道平衡,同上面旧播放器代码--><param name="enabled" value="-1"><!--播放器是否可人为控制--><param NAME="EnableContextMenu" V ALUE="-1"><!--是否启用上下文菜单--><param NAME="url" value="/blog/1.wma"><!--播放的文件地址--><param NAME="PlayCount" V ALUE="1"><!--播放次数控制,为整数--><param name="rate" value="1"><!--播放速率控制,1为正常,允许小数,1.0-2.0--><param name="currentPosition" value="0"><!--控件设置:当前位置--><param name="currentMarker" value="0"><!--控件设置:当前标记--><param name="defaultFrame" value=""><!--显示默认框架--><param name="invokeURLs" value="0"><!--脚本命令设置:是否调用URL--><param name="baseURL" value=""><!--脚本命令设置:被调用的URL--><param name="stretchToFit" value="0"><!--是否按比例伸展--><param name="volume" value="50"><!--默认声音大小0%-100%,50则为50%--><param name="mute" value="0"><!--是否静音--><param name="uiMode" value="mini"><!--播放器显示模式:Full显示全部;mini最简化;None不显示播放控制,只显示视频窗口;invisible全部不显示--><param name="windowlessVideo" value="0"><!--如果是0可以允许全屏,否则只能在窗口中查看--><param name="fullScreen" value="0"><!--开始播放是否自动全屏--><param name="enableErrorDialogs" value="-1"><!--是否启用错误提示报告--><param name="SAMIStyle" value><!--SAMI样式--><param name="SAMILang" value><!--SAMI语言--><param name="SAMIFilename" value><!--字幕ID--></object>下面是一些常用的方法和属性://基本属性URL:String; 指定媒体位置,本机或网络地址uiMode:String; 播放器界面模式,可为Full, Mini, None, InvisibleplayState:integer; 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪enableContextMenu:Boolean; 启用/禁用右键菜单(也是简单的防盗链方法)fullScreen:boolean; 是否全屏显示//播放器控制属性controls.play; 播放controls.pause; 暂停controls.stop; 停止controls.currentPosition:double; 当前进度controls.currentPositionString:string; 当前进度,字符串格式。
javplayer原理

javplayer原理JavaPlayer是一个用于在Java应用程序中播放音频和视频文件的工具。
它基于Java Media Framework(JMF)和Java Sound API,并提供了简单易用的接口来实现音视频播放功能。
JavaPlayer的原理主要包括以下几个方面:1. **JMF架构**:Java Media Framework是用于处理音频和视频数据的Java API。
它提供了一组类库和接口,用于实现音视频播放、录制、编辑等功能。
JMF的架构主要包括媒体引擎、媒体处理器和数据源。
媒体引擎负责协调各个组件,媒体处理器用于处理媒体数据,数据源提供媒体数据。
2. **媒体播放**:JavaPlayer通过JMF提供的媒体引擎和媒体处理器来实现媒体文件的播放。
首先,JavaPlayer需要创建一个媒体播放器对象,并指定要播放的媒体文件。
然后,JavaPlayer会使用媒体引擎加载媒体数据,并使用媒体处理器解码和播放媒体数据。
3. **音视频同步**:在播放音视频文件时,JavaPlayer需要确保音频和视频的同步。
这通常通过同步时钟和缓冲区来实现。
JavaPlayer会使用一个时钟对象来跟踪音视频数据的播放进度,并根据时钟来同步音频和视频的播放。
同时,JavaPlayer还会使用缓冲区来处理媒体数据的加载和播放延迟,以确保音视频同步。
4. **事件处理**:JavaPlayer可以通过监听媒体播放器的事件来处理播放过程中的各种情况。
例如,JavaPlayer可以监听媒体播放器的播放完成事件,以便在媒体文件播放完毕时执行相应的操作。
此外,JavaPlayer还可以监听媒体播放器的错误事件,以处理播放过程中可能出现的错误。
总的来说,JavaPlayer的原理是基于JMF的媒体处理和播放机制实现的。
它通过媒体引擎和媒体处理器加载、解码和播放音视频文件,并通过时钟和缓冲区来实现音视频同步和播放控制。
Javaapplet音频播放器

1课题需求分析在Java2平台出现前,Java语言只能处理电话音质的声音,以单声道8KHz的采样频率存储为u-lawAU文件。
Java2平台增加了AIFF、WA V以及三种MIDI文件类型的支持。
所支持的三种MIDI文件格式为MIDI文件类型0、MIDI文件类型1以及RMF。
2课程解决方案本程序有三个文件:SoundApplet.Java是主文件,AppletSoundLoader.Java中的AppletSoundLoader类继承Thrwad负责为声音文件获得AudioClip对象并把它加到AppletSoundList中去;AppletSoundList.java中定义的AppletSoundList继承自Hashtable,提供getClip<String)和putClip(AudioClip,String>方法,分别从哈希表中取得AudioClip 对象和放置AudioClip对象。
其结构是AppletSoundList中用AppletSoundLoader来装载制定URL的声音文件,AppletSoundLoader负责为声音文件产生AudioClip对象并添加到AppletSoundList中。
在SoundApplet中则只是利用AppletSoundList类。
3课题实现主要的声音文件类型如下:AU (扩展名为AU或SND>:适用于短的声音文件,为Solaris和下一代机器的通用文件格式,也是Java平台的标准音频格式。
AU类型文件使用的三种音频格式为:8位u-law类型<通常采用频率为8KHz),8位线性类型以及16位线性类型。
WA V<扩展名为WA V):由Microsoft和IBM共同开发,对WA V的支持已经被加进Windows95并且被延伸到Windows98。
WA V文件能存储各种格式包括u-law、a-law 和PCM<线性)数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//程序所用到的各种程序包import java.awt.BorderLayout;import java.awt.CheckboxMenuItem; import java.awt.Color;import ponent;import java.awt.Container;import java.awt.FileDialog;import java.awt.Font;import java.awt.FontMetrics;import java.awt.Graphics;import java.awt.Menu;import java.awt.MenuBar;import java.awt.MenuItem;import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent;import javax.media.ControllerClosedEvent;import javax.media.ControllerEvent;import javax.media.ControllerListener;import javax.media.EndOfMediaEvent;import javax.media.GainControl;import javax.media.Manager;import javax.media.MediaLocator;import javax.media.NoPlayerException;import javax.media.Player;import javax.media.PrefetchCompleteEvent;import javax.media.RealizeCompleteEvent;import javax.media.Time;import javax.swing.JFrame;//本程序对应的类;class MediaPlayerextends JFrameimplements ActionListener, ControllerListener, ItemListener { //MediaPlayer类的变量成员的声明;//JMF提供的播放器对象;Player player;Component vc, cc, gcc;GainControl gc;boolean first = true, loop = false;//设立一个字符串记录当前打开文件的路径String currentDirectory;MediaPlayer(String title {super(title;// 利用一个 adapter 实现对用户点击窗口系统菜单的关闭按钮 // 时的响应; addWindowListener(new WindowAdapter( {public void windowClosing(WindowEvent e {//调用 dispose 以执行 windowCloseddispose(;}public void windowClosed(WindowEvent e {if (player != nullplayer.close(;System.exit(0;}};//调用设置程序菜单栏的方法成员完成菜单的布置setupMenu(;setSize(400, 400;setVisible(true;}//本方法用以设置程序菜单栏public void setupMenu( {//设置一个菜单Menu f = new Menu("文件 ";//往设置的菜单种添加菜单项MenuItem mi = new MenuItem("打开 ";mi.addActionListener(this;f.add(mi;f.addSeparator(;CheckboxMenuItem cbmi = new CheckboxMenuItem("循环 ", false; cbmi.addItemListener(this;f.addSeparator(;mi = new MenuItem("退出 ";mi.addActionListener(this;f.add(mi;Menu l = new Menu("播放列表 ";Menu c = new Menu("播放控制 ";MenuItem move = new MenuItem("播放 "; move.addActionListener(this;c.add(move;c.addSeparator(;MenuItem pause = new MenuItem("暂停 "; pause.addActionListener(this;c.add(pause;c.addSeparator(;MenuItem stop = new MenuItem("停止 "; stop.addActionListener(this; c.add(stop;c.addSeparator(;//设置一个菜单栏MenuBar mb = new MenuBar(;//将设置的菜单依次加入程序的菜单栏中去 mb.add(f;mb.add(c;mb.add(l;//将构造完成的菜单栏交给当前程序的窗口; setMenuBar(mb;}//事件响应成员;捕捉发送到本对象的各种事件; public void actionPerformed(ActionEvent e {//设一个字符串用于暂存打开的媒体文件的路径; String cufile , selcectfile;// 调用 dispose 以便执行 windowCloseddispose(;return;}//次事件表明用户选择了 " 播放 " 菜单命令;//如果当前有一个文件可以播放则执行播放命令;if (e.getActionCommand(.equals("播放 " {if (player != null {player.start(;}return;}//如果当前正在播放某一文件,则执行暂停;if (e.getActionCommand(.equals("暂停 " {if (player != null {player.stop(;}return;}//次事件表明用户选择了 " 播放 " 菜单命令;//如果当前有一个文件可以播放则执行播放命令;if (e.getActionCommand(.equals("停止 " {if (player != null {player.stop(;player.setMediaTime(new Time(0;}return;}//用户选择要播放的媒体文件if (e.getActionCommand(.equals("打开 " {FileDialog fd = new FileDialog(this, " 打开媒体文件 ", FileDialog.LOAD; fd.setDirectory(currentDirectory;fd.show(;// 如果用户放弃选择文件,则返回if (fd.getFile( == nullreturn;//保存了所选文件的名称及其全路径名称已被稍后使用//同时设置当前文件夹路径selcectfile = fd.getFile(;currentDirectory = fd.getDirectory(;cufile = currentDirectory + selcectfile;//将用户选择的文件作为一个菜单项加入播放列表该菜单项 " 名为 " 该文件名; //被点击后给出的命令串是该文件的全路径名MenuItem mi = new MenuItem(selcectfile;mi.setActionCommand(cufile;MenuBar mb = getMenuBar(;Menu m = mb.getMenu(2;mi.addActionListener(this;m.add(mi;} else {//程序逻辑运行到此表示用户选择了一个 " 播放列表 " 中的媒体文件//此时可以通过如下动作获得该文件的全路径名;cufile = e.getActionCommand(;selcectfile = cufile;}//如果已存在一个播放器,则先将其关闭,稍后重新创建//创建播放器时需要捕捉一些异常;if (player != nullplayer.close(;try {player = Manager.createPlayer(new MediaLocator("file:" + cufile; } catch (java.io.IOException e2 {System.out.println(e2;return;} catch (NoPlayerException e2 {System.out.println("不能找到播放器 .";return;}if (player == null {System.out.println("无法创建播放器 .";return;}first = false;setTitle(selcectfile;//设置处理播放控制器实际的对象; player.addControllerListener(this;player.prefetch(; } //因为实现了"ControllerListener"接口,本方法用于处理媒体播放器传来的事件; public void controllerUpdate(ControllerEvent e { Container tainer = getContentPane(; // // // if 调用 player.close(时 ControllerClosedEvent 事件出现。