Media Foundation: Konsep Penting

Jika Anda baru mengenal media digital, topik ini memperkenalkan beberapa konsep yang perlu Anda pahami sebelum menulis aplikasi Media Foundation.

Aliran

Aliran adalah urutan data media dengan jenis seragam. Jenis yang paling umum adalah audio dan video, tetapi aliran dapat berisi hampir semua jenis data, termasuk teks, perintah skrip, dan gambar diam. Istilah aliran dalam dokumentasi ini tidak menyiratkan pengiriman melalui jaringan. File media yang ditujukan untuk pemutaran lokal juga berisi aliran.

Biasanya, file media berisi satu aliran audio, atau tepat satu aliran video dan satu aliran audio. Namun, file media mungkin berisi beberapa aliran dengan jenis yang sama. Misalnya, file video mungkin berisi aliran audio dalam beberapa bahasa yang berbeda. Pada durasi, aplikasi akan memilih aliran mana yang akan digunakan.

Kompresi

Pemadatan mengacu pada proses apa pun yang mengurangi ukuran aliran data dengan menghapus informasi yang berlebihan. Algoritma kompresi termasuk dalam dua kategori luas:

  • Kompresi lossless. Menggunakan algoritma lossless, data yang direkonstruksi identik dengan aslinya.
  • Kompresi lossy . Menggunakan algoritma lossy, data yang direkonstruksi adalah perkiraan dari aslinya, tetapi bukan kecocokan yang tepat.

Di sebagian besar domain lain, kompresi lossy tidak dapat diterima. (Bayangkan mendapatkan kembali "perkiraan" spreadsheet!) Tetapi skema kompresi lossy sangat cocok untuk audio dan video, karena beberapa alasan.

Alasan pertama ada hubungannya dengan fisika persepsi manusia. Ketika kita mendengarkan suara yang kompleks, seperti rekaman musik, beberapa informasi yang terkandung dalam suara itu tidak terlihat oleh telinga. Dengan bantuan teori pemrosesan sinyal, dimungkinkan untuk menganalisis dan memisahkan frekuensi yang tidak dapat dirasakan. Frekuensi ini dapat dihapus tanpa efek persepsi. Meskipun audio yang direkonstruksi tidak akan cocok dengan aslinya, audio tersebut akan terdengar sama dengan pendengar. Prinsip serupa berlaku untuk video.

Kedua, beberapa penurunan kualitas suara atau gambar mungkin dapat diterima, tergantung pada tujuan yang dimaksudkan. Dalam telepon, misalnya, audio sering kali sangat terkompresi. Hasilnya cukup baik untuk percakapan telepon—tetapi Anda tidak ingin mendengarkan orkestra simfoni melalui telepon.

Pemadatan juga disebut pengodean, dan perangkat yang mengodekan disebut encoder. Proses terbalik adalah pendekodean, dan perangkat secara alami disebut dekoder. Istilah umum untuk encoder dan decoder adalah codec. Codec dapat diimplementasikan dalam perangkat keras atau perangkat lunak.

Teknologi kompresi telah berubah dengan cepat sejak munculnya media digital, dan sejumlah besar skema kompresi digunakan saat ini. Fakta ini adalah salah satu tantangan utama untuk pemrograman media digital.

Kontainer Media

Jarang menyimpan aliran audio atau video mentah sebagai file komputer, atau untuk mengirimnya langsung melalui jaringan. Untuk satu hal, tidak mungkin untuk mendekode aliran seperti itu, tanpa mengetahui terlebih dahulu codec mana yang akan digunakan. Oleh karena itu, file media biasanya berisi setidaknya beberapa elemen berikut:

  • Header file yang menjelaskan jumlah aliran, format setiap aliran, dan sebagainya.
  • Indeks yang memungkinkan akses acak ke konten.
  • Metadata yang menjelaskan konten (misalnya, artis atau judul).
  • Header paket, untuk mengaktifkan transmisi jaringan atau akses acak.

Dokumentasi ini menggunakan istilah kontainer untuk menjelaskan seluruh paket aliran, header, indeks, metadata, dan sebagainya. Alasan untuk menggunakan istilah kontainer daripada file adalah bahwa beberapa format kontainer dirancang untuk siaran langsung. Aplikasi dapat menghasilkan kontainer secara real time, tidak pernah menyimpannya ke file.

Contoh awal kontainer media adalah format file AVI. Contoh lain termasuk MP4 dan Advanced Systems Format (ASF). Kontainer dapat diidentifikasi dengan ekstensi nama file (misalnya, .mp4) atau berdasarkan jenis MIME.

Diagram berikut menunjukkan struktur umum untuk kontainer media. Diagram tidak mewakili format tertentu; detail setiap format sangat bervariasi.

diagram memperlihatkan kontainer media umum

Perhatikan bahwa struktur yang ditampilkan dalam diagram bersifat hierarkis, dengan informasi header muncul di awal kontainer. Struktur ini khas dari banyak (tetapi tidak semua) format kontainer. Perhatikan juga bahwa bagian data berisi paket audio dan video yang terjalin. Jenis interleaving ini umum dalam kontainer media.

Istilah multiplexing mengacu pada proses pengemasan aliran audio dan video dan mencampuri paket ke dalam kontainer. Proses terbalik, menyusun ulang aliran dari data yang dikemas, disebut demultiplexing.

Format

Di media digital, format istilahnya ambigu. Format dapat merujuk ke jenis pengodean, seperti video H.264, atau kontainer, seperti MP4. Perbedaan ini sering membingungkan bagi pengguna biasa. Nama yang diberikan ke format media tidak selalu membantu. Misalnya, MP3 mengacu pada format pengodean (MPEG-1 Audio Layer 3) dan format file.

Perbedaannya penting, bagaimanapun, karena membaca file media sebenarnya melibatkan dua tahap:

  1. Pertama, kontainer harus diurai. Dalam kebanyakan kasus, jumlah aliran dan format setiap aliran tidak dapat diketahui sampai langkah ini selesai.
  2. Selanjutnya, jika aliran dikompresi, aliran harus didekode menggunakan dekode yang sesuai.

Fakta ini mengarah secara alami ke desain perangkat lunak di mana komponen terpisah digunakan untuk mengurai kontainer dan mendekode aliran. Selanjutnya, pendekatan ini meminjamkan dirinya ke model plug-in, sehingga pihak ketiga dapat menyediakan pengurai dan codec mereka sendiri. Di Windows, Model Objek Komponen (COM) menyediakan cara standar untuk memisahkan API dari implementasinya, yang merupakan persyaratan untuk model plug-in apa pun. Untuk alasan ini (antara lain), Media Foundation menggunakan antarmuka COM.

Diagram berikut menunjukkan komponen yang digunakan untuk membaca file media:

diagram memperlihatkan komponen untuk membaca file media

Menulis file media juga memerlukan dua langkah:

  1. Mengodekan data audio/video yang tidak dikompresi.
  2. Memasukkan data terkompresi ke dalam format kontainer tertentu.

Diagram berikut menunjukkan komponen yang digunakan untuk menulis file media:

diagram memperlihatkan komponen untuk menulis file media.

Panduan Pemrograman Media Foundation