日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JMF入门(Java Media Framework)

發布時間:2023/12/20 java 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JMF入门(Java Media Framework) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  JMF是SUN推出的用來提供給Java開發者使用Java開發視頻與音頻播放程序的開發庫,JMF的推出已經有幾年的歷史了,目前最新的版本為 2.1.1e,這里我們來講述使用Java的AWT組件來開發一個視頻播放器,采用JMF作為視頻的播放庫,希望能夠拋磚引玉,使得更多的人能夠對JMF 進行更加深入的研究,并貢獻出自己的研究所得。?
  首先,您需要下載用于自身操作系統的JMF安裝包,下載地址:http://java.sun.com/products/java-media/jmf /2.1.1/download.html,我們這里針對Windows操作系統進行JMF的開發。要注意的是,JMF針對不同平臺的實現是有少許差別的,不同的平臺對媒體文件格式的支持可能存在差異,具體的平臺對媒體文件格式的支持細節,您可以直接查看:http://java.sun.com /products/java-media/jmf/2.1.1/formats.html。安裝過程就不用多解釋了,您可以直接運行安裝文件,選擇自己所希望的目錄完成安裝,我們這里不多做說明。?
  接下來,我們可以使用Eclipse新建一個普通的java應用程序,把JMF安裝目錄下的lib中的jmf.jar、mediaplayer.jar、 sound.jar三個jar文件加入到項目的classpath(如果您對classpath不了解,可以在我的博客中找到關于classpath的詳細解釋的文章)中,到這里,編譯和運行項目的基本配置都準備好了,下面可以編寫代碼了。?
  在項目中添加一個類JMFSample,代碼和具體的解釋如下:?

?

package com.jmfsample2;

import java.awt.BorderLayout;
import java.awt.Component;
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 java.net.MalformedURLException;
import java.net.URL;

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;

public class JMFSample implements ControllerListener {
public static void main(String[] args) {
JMFSample sp
= new JMFSample();
sp.play();
}

private Frame f;
private Player player;
private Panel panel;
private Component visual;
private Component control = null;

public void play(){
f
= new Frame("JMF Sample1");
f.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent we) {
if(player != null) {
player.close();
}
System.exit(
0);
}
});
f.setSize(
500,400);

f.setVisible(
true);
URL url
= null;
try {
//準備一個要播放的視頻文件的URL
url = new URL("file:/E:/c-d.avi");
}
catch (MalformedURLException e) {
e.printStackTrace();
}
try {
//通過調用Manager的createPlayer方法來創建一個Player的對象
//這個對象是媒體播放的核心控制對象
player = Manager.createPlayer(url);
}
catch (NoPlayerException e1) {
e1.printStackTrace();
}
catch (IOException e1) {
e1.printStackTrace();
}

//對player對象注冊監聽器,能噶偶在相關事件發生的時候執行相關的動作
player.addControllerListener(this);

//讓player對象進行相關的資源分配
player.realize();
}

private int videoWidth = 0;
private int videoHeight = 0;
private int controlHeight = 30;
private int insetWidth = 10;
private int insetHeight = 30;

//監聽player的相關事件
public void controllerUpdate(ControllerEvent ce) {
if (ce instanceof RealizeCompleteEvent) {
//player實例化完成后進行player播放前預處理
player.prefetch();
}
else if (ce instanceof PrefetchCompleteEvent) {
if (visual != null)
return;

//取得player中的播放視頻的組件,并得到視頻窗口的大小
//然后把視頻窗口的組件添加到Frame窗口中,
if ((visual = player.getVisualComponent()) != null) {
Dimension size
= visual.getPreferredSize();
videoWidth
= size.width;
videoHeight
= size.height;
f.add(visual);
}
else {
videoWidth
= 320;
}

//取得player中的視頻播放控制條組件,并把該組件添加到Frame窗口中
if ((control = player.getControlPanelComponent()) != null) {
controlHeight
= control.getPreferredSize().height;
f.add(control, BorderLayout.SOUTH);
}

//設定Frame窗口的大小,使得滿足視頻文件的默認大小
f.setSize(videoWidth + insetWidth, videoHeight + controlHeight + insetHeight);
f.validate();

//啟動視頻播放組件開始播放
player.start();
}
else if (ce instanceof EndOfMediaEvent) {
//當播放視頻完成后,把時間進度條恢復到開始,并再次重新開始播放
player.setMediaTime(new Time(0));
player.start();
}
}

}

?

?完成上述代碼,直接編譯運行就可以了,是不是您的視頻播放器開始工作了?恭喜你,成功了!

?

轉載于:https://www.cnblogs.com/gaoyoubo/articles/1756782.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的JMF入门(Java Media Framework)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。