java視頻程序
1. 如何播放視頻文件 java
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
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.addControlle
2. 怎麼用java程序調出計算機的視頻啊
那個和你運行JAVA程序是一樣的,當你進入某個文件夾時,先運行視頻播放器的。exe文件,然後輸入視頻文件路徑
3. 怎樣讓Java編寫的播放視頻程序運行
安裝JMF插件,再配置下就可以,配置方法網上有很多,快試下吧,可以的!
4. 如何編寫切割視頻的java程序哪位有思路指點下
首先大部分視頻是壓縮流媒體,你得有相應的解碼器。也就是解壓視頻數據的演算法,上網搜搜也許能搜索到相關的java類庫。
然後你得建立自己一個「視頻流」,原理類似於位元組流,字元流等java標准類庫里有的流。並編寫相應演算法,形成流位置與視頻時間的映射,這樣通過時間段的截取就可以得到相應的視頻片段。最後是對所截取的流進行包裝,寫入文件信息,並最終寫入硬碟形成新的完整的視頻文件。
但要注意的是,因為視頻文件較大,一次性全部讀入內存對性能影響較大。對流的讀取最好只取小片段,一點一點的處理。
這就是大概的原理,實現起來還是很有難度的,加油吧,網上資料很多,網路一下,找到它們
5. java怎樣實現打開視頻文件
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
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("打開錯誤"); //顯示錯誤信息
6. 求一個java平台上可以播放mp4格式視頻的程序
胡椒粉他已經很久看好了好看了就開口I
7. 誰有整套的java視頻和項目視頻
程序學習建議從看別人的源代碼開始,看java游戲開發之類的書,從簡單的小程序到大型程序,會很有收獲
你要的東西已經發出,請查收郵件,有可能在垃圾箱里,如果10分鍾後沒收到,請在本問題里追問,我會再次發送!
8. 求Java編寫的視頻播放器程序
不全~代碼發不了了~,剩下的是播放器的關閉以及播放格式的支持與否,不麻煩的自己寫吧
MediaPlayer.java
----------------------------------------------------------------------------
//程序主文件
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.media.*;
import java.io.*;
import java.util.*;//為了導入Vector
//import com.sun.java.swing.plaf.windows.*;
public 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 label,listB;//用來顯示圖標
private JList list;//播放清單
private JScrollPane scroll;//使播放清單具有滾動功能
private ListValues listWriteFile;//用於向文件中讀取對象
private ObjectInputStream input;//對象輸入流
private ObjectOutputStream output;//對象輸出流
private JPopupMenu popupMenu;//滑鼠右鍵彈出菜單
private JMenuItem del,delAll,reName; //彈出菜單顯示的菜單項,包括刪除,全部刪除和重命名
private Vector fileName,dirName,numList;
private String files,dir;
private int index;//曲目指針
private Properties prop;//獲得系統屬性
private int indexForDel;//標志要刪除的列表項目的索引
private ButtonGroup buttonGroup;//控制按鈕組
private JRadioButtonMenuItem[] buttonValues;
private String[] content={"隨機播放","順序播放","單曲循環"};
private DialogDemo dialog1;
//private JDialogTest dialog2;//用於顯示播放清單
MediaPlayer()//構造函數
{
super("java音頻播放器1.1版");//窗口標題
c=getContentPane();
c.setLayout(new BorderLayout());
//c.setBackground(new Color(40,40,95));
fileName=new Vector(1);
dirName=new Vector(1);
numList=new Vector(1);//構造三個容器用於支持播放清單
//vectorToString=new String[];
//prop=new Properties(System.getProperties());
//listIniAddress=prop.getProperty("user.dir")+"\\list.ini";
//listFile=new File(listIniAddress);//本來這些代碼用來取的系統屬性,後來
//發現根本就不用這么麻煩
listFile=new File("list.ini");//直接存於此目錄
Thread readToList=new Thread(this);//注意編線程程序的時候要注意運行的時候含有的變數億定義或者初始化,
//這就要求線程要等上述所說的情況下再運行,否則很容易發生錯誤或則異常
list=new JList();
list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
list.setSelectionForeground(new Color(0,150,150));
list.setVisibleRowCount(10);
list.setFixedCellHeight(12);
list.setFixedCellWidth(250);
list.setFont(new Font("Serif",Font.PLAIN,12));
list.setBackground(new Color(40,40,95));
list.setForeground(new Color(0,128,255));
//list.setOpaque(false);
list.setToolTipText("點右鍵顯示更多功能");//創建播放清單並設置各個屬性
list.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
if (e.getClickCount() == 2) //判斷是否雙擊
{
index = list.locationToIndex(e.getPoint());//將滑鼠坐標轉化成list中的選項指針
createPlayer2();
//System.out.println("Double clicked on Item " + index);,此是測試的時候加的
}
}
/* public void mousePressed(MouseEvent e)
{
checkMenu(e);//自定義函數,判斷是否是右鍵,來決定是否顯示菜單
}*/
public void mouseReleased(MouseEvent e)
{
checkMenu(e);//與上面的一樣,判斷是否滑鼠右鍵
}
}
);
//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 "+" 完成 ",
"參與者",
JOptionPane.INFORMATION_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);
else
if(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]);
}
}*/
}
請點贊答案,支持我一下。
9. java能開發視頻聊天嗎
肯定的說:能!
大致的說一下原理:
首先你要學習一下java的網路編程方面的內東西,像TCP/IP UDP協議等容等的東西,因為要編寫視頻聊天程序,這些理論性的東西是必須的。
現在假設你已經可以編寫出簡單功能的網路聊天功能的軟體了,想在就是要用你編寫軟體驅動起你的攝像頭了。首先你要確保你的攝像頭的開發商已經給了你該攝像頭的驅動介面,有了這個介面你就可以編寫出可以驅動起該攝像頭的java程序了。
之後你要學習一下JNI,也就是Java Native Interface,學會這個,你就可以用你編寫的java程序來調用攝像頭驅動程序(驅動一般都是用C或C++)編寫,有了JNI,你就可以讓你的java程序和驅動的C或C++程序來進行通訊了。
之後把攝像頭的實時攝像信息傳到網路的另一邊(用到網路編程),就可以讓對方看到你了(前提是對方也安裝了你編寫的軟體,否則你們之間的通訊可能沒人能看懂)。
這是個大致的過程,實現的過程肯定會暈倒這樣那樣的問題,不過不要擔心,學習的過程就是遇到問題,思考問題,解決問題的過程。這樣慢慢的你就發現你已經很牛了!
10. java可以做一個編輯視頻的程序嗎
找個截屏工具,截屏頻率2-3張/秒(也可以更快些,但是太耗資源) 圖片,然後用Java以一定順序(這個文件也得有個結構)寫到文件里,插放的時候 用Java讀取文件內容,同樣以2-3張/秒 顯示成圖片。