Java에 대한 QuickTime
QuickTime for Java자바 또는 QTJ를 위한 QuickTime은 자바 프로그래밍 언어로 작성된 소프트웨어가 네이티브 QuickTime 라이브러리에 전화를 걸어 멀티미디어 기능을 제공할 수 있도록 하는 소프트웨어 라이브러리다.실제로, 그것은 Mac OS, Mac OS X 및 Microsoft Windows의 Java 애플리케이션들이 다양한 미디어 형식과 코덱의 캡처, 편집, 재생 및 내보내기를 지원할 수 있도록 한다.
QTJ는 애플에 의해 비난 받아왔다.[1]
역사
오웬 W. 린즈마이어는 애플 컴파운트 2.0에서 자바의 창조를 위한 QuickTime을 애플 컴퓨터와 IBM이 만든 스핀오프 회사인 칼리다 랩스로 거슬러 올라가면서, 이 제품과 일부 유니코드 텍스트 클래스가 4년 동안 1억 5천만 달러의 재난으로부터 회수된 유일한 Mac 소프트웨어라고 언급했다.[2]맥 OS에 포팅되어, "비스코티"라는 코드명으로 개발되었고, 1999년에 처음으로 공개 베타 버전으로 출시되었다.[citation needed]이후 버전은 기본적으로 Mac OS 및 Mac OS X와 함께 설치되었으며, Windows용 QuickTime 설치의 선택 사항이었습니다.
QTJ 6.1
2003년 애플은 자바 1.4.1 구현을 발표하여 맥 OS X에서 1.4.1 미만으로 실행하려고 했던 QTJ 애플리케이션을 모두 중단시켰다.근본적인 문제는 AWT 구현을 위해 애플이 카본에서 코코아로 옮겨간 것과 QTJ가 의존하는 자바 대 네이티브 라이브러리 'JDirect'를 없앤 것이다.QTJ 애플리케이션은 여전히 Java 1.3.1에서 실행될 수 있지만, 필요한 Java 버전을 지정하지 않았거나 1.4 기능이 필요한 앱은 사용할 수 없게 되었다.
그해 말 애플은 호환되지만 축소된 버전의 GUI 클래스를 제공함으로써 비호환성을 다룬 새로운 버전의 QTJ를 출시했다.이 6.1 버전의 QTJ는 개발자들이 GUI 구성요소를 만들고 연결시키는 대신 API를 획기적으로 변경하였다.Movie
s 또는 다른 렌더링 가능한 객체를 가지고, 개발자는 이제 다음 항목으로 시작할 필요가 있다.Movie
공장에 적합한 부품을 요청하십시오.새 버전은 또한 웹캠이나 캠코더와 같은 캡처 장치로부터의 입력의 시각적인 미리보기를 보여주는 컴포넌트 제공을 소홀히 했다.[3]
디자인
QTJ는 네이티브 C 기반 QuickTime 라이브러리 위에 객체 지향 API를 구축한다.그것은 공통점을 연관시킴으로써 이것을 한다.struct
그리고 그들과 함께 수업하는 기능들.예를 들어,Movie
구조는 계급의 기본이다.quicktime.std.movies.Movie
, 다음과 같은 기능을 가진NewMovieFromFile
그리고GetMovieTrackCount
인스턴스화 방법fromFile()
그리고getTrackCount()
각각결과는 다른 C-to-Java 적응(OpenGL 헤더 파일을 수천 개의 정적 방법이 있는 클래스로 덤프하는 JOGL 등)에 비해 진정한 객체 지향 API에 가깝다.[4]
코코아 기반 QTKit는 Object-C를 사용하여 절차상 QuickTime 라이브러리 위에 객체 지향 레이어를 배치하려는 유사한 시도다.
애플, 최상위 패키지 이름 사용quicktime
패키지가 다음과 같은 역도메인 이름 체계를 사용하는 자바 언어의 사양 규약을 위반한다.com.apple.quicktime
그러나 애플이 'QuickTime' 상표권을 갖고 있어 네임스페이스 충돌이 발생할 가능성이 현실적으로 없으며, 이를 예방하는 것이 패키지 명명 규약의 목적이다.
QTJ는 Java의 QuickTime 구현이 아니라, 기본 QuickTime 호출을 중심으로 한 Java 래퍼라는 점을 기억해야 한다.이 때문에 QuickTime 라이브러리가 설치된 시스템, 즉 클래식한 Mac OS(더 이상 지원되지 않는 Mac OS), Mac OS X 및 Windows에서만 실행할 수 있다.
특징들
QTJ는 다음을 포함한 대부분의 기본 QuickTime 라이브러리에 대한 액세스 제공
- 재생
- 편집
- 캡처
- 그래픽 가져오기 및 내보내기
- 동영상 가져오기 및 내보내기
- 샘플 레벨 액세스
QTJ는 QuickTime을 둘러싼 포장지로서 MPEG-1, MPEG-4, H.264, AAC, Sorenson Video, Flash, 3GPP, WAV, AIFF 등을 포함한 방대한 미디어 형식과 코덱에 대한 지원도 계승하고 있다.QTJ는 QuickTime 자체가 연장될 수 있기 때문에 타사 QuickTime 컴포넌트를 통해 DivX, Oggg Vorbis 등의 포맷에 대한 지원을 받을 수 있다.
코드 예제
다음 예제는 AWT 파일 선택 대화 상자를 표시한 다음 선택한 미디어 파일을 가져와서 재생하려고 시도하십시오.
수입하다 java.io.파일; 수입하다 자바.와트*; 수입하다 재빠른 시간*; 수입하다 퀵타임.std.std.property영화; 수입하다 퀵타임.앱.뷰QTFactory; 수입하다 quicktime.io.*; 공중의 계급 트리뷰트QTJPlayer 연장하다 틀 { 공중의 정태의 공허하게 하다 본래의 (끈[] 아그) { 해보다 { QTS세션.개방된(); 틀 f = 새로운 트리뷰트QTJPlayer(); f.짐을 꾸리다(); f.세트비주얼 (진실의); } 잡히다 (예외 e) { e.printStackTrace(); } } 공중의 트리뷰트QTJPlayer() 던지다 QTException { 파일다이얼로그 fd = 새로운 파일다이얼로그 (이, 트리비얼JMFPlayer", 파일다이얼로그.로드); fd.세트비주얼(진실의); 파일 f = 새로운 파일 (fd.getDirectory(), fd.get파일()); OpenMovieFile 옴프 = OpenMovieFile.AsRead (새로운 큐티플레 (f)); 영화 m = 영화.from파일 (옴프); 구성 요소 c = QTFactory.makeQTComentor(m).asComponent(); 덧셈을 (c); m.출발하다(); } }
이 예에서 대부분의 코드는 GUI 설정과 관련되어 있다.QTJ에게 걸려오는 유일한 통화는OpenMovieFile.asRead()
그리고Movie.fromFile()
지정한 파일에서 QuickTime 동영상을 만들고 AWT 구성 요소를 생성하기 위한 호출QTFactory
. 이 예는 영화를 액자에 넣고 즉시 재생을 시작한다; 만약 컨트롤 바(일명 "스크럽버"라고 불린다면, 당신은 영화를 만들 것이다.MovieController
처음부터Movie
그런 다음 영화 대신 컨트롤러에서 구성 요소를 생성하십시오.
상태 및 전망
QTJ의 수용은 애플이 독점하고 있는 퀵타임 라이브러리의 포장지라는 특성상 한계가 있다.그것은 맥과 윈도우 이외의 어떤 플랫폼에도 존재하지 않으며, 애플이 리눅스 같은 다른 플랫폼에 QuickTime을 포팅할 때까지 그리고 포팅하지 않으면 불가능하다.
현재 QTJ의 대부분은 최근 Windows를 실행하는 컴퓨터에서 고장났다.최근 CPU의 NX(No-Execute) 페이지 보호 보안 기능을 사용하는 윈도우즈 시스템은 구성을 변경하지 않고 데모도 실행할 수 없다.이는 개발자가 QTJ와 함께 제공되는 데모 중 하나를 테스트 실행을 통해 쉽게 확인할 수 있다. "실행 방지 위반"이 보고되고 Windows에서 프로그램이 중단된다.이는 NX 기능의 필요한 복잡한 구성으로 인해 QTJ가 최종 사용자 애플리케이션 개발에 적합하지 않게 만든다.
2003년 QTJ 6.1 출시 이후 애플은 QTJ에 대한 업데이트를 거의 하지 않았으며 대부분 버그를 수정했다.특히 QuickTime 7은 새로운 네이티브 API를 포장한 QTJ 릴리즈를 동반하거나 뒤따르지 않은 최초의 QuickTime 버전이었다.QTJ 프로그래머는 메타데이터 및 프레임 순서 변경 코덱과 같은 QuickTime 7의 새로운 API를 사용할 수 없다.애플은 또한 6.1 이전 버전의 QTJ에 존재했던 캡처 프리뷰 기능을 제공하는 새로운 클래스를 제공하지 않았다.실제로 QTJ는 애플이 더 이상 추천하지 않는 일부 네이티브 API, 특히 QuickDraw에 의존하고 있다.
참고 항목
- 자바 미디어 프레임워크
- Mac, Linux 및 Windows에서 작동하는 비디오 인코딩 및 디코딩을 위한 Xugler, Java API
외부 링크
- Apple Developer 연결에서 Java에 대한 QuickTime