I.Giới thiệu
Mobile Media API (MMAPI) là một gói tùy chọn hỗ trợ các ứng dụng đa phương tiện trên các thiết bị hỗ trợ J2ME. Được định nghĩa trong Java Community Process (JCP) trong JSR 135. Nó đã được thiết kế để chạy với bất kỳ giao thức và định dạng nào; ví dụ, nó không chỉ định việc thực hiện phải hỗ trợ các giao thức transport cụ thể như HTTP hay Real-Time Transport Protocol (RTP), hoặc các định dạng media như MP3, MIDI, hoặc MPEG-4.
Trong bài này sẽ giới thiệu một cách tổng quan kiến trúc và các API của MMAPI, và cả ví dụ mẫu để mô tả cách sử dụng MMAPI trong việc xây dựng các ứng dụng JAVA media.

II. Tổng quan
MMAPI đã được thiết kế để chạy trên máy ảo của J2ME, bao gồm CDC và CLDC VM. MMAPI bao gồm các đặc điểm sau:

  • Support for Tone Generation, Playback, and Recording of Time-Based Media: hỗ trợ content audio hay video dựa trên thời gian.
  • Small FootPrint: MMAPI làm việc bên trong các bộ nhớ giới hạn của các thiết bị CLDC.
  • Protocol- and Content-Agnostic: API không dựa trên bất kỳ một kiểu content hay giao thức nào.
  • Subsettable: Nhà phát triển có thể hạn chế hỗ trợ cho các loại nội dung cụ thể.
  • Extensible: Các tính năng mới có thể được thêm một cách dễ dàng mà không phá vỡ các chức năng cũ. Quan trọng hơn, định dạng bổ sung có thể dễ dàngđược hỗ trợ, và framework là nơi để kiểm soát bổ sung.
  • Options for Implementers: API cung cấp tính năng cho các mục đích khác nhau. API được thiết kế để cho phép implement để lại một số tính năng unimplemented nếu chúng có thể không được hỗ trợ.

III. Multimedia Processing
Multimedia Processing bao gồm 2 phần:

  • Protocol Handling: đọc dữ liệu từ một nguồn như một file hoặc một máy chủ streaming thành một media-processing của hệ thống.
  • Content Handling: phân tích hoặc giải mã dữ liệu media và thiết nó đến một thiết bị đầu ra như là một loa âm thanh hoặc hiển thị video.

Để tạo thuận lợi cho các hoạt động này, API cung cấp hai loại đối tượng high-level:

  • DataSource đóng gói protocol handling bằng cách ẩn các chi tiết về cách dữ liệu được đọc từ nguồn của nó. Phương pháp hữu ích của đối tượng này cho phép các đối tượng Player để xử lý nội dung.
  • Player  đọc dữ liệu từ DataSource, xử lý, và render nó vào một thiết bị đầu ra. Đối tượng này cung cấp các phương thức để kiểm soát media playback, bao gồm các phương thức cho kiểu control cụ thể để truy cập các loại media cụ thể.

MMAPI chỉ định một đối tượng thứ ba, một cơ chế factory được gọi là Manager, để kích hoạt ứng dụng của bạn để tạo các Player từ DataSources, và cũng từ InputStreams. Kiến trúc tổng thể của MMAPI được hiển thị trong hình:

Đối tượng Manager cung cấp phương thức createPlayer(), đó là entry point top-level vào API. Ví dụ:
Player player = Manager.createPlayer(String url);

url này chỉ qui định những giao thức và nội dung, sử dụng định dạng : . Đối tượng player kiểm soát thời gian phát hay phát lại đoạn media. Vòng đời của đối tượng Player bao gồm 5 trạng thái:  UNREALIZED, REALIZED, PREFETCHED, STARTED, và CLOSED. Khi một player được tạo ra, nó đang ở trong trạng thái UNREALIZED, để chuyển đối trạng thái ta sử dụng 6 phương thức sau:

  • realize():chuyển  nó sang trạng thái REALIZED và khởi tạo thông tin mà player cần có nhu cầu sử dụng tài nguyên media.
  • prefetch(): chuyển sang trạng thái PERFETCHED, thiết lập kết nối cho các luồng dữ liệu và thực hiện các task khởi tạo khác.
  • start(): chuyển sang trạng thái STARTED, là nơi mà Player có thể xử lý dữ liệu. Khi nó kết thúc quá trình xử lý(đạt đến cuối media stream), nó sẽ trả về trạng thái PREFETCHED.
  • stop()
  • deallocate()
  • close(): chuyển sang trạng thái CLOSED.

Một layer cung cấp các điều khiển cụ thể cho các loại media cụ thể mà nó xử lý. Ứng dụng sử dụng getControl () để có được một điều khiển đơn, hoặc getControls () để có được một mảng các control. Ví dụ, player cho các media MIDI gọi phương thức getControl (), nó sẽ trả về một MIDIControl.

Các bài liên quan:
J2ME Mobile Media API(P2)
J2ME Mobile Media API(P3)