JMF™(Java Media FrameWork)의 개요 및 설치
이 문서의 License는 GPL을 따릅니다.(This document follows GPL.)
○작성자 : Hops(최호필 - hops@bcline.com)
○작성일 : Aug 22, 2000.
○테스트 환경(S/W) : Window2000 Advanced Server, JDK1.3(Sun Microsystems), JMF2.1
○테스트 환경(H/W) : AMD K6-2 300Hz, 192MB RAM
※참고 사이트 :
1. 찬미네 인터넷 보금자리(http://myhome.naver.com/kingseft/)
2. JMF™ Guide
※편의상 경어는 생략합니다.
JMF™ - Java Media FrameWork - 는 Java진영에서 JMF라는 것은 기존의 자바 프로그래밍에서의 가장 취약했던
멀티미디어 제어관련 API 및 SDK를 보강한 것으로서, 옛날 윈도우의 VIdeo for windows 프로그래밍 SDK와
마찬가지로, 비디오 및 오디오의 캡쳐, 저장, 전송, 스트리밍 기술등에 이용되는 멋진 기술이다.
JMF라는 기술은 미국의 Sun과 IBM의 협력에 의해 만들어 졌고 , 이 JMF에서는 MPEG, AVI, MOV등의 비디오
기술과 더불어 H.261 H.263등의 영상회의 코덱 표준도 지원하고 , G.721 G>723 등의 오디오 코덱도 더불어 제공하고 있다.
또한 가장 멋진 기능인 RTP : Realtime Transfer Protocol을 지원함으로서 실시간으로 동영상과 음성을 전송하고,
이러한 기능을 통해서 인터넷 멀티채팅, 화상회의, 원격 감시등에도 그 이용분야가 상당히 높다.
한마디로 말해서 이 JMF를 통하여 자바에서는 MP3, MPEG 등의 멀티미디어들을 지원하고 있다. 따라서 원하기만 한다면,
여러분들은 이것을 이용해서 자신들만의 MP3 Player도 만들 수 있을 것이다.
이에 이번에 JMF를 설치해 보고 간단한 프로그램을 작성해 보았다(아직까진 저두 잘 몰라서리.. 어려운건 묻지 말아주세용..).
1. JMF 구하기 및 설치
JMF는 CORE부분에 들어 있지 않다. 따라서 JDK를 설치했다고 JMF를 할 수 있는 것이 아니라 Sun사에 가서 필요한 화일을
다운받아서 설치해야 한다.
먼저 설치에 필요한 시스템 요구사항은 다음과 같다.(JMF 2.0 기준)
●166 MHz Pentium, 160 MHz PowerPC, or 166 MHz UltraSparc
●32 MB RAM or greater
●Optional: An appropriate sound card for audio play back, if necessary. For example, a SoundBlaster-compatible
card for Windows machines without built-in audio support, or an Ultimedia sound card for AIX machines without
built-in audio support.
자신의 컴퓨터가 위의 사항들을 만족한다면 다운받도록 하자.
http://java.sun.com/products/java-media/jmf/index.html
그곳으로 가면 Reference Implementation으로 가면 다운받을 수 있다. Select Download Format에서 원하는 포맷을 선정하여
다운받으면 된다(참고로 난 Windows Performace Pack으로 선정하여 다운받았다).
Install하는 좀 더 자세한 방법은 그 페이지에 보면 아주 자세히 설명을 해 놓았으니 참고하길 바란다. 단, 영어에 자신이
있다면...
자, 다 다운받았다면.. 이제 설치해 보자. 윈도우상에서 설치하는 방법은 무척이나 쉽다. 기냥 화일을 다블클릭만 하면 끝이다.
설치와 동시에 클래스패스를 설정하기에 별다른 클래스패스의 설정이 필요없다. 단, 우리가 여기서 한가지 짚고 넘어가야 할 것이
있다. 자바의 특성상 클래스들을 사용하기에 클래스패스에 "."(현재 디렉토리를 의미)가 포함되어 있는지 꼭 확인하자.
Win2000에서는 NT/9x와 다르게 환경변수가 2가지가 있다. 시스템변수와 사용자변수. JMF가 설치되면서 자동으로 설정하는 클래스
패스는 사용자변수로 잡힌다. 만일 시스템변수로 바꾸고자 한다면 내컴퓨터->등록정보->고급->환경변수에서 바꿔주면 된다.
이제는 잘 설치가 되었는지 확인을 해 보는 단계이다.
http://java.sun.com/products/java-media/jmf/2.1/jmfdiagnostics.html
위의 URL로 가서 애플릿을 통하여 검증받을 수 있다. 다음은 나의 경우이다. 참고하길 바란다.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
JMF Diagnostics:
Java 1.1 compliant browser.....Maybe
JMF classes.....Found
JMF Version... 2.1
Win32 Build
Native Libraries Found
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
만일 IE에서 에러가 발생하고 Netscape에서는 에러가 없다면 IE용 JVM을 다운받아 설치해야 한다. IE용 JVM은 위의 JMF Diagnostics
페이지에서 다운받을 수 있다.
자... 이제는 테스트용으로 JVM을 이용한 간단한 프로그램을 하나 만들어 보도록 하자.
이 프로그램은 D:\Java\에 위치를 한다. 원하면 바꿀수도 있다. 그리고 cult.mpg라는 동영상을 Playback해 주는 프로그램이다.
####################################### Program Source #################################################
//TestJMF.java
import! java.awt.*; // Window프로그램으로 만들기 위한 AWT class들을 Import!.
import! java.awt.event.*; // 종료 Event를 처리하기 위하여 Import!.
import! java.net.*; // JMF는 기본적으로 Network환경을 바탕으로 되었기 때문에 필요하다.
import! javax.media.*; // 실질적으로 JMF관련 클래스들을 Import!.
// JMF의 기본 이벤트를 받으려면 우리가 만든 클래스가 ControllerListener 클래스를 구현상속 해야 한다.
public class TestJMF extends Frame implements ControllerListener {
Player player; // Media를 사용하기 위해 Media Player 선언
// 생성자
public TestJMF() {
// Frame의 타이틀을 설정
super("Test JMF Program");
// URL생성부분과 Player의 생성은 try~catch절로 처리해야 한다.
try {
// 미디어 파일의 위치를 정해준다. 원하는 화일과 경로를 지정하면 된다.
// 경로와 화일명은 URL방식으로 적는다.
URL fileurl = new URL("file:///d:/java/cult.mpg");
player = Manager.createPlayer(fileurl);
// 이벤트핸들러 추가
player.addControllerListener(this);
} catch(Exception e) {
System.out.println("Get Exception : " + e.toString());
}
setLayout(new BorderLayout());
// 종료이벤트 처리.
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
if (player != null) {
// 미디어 플래이어가 생성되어 있다면 아래부분을 처리한다.
// 종료시 실행될 부분이기에 플레이어를 종료하고 메모리할당된 것을 회수한다.
player.stop();
player.deallocate();
// 그리고 종료한다.
player.close();
}
System.exit(0); // 프로그램 종료
}
});
setSize(400,300);
setVisible(true);
// 플레이어 실행
player.start();
}
// 실제로 이벤트 발생시 우리가 원하는 작업을 하기위한 이벤트처리 함수를 정의
public synchronized void controllerUpdate(ControllerEvent e) {
// 여러 이벤트중에서 RealizeCompleteEvent 가 발생하게되면 프레임에 Video 컴포넌트하고,
// 플레이를 위한 컴포넌트를 추가한다.
if (e instanceof RealizeCompleteEvent) {
Component comp;
if ((comp = player.getVisualComponent())!=null)
add("Center",comp);
if ((comp = player.getControlPanelComponent())!=null)
add("South",comp);
validate();
}
}
public static void main(String[] args) {
TestJMF jmf = new TestJMF();
}
}
########################################################################################################
위의 코드를 컴파일하고 실행해 보시기 바랍니다. 그리고 한번 MPEG가 아닌 MP3화일과 같은 것도 실행해 보세요..
실행하시면 jmf.log라는 화일이 생성됩니다. 그 로그화일을 보시면 Detail한 내용들이 보이니 참고하시길 바랍니다.
JMF를 시작하시려는 분들께 많은 도움이 되길 바랍니다.
'IT > Programming' 카테고리의 다른 글
JXTA (0) | 2013.01.18 |
---|---|
정규표현식 (Regular Expressions) (0) | 2012.03.19 |
자바 제네릭스(JAVA Generics) (0) | 2009.04.06 |
public static void main(String args[]) (1) | 2009.04.01 |
C 포인터, 확실히 알자(5) - Call by Reference (6) | 2009.03.31 |
댓글