Java 미디어 프레임워크

Java Media Framework
Java 미디어 프레임워크
JMStudio application
Quick Time 무비를 재생하는 JMF의 심플한 JMStudio 어플리케이션
개발자Sun Microsystems
안정된 릴리스
2.1.1e / 2003년 5월 23일 (2003-05-23)
기입처자바
운영 체제크로스 플랫폼
유형멀티미디어용 라이브러리
웹 사이트Java Media Framework API(JMF), Oracle.com의

Java Media Framework(JMF)는 Java 응용 프로그램 및 애플릿에 오디오, 비디오 및 기타 시간 기반 미디어를 추가할 수 있는 Java 라이브러리입니다.이 옵션 패키지는 여러 미디어 형식을 캡처, 재생, 스트리밍 및 트랜스코드할 수 있으며 Java Platform, Standard Edition(Java SE)을 확장하여 크로스 플랫폼 멀티미디어 애플리케이션을 개발할 수 있습니다.

버전 및 라이선스

JMF의 초기 재생 전용 버전은 Sun Microsystems, Silicon Graphics 및 Intel의해 개발되어 1997년에 JMF 1.0으로 출시되었습니다.Sun과 IBM이 개발한 JMF 2.0은 1999년에 출시되었으며 캡처, 스트리밍, 플러그형 코덱 및 트랜스코딩이 추가되었습니다.JMF는 Java 서버 측 및 클라이언트 측 애플리케이션 프레임워크가 아닌 Sun의 J2SE "데스크탑" 기술의 일부로 브랜드화되었습니다.주목할 만한 예외는 Java 애플릿Java Web Start입니다.이러한 예외는 웹 브라우저 또는 애플릿뷰어의 기본 [1][2]JRE에서 완전한 JMF에 액세스할 수 있습니다.

JMF 2.0은 원래 MP3 디코더와 인코더를 탑재하고 있었습니다.이 플러그인은 2002년에 삭제되어 2004년에 새로운 MP3 재생 전용 플러그인이 게시되었습니다.

JMF 바이너리는 커스텀라이선스로 사용할 수 있으며, 소스는 SCSL로 사용할 수 있습니다.

현재 버전에는 4개의 JAR 파일과 4개의 JMF 기반 응용 프로그램을 실행하기 위한 셸 스크립트가 포함되어 있습니다.

  • JMStudio - 심플한 플레이어 GUI
  • JMF Registry - JMF "레지스트리"를 관리하기 위한 GUI로 프리퍼런스, 플러그인 등을 관리합니다.
  • JMFCustomizer - 특정 JMF 응용 프로그램에 필요한 클래스만 포함하는 JAR 파일을 만들 때 사용합니다.이를 통해 개발자는 더 작은 응용 프로그램을 보낼 수 있습니다.
  • JMFInit

JMF는 All-Java 버전 및 플랫폼 고유의 "퍼포먼스 팩"으로 제공되며 플랫폼 고유의 네이티브 코드 플레이어를 포함하거나 해당 플랫폼 고유의 멀티미디어 엔진에 연결할 수 있습니다.JMF 2.0은 Linux, Solaris(SPARC) 및 [1]Windows용 퍼포먼스 팩을 제공합니다.

2011년 1월 Bentokit Project의 Tudor Holton은 Debian 및 Ubuntu Linux에 JMF를 설치할 때 발생하는 어려움을 완화하기 위해 JMF용 Debian 패키지를 출시했습니다.이 패키지에는 JMF가 포함되어 있지 않지만 사용자에게 JMF 라이선스를 제시하고 Oracle 웹사이트에서 라이선스를 취득한 [3]후 설치합니다.JMF MP3 플러그인용 유사한 Debian 패키지 설치 프로그램도 2011년 [4]2월에 구축되었습니다.

디자인 컨셉

JMF는 사용하는 미디어를 요약하여DataSource(JMF로 읽어들이는 미디어용) 및DataSinks(내보내는 데이터의 경우).개발자가 특정 포맷의 세부 정보에 크게 접근할 수 있는 것은 아닙니다.대신 미디어는 읽기, 재생, 처리 및 내보내기가 가능한 소스(URL에서 취득한 소스)로 표시됩니다(단, 모든 코덱이 처리 및 트랜스코딩을 지원하는 것은 아닙니다).

A Managerclass는 어플리케이션의 JMF와의 주요 창구인 스태틱메서드를 제공합니다.

비판과 대안

많은 JMF 개발자들은 최신 JRE에서 제공되는 JMF 구현이 비교적 소수의 최신 코덱 및 형식을 지원한다고 불평해 왔습니다.예를 들어 All-Java 버전은 MPEG-2, MPEG-4, Windows Media, RealMedia, 대부분의 QuickTime 무비, Flash 2보다 새로운 Flash 콘텐츠를 재생할 수 없으며, 유비쿼터스 MP3 형식을 [5]재생하려면 플러그인이 필요합니다.퍼포먼스 팩은 네이티브 플랫폼의 미디어 라이브러리를 사용할 수 있지만 Linux, Solaris 및 Windows에서만 제공됩니다.특히 JMF를 처음 접하는 MS Windows 기반의 JMF 개발자는 실제로 MS Windows에서만 지원되는 새로운 포맷을 모든 플랫폼에서 지원할 수 있을 것으로 예상하는 경우가 많습니다.

JMF는 매우 유용한 프레임워크로 간주되지만 Oracle이 제공하는 무료 구현은 업데이트와 유지보수가 부족하기 때문에 어려움을 겪고 있습니다.JMF는 Oracle로부터 유지보수를 위한 노력을 많이 받지 않았습니다.API는 1999년 이후 개선되지 않았으며 JMF 홈페이지의 마지막 뉴스 항목은 2008년 9월에 게시되었습니다.JMF는 확장성을 위해 구축되어 있지만 이러한 서드파티 확장은 거의 없습니다.게다가 JMF의 컨텐츠 편집 기능은 사실상 존재하지 않는다.오디오 및 비디오에 대한 간단한 녹화 및 재생은 가능하지만 Oracle에서 제공하는 구현으로는 다른 [6]작업을 거의 수행할 수 없습니다.

Oracle이 지원하는 플랫폼 이외의 플랫폼은 해당 JRE [7]벤더가 담당합니다.Sun은 아직 구현에 대한 논의를 위한 포럼을 제공하고 있지만 오픈 소스 [8][9][10][11][12]대안을 구현하기 위한 몇 가지 노력이 있었습니다.

대체 수단

개발자의 요구에 따라 JMF보다 더 적합한 라이브러리가 몇 개 더 있을 수 있습니다.여기에는 다음이 포함됩니다.

  • Java(FMJ) JMF 오픈 소스 대체 API 호환
  • 자바용 Quick Time
  • MPEG-4용 IBM 툴킷
  • Jffmpeg
  • 비디오
  • gstreamer의 매개에 의한
  • Cortado, Java 애플릿의 Ogg Vorbis와 Theora의 완전한 플레이어
  • Directshow <> Java 래퍼
  • JLayer MP3 라이브러리
  • Video4Linux4Java

코드 예시

다음으로 AWT 파일 선택 대화상자의 예를 나타냅니다.는 사용자가 선택한 미디어 파일을 로드하여 재생하려고 합니다.

수입품 javax.media 를 클릭합니다.*; 수입품 java.io 를 참조해 주세요.파일; 수입품 java.awt.*;  일반의 학급 Trivial JMFP층 확장  {      일반의 정적인 무효 주된 (스트링[] args) {         해라 {              f = 신규 Trivial JMFP층();             f.포장하다();             f.set Visible (진실의);         } 또 만나 (예외. e) {             e.print Stack Trace(프린트 스택 트레이스)();         }     }     일반의 Trivial JMFP층()          던지다 자바.이오.IOException(IOException),                자바.그물.부정한URLException(어렉션),                자바.미디어.미디어 예외 {         FileDialog(파일 대화 상자) fd = 신규 FileDialog(파일 대화 상자)             (이것., '트리비얼 J'MFP 레이어", FileDialog(파일 대화 상자).로드);         fd.set Visible(진실의);         파일 f = 신규 파일(fd.get Directory(), fd.get 파일());         플레이어 p = 부장님.create Realized Player             (f.토리().URL());         요소 c = p.getVisual Component(가시 컴포넌트)();         더하다(c);         p.개시하다();     } } 

이 예의 대부분은 AWT GUI의 구축과 관련되어 있습니다.JMF에 접하는 회선은 2개뿐입니다. Manager.createRealizedPlayer()암묵적으로 작성하다DataSource파일의 URL 표시로부터, 다음의 URL 를 작성합니다.Player그것을 실현합니다.즉, 재생에 필요한 모든 리소스가 할당되어 초기화됩니다.getVisualComponent()묻다PlayerAWT를 위해서ComponentGUI에서 사용하기에 적합합니다.제어 컴포넌트가 필요한 경우 다음과 같이 얻을 수 있습니다.getControlPanelComponent()를 GUI에 별도로 추가합니다.개발자는 미디어의 포맷에 관여하지 않습니다.이 코드는 JMF가 Import 및 읽을 수 있는 미디어 포맷에서도 동일하게 동작합니다.

레퍼런스

  1. ^ a b JMF FAQ
  2. ^ Java Media Framework API
  3. ^ "Ubuntu installer for JMF". Launchpad. Retrieved 4 March 2011.
  4. ^ "JMF Plugin installer for Debian". Retrieved 4 March 2011.
  5. ^ JMF 2.1.1 - 지원되는 형식
  6. ^ JMF: Chris Adamson의 재작성을 요구하는 실수, 2005년 12월 13일
  7. ^ Mac OS X에서의 JMF 설치 절차
  8. ^ 공식 토론 목록 JMF-Interest 2006-04-27 Wayback Machine에서 보관
  9. ^ Jffmpeg: 추가 코덱을 지원하는 JMF 오픈 소스 플러그인
  10. ^ Fobs4JMF: 추가 코덱을 지원하는 다른 JMF 오픈 소스 플러그인
  11. ^ FMJ: JMF 대체/실장용 오픈소스 대체/대체/실시
  12. ^ Xugler:추가 코덱을 지원하며 FFMPEG를 통해 자동으로 최신 상태로 유지되는 오픈 소스 Java 플러그인