import java.awt.BorderLayout;
創(chuàng)新互聯(lián)自2013年創(chuàng)立以來,公司以網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計、系統(tǒng)開發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶數(shù)千家,涉及國內(nèi)多個省份客戶。擁有多年網(wǎng)站建設(shè)開發(fā)經(jīng)驗。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計、宣傳推廣等服務(wù)。 通過專業(yè)的設(shè)計、獨特的風格,為不同客戶提供各種風格的特色服務(wù)。
import java.awt.Component;
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;
// 標示是否需要循環(huán)
boolean loop = false;
// 文件當前目錄
String currentDirectory;
// 構(gòu)造方法
public JMFMediaPlayer(String title) {
super(title);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
// 用戶點擊窗口系統(tǒng)菜單的關(guān)閉按鈕
// 調(diào)用dispose以執(zhí)行windowClosed
dispose();
}
public void windowClosed(WindowEvent e){
if (player != null){
// 關(guān)閉JMF播放器對象
player.close();
}
System.exit(0);
}
});
// 創(chuàng)建播放器的菜單
JMenu fileMenu = new JMenu("文件");
JMenuItem openMemuItem = new JMenuItem("打開");
openMemuItem.addActionListener(this);
fileMenu.add(openMemuItem);
// 添加一個分割條
fileMenu.addSeparator();
// 創(chuàng)建一個復(fù)選框菜單項
JCheckBoxMenuItem loopMenuItem = new JCheckBoxMenuItem("循環(huán)", 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 {
// 設(shè)置界面的外觀,為系統(tǒng)外觀
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
SwingUtilities.updateComponentTreeUI(this);
} catch (Exception e) {
e.printStackTrace();
}
this.setVisible(true);
}
/**
* 實現(xiàn)了ActionListener接口,處理組件的活動事件
*/
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("退出")) {
// 調(diào)用dispose以便執(zhí)行windowClosed
dispose();
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){
// 關(guān)閉已經(jīng)存在JMF播放器對象
player.close();
}
try {
// 創(chuàng)建一個打開選擇文件的播放器
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("無法創(chuàng)建播放器.");
return;
}
first = false;
this.setTitle(fileDialog.getFile());
// 播放器的控制事件處理
player.addControllerListener(this);
// 預(yù)讀文件內(nèi)容
player.prefetch();
}
/**
* 實現(xiàn)ControllerListener接口的方法,處理播放器的控制事件
*/
public void controllerUpdate(ControllerEvent e) {
// 調(diào)用player.close()時ControllerClosedEvent事件出現(xiàn)。
// 如果存在視覺部件,則該部件應(yīng)該拆除(為一致起見,
// 我們對控制面板部件也執(zhí)行同樣的操作)
if (e instanceof ControllerClosedEvent) {
if (vedioComponent != null) {
this.getContentPane().remove(vedioComponent);
this.vedioComponent = null;
}
if (controlComponent != null) {
this.getContentPane().remove(controlComponent);
this.controlComponent = null;
}
return;
}
// 如果是媒體文件到達尾部事件
if (e instanceof EndOfMediaEvent) {
if (loop) {
// 如果允許循環(huán),則重新開始播放
player.setMediaTime(new Time(0));
player.start();
}
return;
}
// 如果是播放器預(yù)讀事件
if (e instanceof PrefetchCompleteEvent) {
// 啟動播放器
player.start();
return;
}
// 如果是文件打開完全事件,則顯示視頻組件和控制器組件
if (e instanceof RealizeCompleteEvent) {
vedioComponent = player.getVisualComponent();
if (vedioComponent != null){
this.getContentPane().add(vedioComponent);
}
controlComponent = player.getControlPanelComponent();
if (controlComponent != null){
this.getContentPane().add(controlComponent, BorderLayout.SOUTH);
}
this.pack();
}
}
// 處理“循環(huán)”復(fù)選框菜單項的點擊事件
public void itemStateChanged(ItemEvent e) {
loop = !loop;
}
public static void main(String[] args){
new JMFMediaPlayer("JMF媒體播放器");
}
}
試試吧,我這里運行正常
這個只要你引用自己背地的MediaPlayer就可以了;代碼:
div id="FlashFile"
object id="player" height="170" width="220"
classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"
param NAME="AutoStart" VALUE="1"
!--是否自動播放--
param NAME="Balance" VALUE="0"
!--調(diào)整左右聲道平衡,同上面舊播放器代碼--
param name="enabled" value="-1"
!--播放器是否可人為控制--
param NAME="EnableContextMenu" VALUE="-1"
!--是否啟用上下文菜單--
param NAME="url" value="soft/%=file%"http://源文件路徑
!--播放的文件地址--
param NAME="PlayCount" VALUE="1"
!--播放次數(shù)控制,為整數(shù)--
param name="rate" value="1"
!--播放速率控制,1為正常,允許小數(shù),1.0-2.0--
param name="currentPosition" value="0"
!--控件設(shè)置:當前位置--
param name="currentMarker" value="0"
!--控件設(shè)置:當前標記--
param name="defaultFrame" value=""
!--顯示默認框架--
param name="invokeURLs" value="0"
!--腳本命令設(shè)置:是否調(diào)用URL--
param name="baseURL" value=""
!--腳本命令設(shè)置:被調(diào)用的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="1"
!--開始播放是否自動全屏--
param name="enableErrorDialogs" value="-1"
!--是否啟用錯誤提示報告--
param name="SAMIStyle" value
!--SAMI樣式--
param name="SAMILang" value
!--SAMI語言--
param name="SAMIFilename" value
!--字幕ID--
/object
/div
java開發(fā)PC端直播平臺網(wǎng)站的源碼涉及比較專業(yè)的領(lǐng)域,建議通過自己學(xué)習進行創(chuàng)建。學(xué)習java開發(fā)推薦千鋒教育,該教育機構(gòu)采用全程面授高品質(zhì)、高體驗培養(yǎng)模式,擁有國內(nèi)一體化教學(xué)管理及學(xué)員服務(wù),助力更多學(xué)員實現(xiàn)高薪夢想。
學(xué)習java開發(fā)有一個長遠的職業(yè)規(guī)劃,未來潛力無限。Java崗位需求量每年以22%左右的速度增長著,其中尤以Java程序員、Java工程師、Java架構(gòu)師、技術(shù)總監(jiān)最為缺乏。全國每年Java工程師的缺口高達50萬+。掌握一門高含金量的技能,擁有一份不菲的高薪職業(yè),是大多IT職場人士的正確打開方式。中級工程師月入高達12-18K,高級工程師則有機會突破30K;成為架構(gòu)師和CTO更是年薪百萬。
想要了解更多有關(guān)java的相關(guān)信息,推薦咨詢千鋒教育。千鋒企合作部整合大量企業(yè)客戶資源,緊抓當下企業(yè)需求,將技術(shù)和項目完美結(jié)合千鋒課程體系,力求培養(yǎng)更多優(yōu)質(zhì)人才服務(wù)企業(yè),不斷提升學(xué)員競爭力,鏈接企業(yè)用人標準的培訓(xùn)課程及實戰(zhàn)項目,讓企業(yè)招聘用人的技術(shù)要求與千鋒學(xué)員的技術(shù)充分對接。近年來不斷引進阿里釘釘小程序技術(shù)、紅帽認證、騰訊云、亞馬遜等,通過與企業(yè)的深度融合實現(xiàn)千鋒教研和就業(yè)服務(wù)的迭代升級,專業(yè)性值得信賴。
直播源碼平臺搭建步驟:
1、app框架搭建:在APICloud Studio中直接創(chuàng)建應(yīng)用上架,有三個常用頁面框架備選。
2、APP模塊設(shè)置:將所有挑選好的模塊,用JavaScript編寫頁面及模塊調(diào)用,運用HTML5+CSS3搭建應(yīng)用的界面UI,完成app編碼全過程。
3、APP調(diào)試:通過模擬器和真機調(diào)試功能進行app優(yōu)化。
4、交付上線:上傳app的icon、啟動頁和證書,可生成iOS和Android 的原生安裝包。