java视频播放器源代码
网页视频播放器代码大全
网页视频播放器代码大全1.avi格式代码片断如下:<object id="video" width="400" height="200" border="0" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"><param name="ShowDisplay" value="0"><param name="ShowControls" value="1"><param name="AutoStart" value="1"><param name="AutoRewind" value="0"><param name="PlayCount" value="0"><param name="Appearance value="0 value="""><param name="BorderStyle value="0 value="""><param name="MovieWindowHeight" value="240"><param name="MovieWindowWidth" value="320"><param name="FileName" value="/Mbar.avi"><embed width="400" height="200" border="0" showdisplay="0" showcontrols="1" autostart="1" autorewind="0" playcount="0" moviewindowheight="240" moviewindowwidth="320" filename="/Mbar.avi" src="Mbar.avi"></embed></object>2.mpg格式代码片断如下:<object classid="clsid:05589FA1-C356-11CE-BF01-00AA0055595A" id="ActiveMovie1" width="239" height="250"><param name="Appearance" value="0"><param name="AutoStart" value="-1"><param name="AllowChangeDisplayMode" value="-1"><param name="AllowHideDisplay" value="0"><param name="AllowHideControls" value="-1"><param name="AutoRewind" value="-1"><param name="Balance" value="0"><param name="CurrentPosition" value="0"><param name="DisplayBackColor" value="0"><param name="DisplayForeColor" value="16777215"><param name="DisplayMode" value="0"><param name="Enabled" value="-1"><param name="EnableContextMenu" value="-1"><param name="EnablePositionControls" value="-1"><param name="EnableSelectionControls" value="0"><param name="EnableTracker" value="-1"><param name="Filename" value="/mpeg/halali.mpg" valuetype="ref"><param name="FullScreenMode" value="0"><param name="MovieWindowSize" value="0"><param name="PlayCount" value="1"><param name="SelectionStart" value="-1"><param name="SelectionEnd" value="-1"><param name="ShowControls" value="-1"><param name="ShowDisplay" value="-1"><param name="ShowPositionControls" value="0"><param name="ShowTracker" value="-1"><param name="Volume" value="-480"></object>3.smi格式代码片断如下:<OBJECT id=RVOCX classid=clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA width=240 height=180><param name="_ExtentX" value="6350"><param name="_ExtentY" value="4763"><param name="AUTOSTART" value="-1"><param name="SHUFFLE" value="0"><param name="PREFETCH" value="0"><param name="NOLABELS" value="-1"><param name="SRC" value="rm.rm"><param name="CONTROLS" value="ImageWindow"><param name="CONSOLE" value="console1"><param name="LOOP" value="0"><param name="NUMLOOP" value="0"><param name="CENTER" value="0"><param name="MAINTAINASPECT" value="0"><param name="BACKGROUNDCOLOR" value="#000000"><embed src="real.smi" type="audio/x-pn-realaudio-plugin" console="Console1" controls="ImageWindow" height="180" width="240" autostart="true"></OBJECT>4.rm格式代码片断如下:<OBJECT ID=video1 CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" HEIGHT=288 WIDTH=352><param name="_ExtentX" value="9313"><param name="_ExtentY" value="7620"><param name="AUTOSTART" value="0"><param name="SHUFFLE" value="0"><param name="PREFETCH" value="0"><param name="NOLABELS" value="0"><param name="SRC" value="rtsp://203.*.*.35/vod/dawan-a.rm"><param name="CONTROLS" value="ImageWindow"><param name="CONSOLE" value="Clip1"><param name="LOOP" value="0"><param name="NUMLOOP" value="0"><paramname="MAINTAINASPECT" value="0"><param name="BACKGROUNDCOLOR" value="#000000"><embed SRC type="audio/x-pn-realaudio-plugin" CONSOLE="Clip1" CONTROLS="ImageWindow" HEIGHT="288" WIDTH="352" AUTOSTART="false"></OBJECT>5.wmv格式代码片断如下:<object id="NSPlay" width=200 height=180 classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"codebase="/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" standby="Loading Microsoft Windows Media Player components..." type="application/x-oleobject" align="right" hspace="5"><param name="AutoRewind" value=1><param name="FileName" value="/blog/******.wmv"><param name="ShowControls" value="1"><param name="ShowPositionControls" value="0"><param name="ShowAudioControls" value="1"><param name="ShowTracker" value="0"><param name="ShowDisplay" value="0"><param name="ShowStatusBar" value="0"><param name="ShowGotoBar" value="0"><param name="ShowCaptioning" value="0"><param name="AutoStart" value=1><param name="Volume" value="-2500"><param name="AnimationAtStart" value="0"><param name="TransparentAtStart" value="0"><param name="AllowChangeDisplaySize" value="0"><param name="AllowScan" value="0"><param name="EnableContextMenu" value="0"><param name="ClickToPlay" value="0"></object>6.wma格式放在 <body> 里面。
javaplayer总结
javaplayer总结JavaPlayer 是一个流行的 Java 视频播放器,它支持多种视频格式和播放模式,可以让用户在 Java 应用程序中方便地播放视频。
下面是 JavaPlayer 总结:1. 评分最高的内容:JavaPlayer 的评分最高的内容是其优秀的性能和易用性。
JavaPlayer 可以播放各种类型的视频文件,包括 MKV、AVI、MOV、MP4 等,而且它具有简单易用的 API,使得开发人员可以轻松地集成视频播放功能到他们的 Java 应用程序中。
2. 拓展:JavaPlayer 还可以进行一些有趣的拓展。
例如,开发人员可以使用 JavaPlayer 的 API 创建自己的视频播放器,支持自定义视频格式、字幕、音频、进度条等。
此外,JavaPlayer 还支持在视频中嵌入广告,为开发人员提供更多的商业机会。
3. 支持多种格式:JavaPlayer 支持多种视频格式,包括 MKV、AVI、MOV、MP4 等。
这是因为 JavaPlayer 使用了开源的 FFmpeg 库来处理视频文件,允许开发人员轻松地将视频文件格式转换为 JavaPlayer 支持的格式。
4. 播放模式:JavaPlayer 支持多种播放模式,例如自动播放、暂停、快进、快退、音量调节等。
此外,JavaPlayer 还支持全屏模式和缩放模式,使得用户可以更加舒适地观看视频。
5. 性能:JavaPlayer 的性能非常好,因为它使用了优化的视频编解码器和解码器。
此外,JavaPlayer 还支持多线程处理,使得它可以同时处理多个视频流,提高视频播放的流畅度。
6. 支持 Web 浏览器:JavaPlayer 还可以在 Web 浏览器中运行,允许用户通过互联网观看视频。
这是因为 JavaPlayer 是一个跨平台的应用程序,可以在不同的操作系统和浏览器中运行。
JavaPlayer 是一个非常流行的 Java 视频播放器,它提供了许多有用的功能和易用性,使得开发人员可以轻松地集成视频播放功能到他们的 Java 应用程序中。
视频播放器的程序设计及代码示例
视频播放器的程序设计及代码示例一、介绍视频播放器是一种常用的应用程序,用于播放电影、电视剧、MV等各种类型的视频文件。
它可以提供良好的用户体验,具备快进、快退、调节音量、全屏播放等功能。
在本文中,将介绍视频播放器的程序设计原理,并给出一些示例代码来帮助读者更好地理解和实践。
二、程序设计原理1. 用户界面设计:视频播放器的用户界面需要简洁明了,并提供直观的操作按钮,如播放、暂停、停止、快进/快退、音量调节等。
可以使用图标、按钮、滑块等控件来实现,并合理布局,以便用户轻松地操作和控制播放器。
2. 视频解码与显示:视频播放器需要将视频文件进行解码,并实时将解码后的图像进行显示。
常见的视频解码算法有H.264、MPEG-2等。
可以使用像素缓冲区来存储解码后的图像数据,并使用界面库或图形库将图像数据显示在屏幕上。
3. 音频解码与播放:视频文件中通常包含音频轨道,视频播放器需要将音频数据解码并实时播放。
音频解码可以使用MP3、AAC等常见的音频解码算法。
播放音频可以使用操作系统提供的音频播放接口,如Windows下的DirectSound、Linux下的ALSA等。
4. 文件格式支持:视频播放器需要支持常见的视频文件格式,如MP4、AVI、MKV等。
这涉及到对不同格式文件的解析和支持,需要使用相应的解析库或者开源框架。
5. 视频控制功能:视频播放器除了基本的播放、暂停、停止功能外,还应该提供快进/快退、跳转指定位置、循环播放、调节音量和亮度等高级控制功能。
通过对用户操作的监测,可以实现这些功能,并更新界面以反映当前的播放状态。
三、代码示例以下是一个基于Java编写的简单视频播放器的代码示例,用于展示播放视频文件和基本的控制功能:```javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.File;import ponent.EmbeddedMediaPlayerComponent;import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;public class SimpleVideoPlayer {private JFrame frame;private JPanel playerPanel;private JButton playButton;private JButton pauseButton;private JButton stopButton;private EmbeddedMediaPlayer mediaPlayer;public SimpleVideoPlayer() {frame = new JFrame("Simple Video Player");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(800, 600);playerPanel = new JPanel();frame.getContentPane().add(playerPanel, BorderLayout.CENTER);playButton = new JButton("Play");pauseButton = new JButton("Pause");stopButton = new JButton("Stop");playerPanel.add(playButton);playerPanel.add(pauseButton);playerPanel.add(stopButton);mediaPlayer = newEmbeddedMediaPlayerComponent().getMediaPlayer();playButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {mediaPlayer.play();}});pauseButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {mediaPlayer.pause();}});stopButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {mediaPlayer.stop();}});frame.setVisible(true);}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {SimpleVideoPlayer player = new SimpleVideoPlayer();}});}}```这段代码使用了Java语言,基于VLCJ (VLC Java Bindings)库来实现视频播放器。
java 视频处理 mencoder
Mencoder是Mplayer自带的编码工具(Mplayer是Linux下的播放器,开源,支持几乎所有视频格式的播放,现在有windows和Mac版本)。
Mplayer的获得与配置:Mplayer windows版本下载列表:[url]http://www5.mplayerhq.hu/MPlayer/releases/win32/[/url]列表中会有版本发布日期,可以挑选最新的版本,也可以选择old/去下载老的版本,笔者用的是6月份的版本。
下载后解压到某个文件夹中即可。
Codecs下载列表:[url]http://www5.mplayerhq.hu/MPlayer/releases/codecs/[/url]选择windows-all-********.zip(*表示年月日)下载,将zip包中的文件夹下所有文件,包括*.dll、*.acm、*.ax等等全部copy到Mplayer根目录下的codecs文件夹中。
此时最好把Mplayer.exe所在路径,同时也是Mencoder.exe所在路径添加到环境变量path 中。
现在可以试试用Mplayer播放视频,比如有个视频位于D:\music\APerfectMatch.wmv,那么可以打开一个cmd窗口,输入 mplayer “D:\music\APerfectMatch.wmv”,感受一下来自Linux 的播放器吧,可以通过键盘来操纵。
Mencoder转换视频格式:以将各种格式转换为flv格式为例(flv格式是flash支持的视频格式):mencoder "E:\test.m2p" -o "E:\output.flv" -of lavf -lavfoptsi_certify_that_my_video_stream_does_not_use_b_frames -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcoptsvcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strateg y=1 -vf scale=512:-3 -ofps 12 -srate 22050在命令行中输入这行代码(注意:windows的命令行是不支持换行的),按回车运行,一段时间之后就可以得到一个.flv文件,播放一下看看品质如何(可以直接用Mplayer播放)。
基于JAVA的影视播放地址解析API调用代码实例
params.put("key",APPKEY);//聚合 key params.put("kw","");//关键字
StringBuffer sb = new StringBuffer(); if(method==null || method.equals("GET")){
strUrl = strUrl+"?"+urlencode(params); } URL url = new URL(strUrl); conn = (HttpURLConnection) url.openConnection(); if(method==null || method.equals("GET")){
conn.disconnect(); } } return rs; }
//将 map 型转为请求参数型 public static String urlencode(Map<String,Object>data) {
StringBuilder sb = new StringBuilder(); for (Map.Entry i : data.entrySet()) {
sb.append(strRead); } rs = sb.toString(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) {
优秀java开源项目代码
优秀java开源项目代码
有许多优秀的Java开源项目可供学习。
以下是一些示例:
1.Spring Framework:Spring是一个开源的Java平台,为开发者提供了
全面的编程和配置模型,以及一个轻量级的无侵入式框架。
它是一个为Java应用程序开发提供全面支持的框架,尤其在开发企业级应用程序方面表现突出。
2.Hibernate:Hibernate是一个对象关系映射(ORM)框架,它允许Java程
序员将对象模型映射到关系数据库中。
Hibernate提供了一种方式,使你可以直接将对象之间的相互作用映射到数据库的CRUD操作。
3.Apache Commons:Apache Commons是一组Java工具库,提供了许
多实用的功能,包括字符串操作、文件操作、数值计算等。
这个项目为Java开发者提供了许多易于使用且高效的工具。
4.Guava:Guava是Google的Java核心库,提供了很多有用的工具类和实
用程序,如缓存、并发库、原始类型支持、集合操作、字符串处理、I/O等。
flix Eureka:Eureka是一个服务发现组件,用于定位运行在AWS云
或其他云平台上的中间层服务,而不需要服务消费者知道服务提供者的实例ID。
flix Hystrix:Hystrix是一个容错管理工具,旨在隔离访问远程系统、
服务和第三方库的点,以防止级联故障。
flix Ribbon:Ribbon是一个客户端负载均衡器,有助于在云端实现
微服务之间的通信。
以上都是优秀的Java开源项目,你可以从中学习到很多知识和技巧。
常用的播放器控制代码
<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; 当前进度,字符串格式。
java vlc 参数
java vlc 参数在Java中使用VLCJ库时,可以通过以下参数来配置VLC媒体播放器的行为:1.media:指定要播放的媒体文件的路径或URL。
2.width和height:指定播放器窗口的宽度和高度。
3.fullscreen:指定是否以全屏模式播放媒体。
4.autoplay:指定是否自动播放媒体。
5.loop:指定是否循环播放媒体。
6.volume:指定播放器的音量级别。
7.position:指定媒体播放的起始位置(以秒为单位)。
8.subtitle-file:指定要显示的字幕文件的路径。
9.audio-stereo-mode:指定音频的立体声模式。
10.其他VLC命令行参数:可以通过将其他VLC命令行参数传递给VLCJ来配置VLC的行为。
例如,可以使用--no-video-title-show参数来隐藏视频标题。
下面是一个使用VLCJ播放本地视频文件的示例代码:java复制代码importuk.co.caprica.vlcj.factory.MediaPlayerFactory;import uk.co.caprica.vlcj.player.base.MediaPlayer;importponent.EmbeddedMediaPlayerC omponent;import javax.swing.*;public class VLCPlayerExample {public static void main(String[] args) {// Create JFrame and set it as the application's main windowJFrame frame = new JFrame("VLCJ Example");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;frame.setSize(640, 480);// Create a media player component and add it to the frameEmbeddedMediaPlayerComponent mediaPlayerComponent = new EmbeddedMediaPlayerComponent();frame.setContentPane(mediaPlayerComponent);// Create a media player and set the media to be playedMediaPlayer mediaPlayer =mediaPlayerComponent.mediaPlayer();mediaPlayer.media().play("file:///path/to/your/video /file.mp4");// Display the frameframe.setVisible(true);}}在这个示例中,我们创建了一个JFrame窗口,并在其中添加了一个EmbeddedMediaPlayerComponent。
教你利用VC++和JAVA 设计视频播放器的详细步骤
利用VC++设计视频播放器一 需求分析制作一个视频播放器,能够播放多种格式的多媒体文件:CD 音乐曲目(.cda )、数字化波形声音(.WAV )、MIDI 文件(. mid, .rmi, .midi )、Windows Media 文件(. asf, .wm, .wma )、电影文件(. mpeg , . mpg , .mp3)、视频文件(.avi , . wmv )、音频文件(. wav , . snd , .au , .aif )等。
能够有用户自己选择文件,提供媒体播放控制:打开、播放、暂停、停止、全屏能控制播放音量的大小。
应用程序界面美观,使用方便,有完善的操控按钮或进度指示条等。
本课题对软硬件平台要求不高,操作系统可选择Windows2000/Window XP 。
在Visual C++ 6.0下用ActiveMovie 控件来实现。
本课程设计用例如图1所示,用户使用播放器,播放器完成媒体播放和音量调节两大功能。
<< use>> 用户图1 视频播放器UML 用例图二 对象分析由于播放器主要围绕实现以上两大功能,可以建立如表1所示的对象。
表1 播放器所建对象列表对象 属性 方法操作界面媒体文件、路径,媒体播放进度、状态,音量信息 显示媒体文件信息(文件名、路径) 媒体播放控制:打开文件、播放、暂停、停止、退出、全屏 显示播放信息(播放进度、状态)、控制音量 媒体播放媒体文件名、路径,控制命令 打开文件、播放、暂停、停止、退出、全屏 音量控制 音量调节 放大音量,减小音量音量控制和媒体播放对象对界面管理存在依赖关系,这两个对象要从界面获取控制指令,它们的属性要在界面上显示。
本播放器的类图如图2所示。
媒体播放 音量调节 播放器图2 播放器类图三 界面设计界面应满足以下要求:1. 界面首先要布置一系列按钮控件实现所有要实现的功能;2. 设置“播放进度条”来指示媒体文件的播放进度,还应该可以用鼠标拖动进度条来改变播放进度;3. 设置音量控制按钮(包括增大和减小);4. 界面应尽量美观;根据以上描述,程序运行时效果如图3所示。
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的媒体处理和播放机制实现的。
它通过媒体引擎和媒体处理器加载、解码和播放音视频文件,并通过时钟和缓冲区来实现音视频同步和播放控制。
Java实现视频网站的视频上传、视频转码、及视频播放功能(ffmpeg)
Java实现视频⽹站的视频上传、视频转码、及视频播放功能(ffmpeg)视频⽹站中提供的在线视频播放功能,播放的都是FLV格式的⽂件,它是Flash动画⽂件,可通过Flash制作的播放器来播放该⽂件.项⽬中⽤制作的player.swf播放器.多媒体视频处理⼯具FFmpeg有⾮常强⼤的功能包括视频采集功能、视频格式转换、视频抓图、给视频加⽔印等。
ffmpeg视频采集功能⾮常强⼤,不仅可以采集视频采集卡或USB摄像头的图像,还可以进⾏屏幕录制,同时还⽀持以RTP⽅式将视频流传送给⽀持RTSP的流媒体服务器,⽀持直播应⽤。
1.能⽀持的格式ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)2.不能⽀持的格式对ffmpeg⽆法解析的⽂件格式(wmv9,rm,rmvb等),可以先⽤别的⼯具(mencoder)转换为avi(ffmpeg能解析的)格式.实例是将上传视频转码为flv格式,该格式ffmpeg⽀持,所以我们实例中需要ffmpeg视频处理⼯具.数据库MySQL5.5实例所需要的数据库脚本drop database if exists db_mediaplayer;create database db_mediaplayer;use db_mediaplayer;create table tb_media(id int not null primary key auto_increment comment '主键' ,title varchar(50) not null comment '视频名称' ,src varchar(200) not null comment '视频存放地址' ,picture varchar(200) not null comment '视频截图' ,descript varchar(400) comment '视频描述' ,uptime varchar(40) comment '上传时间');desc tb_media;项⽬结构图:上传视频界⾯设计在上传⽂件时,Form表单中 enctype属性值必须为"multipart/form-data".模块界⾯设计如下图:enctype属性值说明application/x-www-form-urlencoded表单数据被编码为名称/值对,这是标准的编码格式multipart/form-data表单数据被编码为⼀条消息,页⾯上每个控件对应消息中的⼀部分text/plain表单数据以纯⽂本形式进⾏编码,其中不含任何控件格式的字符⾯向接⼝编程,接⼝中定义系统功能模块.这样⽅便理清业务,同时接⼝的对象必须由实现了该接⼝的对象来创建.这样就避免编码中的某些业务遗漏等,同时扩展性也增强了.package com.webapp.dao;import java.util.List;import com.webapp.entity.Media;/**** MediaDao.java** @version : 1.1** @author :苏若年 <a href="mailto:DennisIT@">发送邮件</a>** @since : 1.0 创建时间: 2013-2-07 上午10:19:54** TODO : interface MediaDao.java is used for ...**/public interface MediaDao {/*** 视频转码* @param ffmpegPath 转码⼯具的存放路径* @param upFilePath ⽤于指定要转换格式的⽂件,要截图的视频源⽂件* @param codcFilePath 格式转换后的的⽂件保存路径* @param mediaPicPath 截图保存路径* @return* @throws Exception*/public boolean executeCodecs(String ffmpegPath,String upFilePath, String codcFilePath, String mediaPicPath)throws Exception;/*** 保存⽂件* @param media* @return* @throws Exception*/public boolean saveMedia(Media media)throws Exception;/*** 查询本地库中所有记录的数⽬* @return* @throws Exception*/public int getAllMediaCount()throws Exception;/*** 带分页的查询* @param firstResult* @param maxResult* @return*/public List<Media> queryALlMedia(int firstResult, int maxResult)throws Exception;/*** 根据Id查询视频* @param id* @return* @throws Exception*/public Media queryMediaById(int id)throws Exception;}接⼝的实现,这⾥列出ffmpeg视频转码与截图模块/*** 视频转码* @param ffmpegPath 转码⼯具的存放路径* @param upFilePath ⽤于指定要转换格式的⽂件,要截图的视频源⽂件* @param codcFilePath 格式转换后的的⽂件保存路径* @param mediaPicPath 截图保存路径* @return* @throws ExceptionString mediaPicPath) throws Exception {// 创建⼀个List集合来保存转换视频⽂件为flv格式的命令List<String> convert = new ArrayList<String>();convert.add(ffmpegPath); // 添加转换⼯具路径convert.add("-i"); // 添加参数"-i",该参数指定要转换的⽂件convert.add(upFilePath); // 添加要转换格式的视频⽂件的路径convert.add("-qscale"); //指定转换的质量convert.add("6");convert.add("-ab"); //设置⾳频码率convert.add("64");convert.add("-ac"); //设置声道数convert.add("2");convert.add("-ar"); //设置声⾳的采样频率convert.add("22050");convert.add("-r"); //设置帧频convert.add("24");convert.add("-y"); // 添加参数"-y",该参数指定将覆盖已存在的⽂件convert.add(codcFilePath);// 创建⼀个List集合来保存从视频中截取图⽚的命令List<String> cutpic = new ArrayList<String>();cutpic.add(ffmpegPath);cutpic.add("-i");cutpic.add(upFilePath); // 同上(指定的⽂件即可以是转换为flv格式之前的⽂件,也可以是转换的flv⽂件)cutpic.add("-y");cutpic.add("-f");cutpic.add("image2");cutpic.add("-ss"); // 添加参数"-ss",该参数指定截取的起始时间cutpic.add("17"); // 添加起始时间为第17秒cutpic.add("-t"); // 添加参数"-t",该参数指定持续时间cutpic.add("0.001"); // 添加持续时间为1毫秒cutpic.add("-s"); // 添加参数"-s",该参数指定截取的图⽚⼤⼩cutpic.add("800*280"); // 添加截取的图⽚⼤⼩为350*240cutpic.add(mediaPicPath); // 添加截取的图⽚的保存路径boolean mark = true;ProcessBuilder builder = new ProcessBuilder();try {mand(convert);builder.redirectErrorStream(true);builder.start();mand(cutpic);builder.redirectErrorStream(true);// 如果此属性为 true,则任何由通过此对象的 start() ⽅法启动的后续⼦进程⽣成的错误输出都将与标准输出合并,//因此两者均可使⽤ Process.getInputStream() ⽅法读取。
java的JMF框架介绍(播放视频)
用java编写打开摄像头程序2Java媒体框架(JMF)使你能够编写出功能强大的多媒体程序,却不用关心底层复杂的实现细节。
JMF API 的使用相对比较简单,但是能够满足几乎所有多媒体编程的需求。
在这篇文章中,我将向你介绍如何用很少的代码就编写出多媒体程序。
Java多媒体框架(JMF)中包含了许多用于处理多媒体的API。
它是一个相当复杂的系统,完全了解这个系统可能需要花上几周的时间,但是这篇文章将主要介绍JMF的几个核心接口和类,然后通过一个简单的例子向你展示如何利用该接口进行编程。
JMF目前的最新版本是2.1,Sun通过它向Java中引入处理多媒体的能力。
下面是JMF所支持的功能的一●可以在Java Applet和应用程序中播放各种媒体文件,例如AU、AVI、MIDI、MPEG、QuickTime和WAV等文件。
●可以播放从互联网上下载的媒体流。
●可以利用麦克风和摄像机一类的设备截取音频和视频,并保存成多媒体文件。
●处理多媒体文件,转换文件格式。
●向互联网上传音频和视频数据流。
●在互联网上广播音频和视频数据。
JMF的结构为了更好地说明JMF的结构,让我们用立体声音响做一个简单的比喻。
当你CD机播放CD唱片的时候,CD唱片向系统提供音乐信号。
这些数据是在录音棚中用麦克风和其他类似的设备记录下来的。
CD播放机将音乐信号传送到系统的音箱上。
在这个例子中,麦克风就是一个音频截取设备,CD唱片是数据源,而音箱是输出设备。
JMF的结构和立体声音响系统非常相似,在后面的文章中,你会遇到下面的这些术语:●数据源(Data source)●截取设备(Capture Device,包括视频和音频截取设备)●播放器(Player)●处理器(Processor)●数据格式(Format)●管理器(Manager)下面让我们来看一看这些术语到底代表什么意思。
1.数据源就像CD中保存了歌曲一样,数据源中包含了媒体数据流。
java vlc 参数
java vlc 参数Java VLC参数是指使用Java编程语言调用VLC(VideoLAN 客户端)时可以使用的一组参数或选项。
这些参数可以用于配置和控制VLC的行为,例如设置视频的显示模式、设置音频输入源和输出设备、调整音频和视频的编解码器、选择子标题轨道等。
1. --no-video :禁止视频播放。
使用这个参数可以在只需要音频的情况下节省系统资源和带宽。
2. --no-audio :禁止音频播放。
使用这个参数可以在只需要视频的情况下节省系统资源和带宽。
3. --screen-width :设置视频显示窗口的宽度。
可以通过指定具体的像素值或使用相对值(例如百分比)来调整窗口大小。
4. --screen-height :设置视频显示窗口的高度。
与--screen-width参数类似,可以指定具体的像素值或相对值。
5. --input-file :指定要播放的媒体文件的路径。
可以是本地文件路径或网络URL地址。
6. --video-filter=name :指定要应用的视频过滤器的名称。
VLC支持多种视频过滤器,例如镜像、旋转、亮度调整等。
7. --audio-filter=name :指定要应用的音频过滤器的名称。
可以通过音频过滤器来实现音频增强、去噪、均衡等效果。
8. --sub-track :选择要显示的字幕轨道。
可以使用轨道ID或轨道名称来指定,例如--sub-track=1或--sub-track="English"。
9. --disable-screensaver :禁用屏幕保护程序。
使用这个参数可以确保在播放媒体时屏幕不会自动关闭或进入节能模式。
10. --fullscreen :以全屏模式播放媒体。
使用这个参数可以最大化视频显示窗口,占据整个屏幕。
11. --play-and-exit :播放完媒体后自动退出。
使用这个参数可以在播放完媒体后自动关闭VLC应用程序。
JavaCV学习(二):使用JavaCV+FFmpeg制作拉流播放器
JavaCV学习(⼆):使⽤JavaCV+FFmpeg制作拉流播放器⼀、前⾔ 在中,我们不断的学习和了解⾳视频相关的知识,随着知识点不断的学习,我们现在应该做的事情,就是将知识点不断的串联起来。
这样才能得到更深层次的领悟。
通过整理我们知道可以使⽤ImageView和SurfaceView甚⾄是View来展⽰图⽚,通过整理我们知道如何播放⾳频原始数据了。
那么可不可以定义为,我们找到了如何播放⾳视频的最基本的⽅式呢?答,当然是的!在⾥,我们接触了⼀次JavaCV,发现⾥⾯提供的API相当丰富,尤其是图形图像处理⽅⾯,那么下⾯我们就基于JavaCV加上它提供的ffmpegAPi⼯具,来完成⼀个基本的拉流播放器的制作,鉴于起名很难,我们先把名字起好:NBPlayer。
⼆、设计⽅案我们要做的是⼀个简单的拉流播放器,需要具备以下功能:1. 将直播流拉取到设备上并展现出来;2. 保证播放当前直播流的⾳视频是同步的;3. 播放视频时可以切换全屏幕与⾮全屏;三、定义播放器的⽣命周期在定义播放器的⽣命周期们需要做到以下两步:1. 先定义⼀下播放器的事件 2. 定义播放器展⽰的控件1. 定义播放器事件因为我们要做的就是⼀个播放器,所以就需要定义出来相应的播放器的事件,最基本的播放器的操作就是:播放、暂停、停⽌。
⽰例代码如下:/*** 播放器抽象类*/public abstract class Player {protected boolean play = false;public void play() {this.play = true;}public void pause() {this.play = false;}public void stop() {this.play = false;}}2. 定义播放器展⽰的控件 - SurfaceView为什么定义完播放器的操作事件之后,就去定义播放器展⽰的控件呢?答:主要是因为我们做的播放器在展⽰控件⽅⾯的思路上和Android原⽣的MediaPlayer及Ijkplayer是⼀样的,都是监听Surface的状态来控制播放器什么时候创建,什么时候暂停,什么时候停⽌并release。
java视频播放器几种
java视频播放器几种package com.bird.jmf;import java.awt.*;import java.awt.event.*;import java.io.*;import /doc/0912398320.html,.*;import javax.swing.*;import javax.media.*;// 视频播放程序public class VideoPlayDemo extends JFrame {private Player player; // 播放器对象private Component visualMedia; // 视频显示组件private Component mediaControl; // 视频播放控制组件private Container container; // 主容器private File mediaFile; //媒体文件private URL fileURL; //媒体文件URL地址public VideoPlayDemo() { // 构造函数super("视频播放程序"); //调用父类构造函数container = getContentPane(); //得到窗口容器JToolBar toobar = new JToolBar(); //实例化工具栏JButton openFile = new JButton("打开媒体文件"); //实例化按钮toobar.add(openFile); //增加按钮到工具栏JButton openURL = new JButton("打开网络地址");toobar.add(openURL);container.add(toobar, BorderLayout.NORTH); //设置工具栏openFile.addActionListener(new ActionListener() { //打开文件按钮事件处理public void actionPerformed(ActionEvent event) {JFileChooser fileChooser = new JFileChooser(); //实例化文件选择器fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); //设置文件打开模式为仅打开文件int result =fileChooser.showOpenDialog(VideoPlayDemo.this);//显示对话框if (result == JFileChooser.APPROVE_OPTION) { //得到用户行为mediaFile = fileChooser.getSelectedFile(); //得到选择的文件}if (mediaFile != null) {try {fileURL = mediaFile.toURL(); //得到文件的URL地址} catch (MalformedURLException ex) {ex.printStackTrace(); //输出错误信息showMessage("打开错误"); //显示错误信息}startPlayer(fileURL.toString()); //开始播放打开的文件 }}});openURL.addActionListener(new ActionListener() { //打开URL按钮事件处理public void actionPerformed(ActionEvent event) {String addressName=JOptionPane.showInputDialog(VideoPlayDemo.this, "输入URL地址");if (addressName != null)startPlayer(addressName); //开始播放打开的URL}});Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, Boolean.TRUE);setSize(300, 200); //设置窗口大小setVisible(true); //设置窗口为可视setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序}//初始化播放器public void startPlayer(String mediaLocation) {if (player != null)//如果播放器非空则移去先前的播放器组件if (visualMedia != null)container.remove(visualMedia); //如果对象visualMedia非空则移去if (mediaControl != null) {container.remove(mediaControl); //如果对象mediaControl非空则移去player.close(); //关闭播放器}MediaLocator mediaLocator = new MediaLocator(mediaLocation); //媒体定位器if (mediaLocator == null) {showMessage("打开文件错误"); //显示错误信息return;}try {player = Manager.createPlayer(mediaLocator); //得到播放器实例player.addControllerListener(new PlayerEventHandler()); //增加播放控制器player.realize();} catch (Exception ex) {ex.printStackTrace();showMessage("打开错误"); //显示错误信息}}//取得媒体组件//Download by /doc/0912398320.html,public void getMediaComponents() {visualMedia = player.getVisualComponent(); //取得视频显示组件//如果对象visualMedia非空则加入到窗口内容窗格if (visualMedia != null) {container.add(visualMedia, BorderLayout.CENTER);pack();}mediaControl = player.getControlPanelComponent(); //取得播放控制组件//如果对象visualMedia非空则加入到窗口内容窗格if (mediaControl != null)container.add(mediaControl, BorderLayout.SOUTH);}//播放器事件处理private class PlayerEventHandler extends ControllerAdapter {public void realizeComplete(RealizeCompleteEvent realizeDoneEvent) {player.prefetch(); //预取媒体数据}//完成预取媒体数据后,开始播放媒体public void prefetchComplete(PrefetchCompleteEvent prefetchDoneEvent) {getMediaComponents();validate();player.start(); //开始播放媒体}//如果媒体播放完毕,重新设置媒体时间并停止媒体播放器public void endOfMedia(EndOfMediaEvent mediaEndEvent) { player.setMediaTime(new Time(0)); //重新设置媒体时间player.stop(); // 停止媒体播放}}public void showMessage(String s) {JOptionPane.showMessageDialog(this, s); //显示提示信息}public static void main(String args[]) {new VideoPlayDemo();}}第二个源码事例import java.awt.BorderLayout;import /doc/0912398320.html,ponent;import java.awt.FileDialog;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.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.JCheckBoxMenuItem;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.SwingUtilities;import javax.swing.UIManager;public class JMFMediaPlayer extends JFrame implements ActionListener, ControllerListener, ItemListener {// JMF的播放器Player player;// 播放器的视频组件和控制组件Component vedioComponent;Component controlComponent;// 标示是否是第一次打开播放器boolean first = true;// 标示是否需要循环boolean loop = false;// 文件当前目录String currentDirectory;// 构造方法public JMFMediaPlayer(String title) {super(title);addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e){// 用户点击窗口系统菜单的关闭按钮// 调用dispose以执行windowCloseddispose();}public void windowClosed(WindowEvent e){if (player != null){// 关闭JMF播放器对象player.close();}System.exit(0);}});// 创建播放器的菜单JMenu fileMenu = new JMenu("文件");JMenuItem openMemuItem = new JMenuItem("打开"); openMemuItem.addActionListener(this);fileMenu.add(openMemuItem);// 添加一个分割条fileMenu.addSeparator();// 创建一个复选框菜单项JCheckBoxMenuItem loopMenuItem = new JCheckBoxMenuItem("循环", false); loopMenuItem.addItemListener(this);fileMenu.add(loopMenuItem);fileMenu.addSeparator();JMenuItem exitMemuItem = new JMenuItem("退出");exitMemuItem.addActionListener(this);fileMenu.add(exitMemuItem);JMenuBar menuBar = new JMenuBar();menuBar.add(fileMenu);this.setJMenuBar(menuBar);this.setSize(200, 200);try {// 设置界面的外观,为系统外观UIManager.setLookAndFeel(UIManager.getSystemLookAndF eelClassName()); SwingUtilities.updateComponentTreeUI(this);} catch (Exception e) {e.printStackTrace();}this.setVisible(true);}/*** 实现了ActionListener接口,处理组件的活动事件*/public void actionPerformed(ActionEvent e) {if (e.getActionCommand().equals("退出")) {// 调用dispose以便执行windowCloseddispose();return;}FileDialog fileDialog = new FileDialog(this, "打开媒体文件", FileDialog.LOAD); fileDialog.setDirectory(currentDirectory);fileDialog.setVisible(true);// 如果用户放弃选择文件,则返回if (fileDialog.getFile() == null){return;}currentDirectory = fileDialog.getDirectory();if (player != null){// 关闭已经存在JMF播放器对象player.close();}try {// 创建一个打开选择文件的播放器player = Manager.createPlayer(new MediaLocator("file:" + fileDialog.getDirectory() + fileDialog.getFile()));} 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;this.setTitle(fileDialog.getFile());// 播放器的控制事件处理player.addControllerListener(this);// 预读文件内容player.prefetch();}/*** 实现ControllerListener接口的方法,处理播放器的控制事件*/ public void controllerUpdate(ControllerEvent e) {// 调用player.close()时ControllerClosedEvent事件出现。
网页视频播放器代码大全,格式包括rm,rmvb,wmv等道
收集最常用的网页中嵌入视频代码大全各种各样的网页视频播放器代码.网页中嵌入视频代码综合完全版1.avi 格式代码片断如下:程序代码:ltobjectidquotvideoquotwidthquot400quotheightquot200quotborderquot0quotclassidq uotclsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFAquotgt ltparamnamequotShowDisplayquotvaluequot0quotgt ltparamnamequotShowControlsquotvaluequot1quotgt ltparamnamequotAutoStartquotvaluequot1quotgt ltparamnamequotAutoRewindquotvaluequot0quotgt ltparamnamequotPlayCountquotvaluequot0quotgt ltparamnamequotAppearancevaluequot0valuequotquotquotgt ltparamnamequotBorderStylevaluequot0valuequotquotquotgt ltparamnamequotMovieWindowHeightquotvaluequot240quotgt ltparamnamequotMovieWindowWidthquotvaluequot320quotgt ltparamnamequotFileNamequotvaluequot/Mbar.aviquotgtltembedwidthquot400quotheigh tquot200quotborderquot0quotshowdisplayquot0quotshowcontrolsquot1quotautostartquot 1quotautorewindquot0quotplaycountquot0quotmoviewindowheightquot240quotmoviewi ndowwidthquot320quotfilenamequot/Mbar.aviquotsrcquotMbar.aviquotgt lt/embedgtlt/objectgt2.mpg 格式代码片断如下:程序代码:ltobjectclassidquotclsid:05589FA1-C356-11CE-BF01-00AA0055595AquotidquotActi veMovie1quotwidthquot239quotheightquot250quotgt ltparamnamequotAppearancequotvaluequot0quotgt ltparamnamequotAutoStartquotvaluequot-1quotgt ltparamnamequotAllowChangeDisplayModequotvaluequot-1quotgt ltparamnamequotAllowHideDisplayquotvaluequot0quotgt ltparamnamequotAllowHideControlsquotvaluequot-1quotgt ltparamnamequotAutoRewindquotvaluequot-1quotgt ltparamnamequotBalancequotvaluequot0quotgt ltparamnamequotCurrentPositionquotvaluequot0quotgt ltparamnamequotDisplayBackColorquotvaluequot0quotgt ltparamnamequotDisplayForeColorquotvaluequot16777215quotgt ltparamnamequotDisplayModequotvaluequot0quotgt ltparamnamequotEnabledquotvaluequot-1quotgt ltparamnamequotEnableContextMenuquotvaluequot-1quotgt ltparamnamequotEnablePositionControlsquotvaluequot-1quotgt ltparamnamequotEnableSelectionControlsquotvaluequot0quotgt ltparamnamequotEnableTrackerquotvaluequot-1quotgt ltparamnamequotFilenamequotvaluequot/mpeg/halali.mpgquotvaluetypequotrefquotgt ltparamnamequotFullScreenModequotvaluequot0quotgt ltparamnamequotMovieWindowSizequotvaluequot0quotgt ltparamnamequotPlayCountquotvaluequot1quotgt ltparamnamequotRatequotvaluequot1quotgt ltparamnamequotSelectionStartquotvaluequot-1quotgt ltparamnamequotSelectionEndquotvaluequot-1quotgt ltparamnamequotShowControlsquotvaluequot-1quotgt ltparamnamequotShowDisplayquotvaluequot-1quotgt ltparamnamequotShowPositionControlsquotvaluequot0quotgtltparamnamequotShowTrackerquotvaluequot-1quotgt ltparamnamequotVolumequotvaluequot-480quotgt lt/objectgt3.smi 格式代码片断如下:程序代码:ltOBJECTidRVOCXclassidclsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFAwi dth240height180gt ltparamnamequot_ExtentXquotvaluequot6350quotgt ltparamnamequot_ExtentYquotvaluequot4763quotgt ltparamnamequotAUTOSTARTquotvaluequot-1quotgt ltparamnamequotSHUFFLEquotvaluequot0quotgt ltparamnamequotPREFETCHquotvaluequot0quotgt ltparamnamequotNOLABELSquotvaluequot-1quotgt ltparamnamequotSRCquotvaluequotrm.rmquotgt ltparamnamequotCONTROLSquotva ltparamnamequotCONSOLEquotvaluequotconsole1quotgt ltparamnamequotLOOPquotvaluequot0quotgt ltparamnamequotNUMLOOPquotvaluequot0quotgt ltparamnamequotCENTERquotvaluequot0quotgt ltparamnamequotMAINTAINASPECTquotvaluequot0quotgtltparamnamequotBACKGR OUNDCOLORquotvaluequot000000quotgtltembedsrcquotreal.smiquottypequotaudio/x-pn-realaudio-pluginquotconsolequotConsole1quotcontrolsquotImageWindowquotheightq uot180quotwidthquot240quotautostartquottquot您好,欢迎访问阿里西西!注册或登陆建站素材加入收藏设为首页阿里论坛网页特效电子书籍源码下载网站首页文章下载酷站论坛书籍网页书籍编程书籍数据库服务器设计运营素材模板图标图片动画字体库源码企业商城行业门户办公建站特效广告代码菜单时间文字窗口图像教程前端技术编程开发数据库服务器脚本动画下载软件工具编程图像服务器站长优化盈利经验推广新闻域名酷站韩国酷站欧美中国收录查询旧版阿里西西FTP 贵宾资源史上最全SEO 资料韩国网页设计大师商业网站源码FLASH 整站源码全年网站源码打包合辑5 元一张DVD 网页模板前端首页HTML 基础XHTML 标准XML 教程CSS 教程脚本技术动画媒体界面设计开发文档AJAX 教程您的位置:阿里西西gt 前端技术gt 动画媒体gt 正文分类条件HTML 基础XHTML 标准XML 教程CSS 教程脚本技术动画媒体界面设计相关文档AJAX 教程8 顶网页视频播放器代码大全互联网Alixixi 2009-08-07 点击:13620 字体:大中小我要评论收集最常用的网页中嵌入视频代码大全各种各样的网页视频播放器代码.-网页中嵌入视频代码综合完全版1.avi 格式代码片断如下:程序代码ltobjectidquotvideoquotwidthquot400quotheightquot200quotborderquot0quotclassidquot clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFAquotgt ltparamnamequotShowDisplayquotvaluequot0quotgt ltparamnamequotShowControlsquotvaluequot1quotgt ltparamnamequotAutoStartquotvaluequot1quotgt ltparamnamequotAutoRewindquotvaluequot0quotgt ltparamnamequotPlayCountquotvaluequot0quotgt ltparamnamequotAppearancevaluequot0valuequotquotquotgt ltparamnamequotBorderStylevaluequot0valuequotquotquotgt ltparamnamequotMovieWindowHeightquotvaluequot240quotgt ltparamnamequotMovieWindowWidthquotvaluequot320quotgtltparamnamequotFileNamequotvaluequot/Mbar.aviquotgtltembedwidthquot400quotheigh tquot200quotborderquot0quotshowdisplayquot0quotshowcontrolsquot1quotautostartquot 1quotautorewindquot0quotplaycountquot0quotmoviewindowheightquot240quotmoviewi ndowwidthquot320quotfilenamequot/Mbar.aviquotsrcquotMbar.aviquotgt lt/embedgtlt/objectgt 2.mpg 格式代码片断如下:程序代码ltobjectclassidquotclsid:05589FA1-C356-11CE-BF01-00AA0055595AquotidquotActive Movie1quotwidthquot239quotheightquot250quotgt ltparamnamequotAppearancequotvaluequot0quotgt ltparamnamequotAutoStartquotvaluequot-1quotgt lt ltparamnamequotAllowHideDisplayquotvaluequot0quotgt ltparamnamequotAllowHideControlsquotvaluequot-1quotgtltparamnamequotAutoRewin dquotvaluequot-1quotgtltparamnamequotBalancequotvaluequot0quotgtltparamnamequot CurrentPositionquotvaluequot0quotgtltparamnamequotDisplayBackColorquotvaluequot0 quotgtltparamnamequotDisplayForeColorquotvaluequot16777215quotgtltparamnamequo tDisplayModequotvaluequot0quotgtltparamnamequotEnabledquotvaluequot-1quotgtltpar amnamequotEnableContextMenuquotvaluequot-1quotgtltparamnamequotEnablePosition Controlsquotvaluequot-1quotgtltparamnamequotEnableSelectionControlsquotvaluequot0 quotgtltparamnamequotEnableTrackerquotvaluequot-1quotgtltparamnamequotFilenameq uotvaluequot/mpeg/halali.mpgquotvaluetypequotrefquotgtltparamnamequotFullScreenM odequotvaluequot0quotgtltparamnamequotMovieWindowSizequotvaluequot0quotgtltpar amnamequotPlayCountquotvaluequot1quotgtltparamnamequotRatequotvaluequot1quotgt ltparamnamequotSelectionStartquotvaluequot-1quotgtltparamnamequotSelectionEndquot valuequot-1quotgtltparamnamequotShowControlsquotvaluequot-1quotgtltparamnamequo tShowDisplayquotvaluequot-1quotgtltparamnamequotShowPositionControlsquotvaluequ ot0quotgtltparamnamequotShowTrackerquotvaluequot-1quotgt ltparamnamequotVolumequotvaluequot-480quotgt lt/objectgt 3.smi 格式代码片断如下:程序代码ltOBJECTidRVOCXclassidclsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFAwidth 240height180gt ltparamnamequot_ExtentXquotvaluequot6350quotgt ltparamnamequot_ExtentYquotvaluequot4763quotgt ltparamnamequotAUTOSTARTquotvaluequot-1quotgt ltparamnamequotSHUFFLEquotvaluequot0quotgt ltparamnamequotPREFETCHquotvaluequot0quotgt ltparamnamequotNOLABELSquotvaluequot-1quotgt ltparamnamequotSRCquotvaluequotrm.rmquotgt ltparamnamequotCONTROLSquotvaluequotImageWindowquotgt ltparamnamequotCONSOLEquotvaluequotconsole1quotgt ltparamnamequotLOOPquotvaluequot0quotgt ltparamnamequotNUMLOOPquotvaluequot0quotgt ltparamnamequotCENTERquotvaluequot0quotgt ltparamnamequotMAINTAINASPECTquotvaluequot0quotgtltparamnamequotBACKGR OUNDCOLORquotvaluequot000000quotgtltembedsrcquotreal.smiquottypequotaudio/x-pn-realaudio-pluginquotconsolequotConsole1quotcontrolsquotImageWindowquotheightq uot180quotwidthquot240quotautostartquottruequotgtlt/OBJECTgt 4.rm 格式代码片断如下:程序代码ltOBJECTIDvideo1CLASSIDquotclsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFAquotHEIGHT288WIDTH352gt ltparamnamequot_ExtentXquotvaluequot9313quotgt ltparamnamequot_ExtentYquotvaluequot7620quotgt ltparamnamequotAUTOSTARTquotvaluequot0quotgt ltparamnamequotSHUFFLEquotvaluequot0quotgt ltparamnamequotPREFETCHquotvaluequot0quotgt ltparamnamequotNOLABELSquotvaluequot0quotgt ltparamnamequotSRCquotvaluequotrtsp://203...35/vod/dawan-a.rmquotgt ltparamnamequotCONTROLSquotvaluequotImageWindowquotgt ltparamnamequotCONSOLEquotvaluequotClip1quotgt ltparamnamequotLOOPquotvaluequot0quotgt ltparamnamequotNUMLOOPquotvaluequot0quotgt ltparamnamequotCENTERquotvaluequot0quotgt ltparamnamequotMAINTAINASPECTquotvaluequot0quotgt ltparamnamequotBACKGROUNDCOLORquotvaluequot000000quotgtltembedSRCtylt/OBJECTgt 5.wmv 格式代码片断如下:程序代码ltobjectidquotNSPlayquotwidth200height180classidquotCLSID:22d6f312-b0f6-11d0-94a b-0080c74c7e95quotcodebasequot/activex/controls/mplayer/ en/nsmp2inf.cabVersion645715quotstandbyquotLoadingMicrosoftWindowsMediaPlayer components...quottypequotapplication/x-oleobjectquotalignquotrightquothspacequot5quo tgt ltparamnamequotAutoRewindquotvalue1gt ltparamnamequotFileNamequotvaluequot/blog/.wmvquotgt ltparamnamequotShowControlsquotvaluequot1quotgt ltparamnamequotShowPositionControlsquotvaluequot0quotgt ltparamnamequotShowAudioControlsquotvaluequot1quotgt ltparamnamequotShowTrackerquotvaluequot0quotgt ltparamnamequotShowDisplayquotvaluequot0quotgt ltparamnamequotShowStatusBarquotvaluequot0quotgt ltparamnamequotShowGotoBarquotvaluequot0quotgt ltparamnamequotShowCaptioningquotvaluequot0quotgt ltparamnamequotAutoStartquotvalue1gt ltparamnamequotVolumequotvaluequot-2500quotgt ltparamnamequotAnimationAtStartquotvaluequot0quotgt ltparamnamequotTransparentAtStartquotvaluequot0quotgt ltparamnamequotAllowChangeDisplaySizequotvaluequot0quotgt ltparamnamequotAllowScanquotvaluequot0quotgt ltparamnamequotEnableContextMenuquotvaluequot0quotgt ltparamnamequotClickToPlayquotvaluequot0quotgt lt/objectgt 6.wma 格式放在ltbodygt里面。
用jfm视频播放的源文件
第一步:我用的是MyEclipse 5.5。
所以,先建立一个class文件,名字:MediaPlayer.java 完整代码如下:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.media.*;import java.io.*;import java.util.*;//为了导入Vectorpublic class MediaPlayer extends JFrame implements ActionListener,Runnable{private JMenuBar bar;//菜单条private JMenu fileMenu,choiceMenu,aboutMenu;private JMenuItem openItem,openDirItem,closeItem,about,infor;private JCheckBoxMenuItem onTop;private boolean top=false,loop;//设定窗口是否在最前面private Player player;//Play是个实现Controller的接口private File file,listFile;//利用File类结合JFileChooser进行文件打开操作,后则与list.ini有关private Container c;//private UIManager.LookAndFeelInfo[] look;private String title,listIniAddress;//标题private FileDialog fd;private JPanel panel,panelSouth;private Icon icon; //开始进入的时候要显示的图标,它为抽象类,不能自己创建private JLabel//listB=new JLabel(new ImageIcon("qingdan.gif"),SwingConstants.CENTER);scroll=new JScrollPane(list);//用于存放播放列表//dialog2=new JDialogTest(MediaPlayer.this,"播放清单",scroll);//dialog2.setVisible(true);readToList.start();//启动先程,加载播放列表try{Thread.sleep(10);}catch(InterruptedException e){e.printStackTrace();}/*look=UIManager.getInstalledLookAndFeels();try{UIManager.setLookAndFeel(look[2].getClassName());SwingUtilities.updateComponentTreeUI(this);}catch(Exception e){e.printStackTrace();}*///与下面的代码实现相同的功能,但执行速度要慢,原因:明显转了个大弯/*try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}catch(Exception e){e.printStackTrace();} *///此段代码使执行速度大大降低bar=new JMenuBar();setJMenuBar(bar);//此两行创建菜单栏并放到此窗口程序//bar.setBackground(new Color(48,91,183));fileMenu=new JMenu("文件");bar.add(fileMenu);choiceMenu=new JMenu("控制");bar.add(choiceMenu);aboutMenu=new JMenu("帮助");bar.add(aboutMenu);openItem =new JMenuItem("打开文件");openDirItem =new JMenuItem("打开目录");closeItem =new JMenuItem("退出程序");openItem.addActionListener(this);openDirItem.addActionListener(this);closeItem.addActionListener(this);fileMenu.add(openItem);fileMenu.add(openDirItem);fileMenu.add(closeItem);onTop=new JCheckBoxMenuItem("播放时位于最前面",top); choiceMenu.add(onTop);onTop.addItemListener(new ItemListener(){public void itemStateChanged(ItemEvent e){if(onTop.isSelected())top=true;else top=false;setAlwaysOnTop(top);}});choiceMenu.addSeparator();//加分割符号buttonGroup=new ButtonGroup();buttonValues=new JRadioButtonMenuItem[3];for(int bt=0;bt<3;bt++){buttonValues[bt]=new JRadioButtonMenuItem(content[bt]); buttonGroup.add(buttonValues[bt]);choiceMenu.add(buttonValues[bt]);}buttonValues[0].setSelected(true);choiceMenu.addSeparator();/*loopItem=new JCheckBoxMenuItem("是否循环");choiceMenu.add(loopItem);loopItem.addItemListener(new ItemListener(){public void itemStateChanged(ItemEvent e){loop=!loop;}});*/infor=new JMenuItem("软件简介");aboutMenu.add(infor);infor.addActionListener(this);about=new JMenuItem("关于作者");about.addActionListener(this);aboutMenu.add(about);//菜单栏设置完毕panel=new JPanel();panel.setLayout(new BorderLayout());c.add(panel,BorderLayout.CENTER);panelSouth=new JPanel();panelSouth.setLayout(new BorderLayout());c.add(panelSouth,BorderLayout.SOUTH);icon=new ImageIcon("icon\\Player.jpg");label=new JLabel(icon);panel.add(label);popupMenu=new JPopupMenu();del =new JMenuItem("删除");//鼠标右键弹出菜单对象实例化popupMenu.add(del);del.addActionListener(this);delAll =new JMenuItem("全部删除");popupMenu.add(delAll);delAll.addActionListener(this);reName =new JMenuItem("重命名");popupMenu.add(reName);reName.addActionListener(this);scroll=new JScrollPane(list);//用于存放播放列表listB=new JLabel(new ImageIcon("icon\\qingdan.gif"),SwingConstants.CENTER);panelSouth.add(listB,BorderLayout.NORTH);panelSouth.add(scroll,BorderLayout.CENTER);dialog1=new DialogDemo(MediaPlayer.this,"软件说明");this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);//设定窗口关闭方式//this.setTitle("d");编译通过,说明可以再次设定标题this.setLocation(400,250);//设定窗口出现的位置//this.setSize(350,320);//窗口大小setSize(350,330);this.setResizable(false);//设置播放器不能随便调大小this.setVisible(true);//此句不可少,否则窗口会不显示}public void actionPerformed(ActionEvent e){if(e.getSource()==openItem)//getSource()判断发生时间的组键{//System.out.println("d");测试用openFile();//createPlayer();//setTitle(title);}if(e.getSource()==openDirItem)//打开目录{openDir();if(e.getSource()==closeItem)//推出播放器{exity_n();//System.exit(0);}if(e.getSource()==about){JOptionPane.showMessageDialog(this,"此简易播放器由计科0302\n"+"harly\n "+" 完成 ","参与者",RMATION_MESSAGE);}if(e.getSource()==del){//index//delPaintList(index);fileName.removeElementAt(indexForDel);dirName.removeElementAt(indexForDel);numList.removeAllElements();//从三个容器里面移除此项Enumeration enumFile=fileName.elements();while(enumFile.hasMoreElements()){numList.addElement((numList.size()+1)+"."+enumFile.nextElement()); //numList添加元素,显示播放里表中}//list.setListData(fileName);list.setListData(numList);if(index<indexForDel)list.setSelectedValue(numList.elementAt(index),true);else{if(index==indexForDel);elseif(index!=0)list.setSelectedValue(numList.elementAt(index-1),true);}//list.setSelectedIndex(index);}if(e.getSource()==delAll)//全部删除{fileName.removeAllElements();dirName.removeAllElements();numList.removeAllElements();list.setListData(numList);}if(e.getSource()==reName)//重命名{String name;//=JOptionPane.showInputDialog(this,"请输入新的名字");try{name=reNames();fileName.setElementAt(name,indexForDel);numList.setElementAt((indexForDel+1)+"."+name,indexForDel);}catch(ReName e2)//自定义的异常{}}if(e.getSource()==infor){dialog1.setVisible(true);}}public static void main(String[] args){final MediaPlayer mp=new MediaPlayer();mp.setIconImage(new ImageIcon("icon\\mPlayer.jpg").getImage());//改变默认图标mp.addWindowListener(new WindowAdapter()//注册窗口事件{public void windowClosing(WindowEvent e){//System.exit(0);mp.exity_n();}});System.out.println("注意:更新文件列表后,请先正常关闭播放器"+"\n然后再关闭此DOS窗口,否则导致播放列表不能保存!!");}private void openFile()//为了界面原因,此代码重写,估计兼容性不好了{/*JFileChooser fileChooser=new JFileChooser();//文件选择器fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);//可以选择文件不能目录int result=fileChooser.showOpenDialog(this);//创建文件打开对话框,并设定此程序为父窗口监控*//*通过result的值来判断文件是否打开成功*JFileChooser类有很多静态成员变量**//*if(result==JFileChooser.CANCEL_OPTION){file=null;//file已经在类中定义,如果选择取消,file指向为空}else{file=fileChooser.getSelectedFile();//获得文件对象title=file.getAbsolutePath();//取得文件的绝对路径并且赋给title设定标题}*///if(fd==null)//{//String filename="java音频播放器";fd = new FileDialog(MediaPlayer.this);//Filters fl=new Filters();//fd.setFilenameFilter(fl);fd.setVisible(true);if (fd.getFile() != null){title = fd.getDirectory() + fd.getFile();//原因请见同目录下的FileDialogDemo.java文件files=fd.getFile();//dir =fd.getDirectory();file=new File(title);createPlayer();}//title=filename;//fd=null;//缺少此句如果第一次打开文件的时候取消操作的时候第二次也不能打开文件了//}}private void openDir(){JFileChooser fileChooser=new JFileChooser();fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);int result=fileChooser.showOpenDialog(MediaPlayer.this);if(result==JFileChooser.CANCEL_OPTION)return;file=fileChooser.getSelectedFile();if(file==null||file.getName().equals(""))JOptionPane.showMessageDialog(this,"错误的路径","出错了",JOptionPane.ERROR_MESSAGE);String[] sFiles=file.list();for(int i=0;i<sFiles.length;i++){fileName.addElement(sFiles[i]);numList.addElement((numList.size()+1)+"."+sFiles[i]);dirName.addElement(file.getAbsolutePath()+"\\"+sFiles[i]);}list.setListData(numList);/*fd=new FileDialog(MediaPlayer.this);fd.setVisible(true);if(fd.getDirectory()!=null){File fileDir=new File(fd.getDirectory());String[] ss=fileDir.list();for(int i=0;i<ss.length;i++){System.out.println(ss[i]);}}*/}private void createPlayer(){closePreviosPlayer();//关闭先前的媒体播放器String extendName="此播放器好象不支持"+title.substring(stIndexOf(".")+1)+"格式";try{player=Manager.createPlayer(file.toURL());//javax.media.Manager直接继承于ng.object,且它为final,不能被继承player.addControllerListener(new ControllerHand());player.start();addList(files);index=fileName.size()-1;list.setSelectedValue(numList.elementAt(index),true);//list.setSelectedIndex(index);//list.setSelectionForeground(Color.blue);setTitle(title);//addList("files");//到播放清单//title="file.getAbsoluteFile()";}catch(Exception e){JOptionPane.showMessageDialog(this,extendName,"出错了!!",JOptionPane.ERROR_MESSAGE);setTitle(extendName);}}private void closePreviosPlayer(){if(player==null)return;//player.close();//首先停止播放/**不能用上面的代码停止,要用下面的两行取代,否则Component visual =player.getVisualComponent();发生异常**/player.stop();player.deallocate(); //停止播放并且重新装载DateSourceComponent visual =player.getVisualComponent();Component control=player.getControlPanelComponent();if(visual!=null){panel.remove(visual);}if(control!=null){panel.remove(control);}}private class ControllerHand implements ControllerListener {public void controllerUpdate(ControllerEvent e){if(e instanceof RealizeCompleteEvent){Component visual=player.getVisualComponent();if(visual!=null){//System.out.println("音频播放器不支持视频图象功能"); //setTitle("音频播放器不支持视频图象功能");panel.removeAll();panel.add(visual,BorderLayout.CENTER);}else{panel.add(label,BorderLayout.CENTER);}///此else语句可以防止因为原来播放视频图象后以后没有界面 Component control=player.getControlPanelComponent();if(control!=null){panel.add(control,BorderLayout.SOUTH);}//c.validate();panel.doLayout();return;}if (e instanceof EndOfMediaEvent){/*if (loop){player.setMediaTime (new Time (0));player.start ();}return;*/if(buttonValues[0].isSelected()){if(fileName.size()==0)return;index=(int)(Math.random()*fileName.size());}if(buttonValues[1].isSelected()){if(fileName.size()==0)return;//必须有此if语句,否则当用户把播放列表清空的时候发生异常,偶然的机会发现的//现在感觉测试软件真是太重要了,看来以后程序做好后要反复测试,考虑各种情况index=(index+1)%fileName.size();}if(buttonValues[2].isSelected()){player.setMediaTime (new Time (0));player.start();}createPlayer2();}}}private void exity_n(){/*int exi;exi=JOptionPane.showConfirmDialog(this,"真的要离开么?","退出程序",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);//if(exi==null)if(exi==JOptionPane.YES_OPTION){saveList();System.exit(0);}return;*/saveList();System.exit(0);}private void addList(String vf){//fileReadList=new fileReadList(fdd,)//try//{//int i=0;//fileName.addElement((fileName.size()+1)+"."+vf);fileName.addElement(vf);numList.addElement((numList.size()+1)+"."+vf);//fileName.addElement(++i+"."+vf);dirName.addElement(title);list.setListData(numList);//}/*catch(Exception e){e.printStackTrace();//System.out.println(e.getMessage());}*/}private void createPlayer2(){try{title=dirName.elementAt(index).toString();}//title=dirName.elementAt(index).toString();catch(ArrayIndexOutOfBoundsException e){return;}file=new File(title);closePreviosPlayer();//关闭先前的媒体播放器String extendName="此播放器好象不支持"+title.substring(stIndexOf(".")+1)+"格式";try{player=Manager.createPlayer(file.toURL());//javax.media.Manager直接继承于ng.object,且它为final,不能被继承player.addControllerListener(new ControllerHand());player.start();//list.setSelectedIndex(index);list.setSelectedValue(numList.elementAt(index),true);//list.setSelectionForeground(Color.blue);//list.setSelectedIndex(index);//addList(files);setTitle(title);//addList("files");//到播放清单}catch(Exception e){//JOptionPane.showMessageDialog(this,extendName,"出错了!!",JOptionPane.ERROR_MESSAGE);//setTitle(extendName);String ex=null;try{ex=fileName.elementAt(index).toString();}catch(Exception e1){return;}fileName.removeElementAt(index);numList.removeAllElements();Enumeration enumFile=fileName.elements();while(enumFile.hasMoreElements()){numList.addElement((numList.size()+1)+"."+enumFile.nextElement()); }dirName.removeElementAt(index);//list.setListData(fileName);list.setListData(numList);System.out.println("已经从播放列表中删除 "+"\""+ex+"\""+" 文件,"+"因为此播放器不支持"+ex.substring(stIndexOf(".")+1)+"格式," +"不过没有从硬盘真正删除");if(numList.size()!=0){index%=numList.size();createPlayer2();}}}private void saveList(){Enumeration enumFile=fileName.elements();Enumeration enumDir =dirName.elements();try{output=new ObjectOutputStream(new BufferedOutputStream(newFileOutputStream(listFile)));while(enumFile.hasMoreElements()){listWriteFile=newListValues(enumFile.nextElement().toString(),enumDir.nextElement().toString());output.writeObject(listWriteFile);}output.flush();output.close();}catch(Exception e){e.printStackTrace();}/*finally{output.flush();output.close();//郁闷,这两行不能写在这里,实在是一大遗憾啊,不知道有什么别的方法}*/}public void run(){try{Thread.sleep(1);}catch(InterruptedException e){}try{if(!listFile.exists()){listFile.createNewFile();//防止不存在此文件发生读取错误,这两行代码保证不存在的情况下自动建立return;}input=new ObjectInputStream(new BufferedInputStream(newFileInputStream(listFile)));while(true){listWriteFile=(ListValues)input.readObject();fileName.addElement(listWriteFile.getFileName());numList.addElement((numList.size()+1)+"."+listWriteFile.getFileName()); dirName.addElement(listWriteFile.getDirName());}}catch(EOFException e){try{//if(!fileName.isEmpty())input.close();//确认有元素存在并加载完毕后关闭输入流}catch(IOException e1){JOptionPane.showMessageDialog(MediaPlayer.this,"文件被非正常关闭","非法关闭",JOptionPane.ERROR_MESSAGE);}}catch(ClassNotFoundException e){JOptionPane.showMessageDialog(MediaPlayer.this,"不能创建对象","对象创建失败",JOptionPane.ERROR_MESSAGE);}catch(IOException e){JOptionPane.showMessageDialog(MediaPlayer.this,"不能读取文件","读取文件失败",JOptionPane.ERROR_MESSAGE);}finally{try{if(input!=null)input.close();}catch(IOException e){}if(dirName.isEmpty())//防止Vector越界{return;}index=(int)(Math.random()*(fileName.size()));//产生随即数,进行随即播放list.setListData(numList);//list.setListData(fileName);//list.setSelectedValue(fileName.elementAt(index),true);//list.ensureIndexIsVisible(index);//确保选择项可以看见//list.setSelectionForeground(Color.green);createPlayer2();}}private void checkMenu(MouseEvent e){if(e.isPopupTrigger()){indexForDel=list.locationToIndex(e.getPoint());int[] selected={index,indexForDel};//Point p=new Point(e.getX(),e.getY());list.setSelectedIndices(selected);popupMenu.show(list,e.getX(),e.getY());}//list.setSelectedIndex(index);}String reNames() throws ReName//文件该名函数{String name=JOptionPane.showInputDialog(this,"请输入新的名字",fileName.elementAt(indexForDel));if(name==null||name.equals("")) throw new ReName();//必须把name==null放在前面,否则会发生NullPointerExceptin,这个很好理解,//当我们按了取消后,name会成为空,那么name.equals("")就会发生异常return name;}class ReName extends Exception//自定义异常来处理文件该名的时候发生输入为空的情形{}/*class Filters implements FilenameFilter{public boolean accept(File dir,String name) {return (name.endsWith(".exe"));}}*/}。
常见的网页播放器代码
常见的⽹页播放器代码 我们在⽹页上看到的播放器⽆外乎WMP/RealPlayer/Flash Player,其他的⽆⾮是⾯板不同,或者添加了其他控件,对于计算机上安装的⼀些播放器也都是编码和解码器的整合,其最核⼼的编码和解码技术是相同的。
例如:⽹络上最流⾏的windows media流(asf,wma,wmv 格式),Real流(rm,rmvb格式),还有MPEG系列编码格式(MP4,MP3格式)。
下⾯是整理的常见⽹页播放器代码1、使⽤Embed 标签播放多媒体⽂件 格式<embed src="⽂件名"/>。
其中⽂件名可以取任何⼀种多媒体⽂件格式,例如 "test.wma",就会在⽹页上显⽰⼀个 Windows Media Player 播放器(因为 wma 是 WMP 专⽤的),另如 "test.rm",就会在⽹页上显⽰⼀个 Real Player 播放器。
当然,你的计算机上必须安装了 RealPlayer 才可以显⽰。
其实 embed 标签还可以显⽰ Flash 动画(这时embed 标签的作⽤跟⽤ object 标签显⽰ Flash 动画的差不多),例⼦: <embed src="a.swf">总之,归纳 embed 标签的作⽤: 在⽹页上播放指定的多媒体⽂件。
2、调⽤Windows Media Player 进⾏播放 可⽤来来播放 wmv,asf 等格式⽂件<object classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"codebase="/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" type="application/x-oleobject" height="200" width="300"><param name="filename" value="test.wmv" /><param name="autostart" value="false" /><param name="showstatusbar" value="true" /><param name="showtracker" value="true" /><param name="showcontrols" value="true" /><embed filename="test.wmv" autostart="false"pluginspage="/windows/windowsmedia/" showcontrols="true"showstatusbar="true" showtracker="true" src="test.wmv" type="appl mplayer2"height="200" width="300"></embed></object>Windows Media Player 7 及更⾼版本的 class ID 是:clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6上⾯例⼦中的 class ID 是⼀个⽼的版本,但是依然可以⼯作,这是因为其向后兼容性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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的状态变为Realized
if (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();
}
}。