Skripsi: Perencanaan Dan Pembuatan Perangkat Lunak Untuk Menggabungkan Data Audio-visual Hasil Rekaman Dengan Data Audio-visual Hasil Animasi Komputer, Setyo Nugroho

  • Uploaded by: Setyo Nugroho
  • 0
  • 0
  • October 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Skripsi: Perencanaan Dan Pembuatan Perangkat Lunak Untuk Menggabungkan Data Audio-visual Hasil Rekaman Dengan Data Audio-visual Hasil Animasi Komputer, Setyo Nugroho as PDF for free.

More details

  • Words: 13,713
  • Pages: 92
PERENCANAAN DAN PEMBUATAN PERANGKAT LUNAK UNTUK MENGGABUNGKAN DATA AUDIO-VISUAL HASIL REKAMAN DENGAN DATA AUDIOVISUAL HASIL ANIMASI KOMPUTER TUGAS AKHIR Disusun oleh : SETYO NUGROHO NRP : 2291 100 128

JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNOLOGI INDUSTRI INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA 1998

PERENCANAAN DAN PEMBUATAN PERANGKAT LUNAK UNTUK MENGGABUNGKAN DATA AUDIO-VISUAL HASIL REKAMAN DENGAN DATA AUDIO VISUAL HASIL ANIMASI KOMPUTER

TUGAS AKHIR

Diajukan Guna Memenuhi Sebagian Persyaratan Untuk Memperoleh Gelar Sarjana Teknik Elektro Pada Bidang Studi Teknik Sistem Komputer Jurusan Teknik Elektro Fakultas Teknologi Industri Institut Teknologi Sepuluh Nopember Surabaya

Mengetahui / Menyetujui Dosen Pembimbing

Ir. YOYON K. SUPRAPTO, M.Sc NIP. 130 687 439

SURABAYA MARET, 1998

ABSTRAK

Komputer yang dilengkapi dengan perangkat multimedia semakin banyak dimanfaatkan di berbagai bidang, antara lain untuk keperluan pendidikan, informasi, hiburan, dan periklanan. Untuk memperoleh hasil tampilan audiovisual yang lebih menarik dapat dilakukan dengan memanipulasi data audio-visual yang diperoleh dari hasil rekaman. Salah satu jenis modifikasi tersebut adalah dengan menggabungkan data audio-visual hasil rekaman tersebut dengan data audio-visual yang diperoleh dari hasil animasi komputer. Dalam tugas akhir ini dilakukan perancangan dan pembuatan perangkat lunak komputer yang dapat digunakan untuk menggabungkan dua jenis data audio-visual tersebut di atas sehingga menghasilkan satu data audio-visual yang baru. Data audio-visual yang baru ini akan berisi gambar dan suara yang merupakan gabungan dari gambar dan suara dari kedua data audio-visual masukannya. Semua data audio-visual yang digunakan berbentuk digital dan disimpan dalam file dengan format AVI.

i

KATA PENGANTAR

Atas berkat rahmat Allah swt, akhirnya penulis dapat menyelesaikan Tugas Akhir serta laporan yang berjudul:

PERENCANAAN DAN PEMBUATAN PERANGKAT LUNAK UNTUK MENGGABUNGKAN DATA AUDIO-VISUAL HASIL REKAMAN DENGAN DATA AUDIO-VISUAL HASIL ANIMASI KOMPUTER

Kami menyadari bahwa di dalam penyusunan laporan tugas akhir ini tentunya masih terdapat berbagai kekurangan, sehingga kami akan sangat menghargai segala masukan yang berguna dari pembaca. Semoga laporan ini dapat bermanfaat bagi pembaca untuk mengembangkan ilmu pengetahuan, khususnya di bidang komputer. Selanjutnya dari laporan yang kami susun ini kami berharap akan adanya kritik dan saran yang positif dari pembaca. Akhirnya sebagai penutup, sekali lagi kami berharap semoga laporan tugas akhir ini dapat memberikan manfaat.

Surabaya, Pebruari 1998 Penyusun

Setyo Nugroho

ii

UCAPAN TERIMA KASIH

Pada kesempatan ini penulis ingin menyampaikan rasa terima kasih yang sebesar-besarnya kepada: •

Bp. Ir. Yoyon K. Suprapto, M.Sc, selaku dosen pembimbing, juga selaku Koordinator Bidang Studi Teknik Sistem Komputer, yang telah banyak memberikan bimbingan dan masukan.



Bp. Ir. Teguh Yuwono, selaku Ketua Jurusan Teknik Elektro ITS, serta semua dosen di Jurusan Teknik Elektro ITS.



Para Bapak Dosen Lab B201: Eko M ST, Moh Hariadi ST, Suryo S ST yang telah banyak memberikan dorongan serta masukan yang sangat berharga.



Seluruh anggota & penghuni Lab. B201/B401: Lithel, mBeler, iLad, Melaz, Synam, Kubamz, Gendul, Flinston, Rombenq, Buyut, Morotuo, Inyong, Kadal, Ghoank, PDP11, Kemon, Goofie, Zedod, Wowoh, Corong, Rangsang, Senggek, dll.



Ibu-Bapak tercinta, mbah Ibu, mbak Wid, Mawan, serta Tyas atas segala doa, motivasi, inspirasi, pertanyaan, dan bantuan moril-materiil yang diberikan.



Kawan-kawan di TMB 11, juga Papa Lippuz, Utomo, Nasrul, Didit, Wahyudi, Agung, Mashudi, Ridzky, Gibran, Nurul, Mira, Bp/Ibu Said, dan semua pihak yang telah membantu terselesaikannya tugas akhir ini baik secara langsung maupun tidak langsung.

iii

DAFTAR ISI

ABSTRAK ............................................................................................................... i KATA PENGANTAR ............................................................................................ ii UCAPAN TERIMA KASIH.................................................................................. iii DAFTAR ISI.......................................................................................................... iv DAFTAR GAMBAR ............................................................................................. vi DAFTAR TABEL................................................................................................. vii BAB I PENDAHULUAN .....................................................................................I-1 1.1 Latar Belakang ...........................................................................................I-1 1.2 Permasalahan..............................................................................................I-2 1.3 Tujuan.........................................................................................................I-3 1.4 Metodologi .................................................................................................I-4 1.5 Batasan Masalah .........................................................................................I-4 1.6 Sistematika Penulisan.................................................................................I-5 BAB II TEORI PENUNJANG ............................................................................II-1 2.1 Citra Digital ...............................................................................................II-1 2.2 Video Digital .............................................................................................II-4 2.3 Audio Digital .............................................................................................II-7 2.4 Format Data Multimedia Pada Windows ..................................................II-8 2.4.1 Format File AVI ..............................................................................II-10 2.4.2 Format Data Bitmap ........................................................................II-25 2.4.3 Format Data Waveform Audio ........................................................II-29 2.5 Model Warna...........................................................................................II-32 2.5.1 Model Warna RGB ..........................................................................II-32 2.5.2 Model Warna HSL...........................................................................II-34 2.5.3 Konversi Model Warna RGB - HSL ...............................................II-36 2.6 Pemrograman Multimedia.......................................................................II-38 2.6.1 Operasi Bitmap Pada Windows .......................................................II-39 2.6.2 Operasi Input-Output File AVI........................................................II-41

iv

BAB III PERENCANAAN DAN PEMBUATAN PERANGKAT LUNAK.... III-1 3.1 Penggabungan Video............................................................................... III-4 3.1.1 Penggabungan Frame Dengan Metode Chromakey ........................ III-6 3.1.2 Penentuan Toleransi Warna Kunci .................................................. III-9 3.2 Penggabungan Audio ............................................................................ III-11 3.3 Penggabungan File AVI Secara Multi Segmen..................................... III-15 3.4 Pemilihan Frame Video Yang Akan Digabung..................................... III-18 3.5 Penulisan Data Ke File AVI.................................................................. III-19 3.6 Perancangan Tampilan Perangkat Lunak .............................................. III-19 BAB IV CARA PENGOPERASIAN PERANGKAT LUNAK ........................ IV-1 4.1 Pengisian Parameter-parameter Masukan ............................................... IV-2 4.2 Langkah-langkah Penggabungan File AVI ............................................. IV-5 BAB V PENUTUP.............................................................................................. V-1 5.1 Kesimpulan............................................................................................... V-1 5.2 Saran-saran ............................................................................................... V-2 DAFTAR PUSTAKA ............................................................................................... LAMPIRAN..............................................................................................................

v

DAFTAR GAMBAR

Gambar 2.1 Model Warna RGB.........................................................................II-33 Gambar 2.2 Model Warna HSL .........................................................................II-35 Gambar 3.1 Diagram Blok Proses Penggabungan File AVI.............................. III-3 Gambar 3.2 Penggabungan Stream Video ......................................................... III-4 Gambar 3.3 Diagram Alir Proses Chromakey ................................................... III-7 Gambar 3.4 Susunan Bit RGB Pada Bitmap 16 Bit Per Pixel ........................... III-8 Gambar 3.5 Penjumlahan Sinyal Audio........................................................... III-12 Gambar 3.6 Diagram Alir Proses Penggabungan Data Audio......................... III-13 Gambar 3.7 Penggabungan File AVI Secara Multi Segmen............................ III-16 Gambar 4.1 Tampilan Pada Saat Pengisian Parameter Masukan ...................... IV-3

vi

DAFTAR TABEL

Tabel 2.1 Field-field pada struktur chunk file RIFF ..........................................II-13 Tabel 2.2 Field-field pada struktur data MainAVIHeader .................................II-17 Tabel 2.3 Field-field pada struktur data AVIStreamHeader ..............................II-20 Tabel 2.4 Field-field pada struktur data AVIINDEXENTRY ...........................II-25 Tabel 2.5 Hubungan antara bit per pixel dengan jumlah warna maksimum pada bitmap ..............................................................................................................II-26 Tabel 2.6 Field-field pada struktur data BITMAPINFOHEADER ...................II-28 Tabel 2.7 Field-field pada struktur data WAVEFORMAT ...............................II-31

vii

BAB I PENDAHULUAN

1.1 LATAR BELAKANG Perkembangan teknologi komputer dan elektronika dewasa ini terasa sangat pesat, baik dari segi perangkat keras maupun perangkat lunaknya. Jika pada mulanya komputer lebih banyak digunakan untuk hal-hal yang bersifat ilmiah saja, seperti untuk mengerjakan perhitungan matematis, dan hanya dapat menampilkan teks yang terdiri dari huruf-huruf dan angka-angka dengan warna yang sangat terbatas, maka komputer pribadi (PC) pada generasi sekarang ini telah dapat digunakan untuk menampilkan gambar grafik dengan resolusi jutaan warna, merancang dan menampilkan animasi, dan bahkan dapat digunakan pula untuk menyajikan informasi audio-visual yang berisi gambar bergerak dan suara. Dengan adanya kemampuan komputer untuk menyajikan informasi audiovisual ini, semakin banyak orang yang memanfaatkannya dengan membuat data audio-visual untuk berbagai keperluan seperti pendidikan, hiburan, informasi, dan periklanan. Untuk menghasilkan data audio-visual dengan tampilan yang lebih menarik dapat dilakukan dengan memanipulasi data audio-visual yang diperoleh dari hasil rekaman. Salah satu jenis modifikasi tersebut adalah dengan menggabungkan data audio-visual hasil rekaman tersebut dengan data audiovisual lain yang diperoleh dari hasil animasi komputer.

I-1

Pendahuluan

I-2

Untuk itu kami merancang suatu perangkat lunak komputer yang dapat digunakan untuk menggabungkan dua jenis data audio-visual di atas sehingga menghasilkan satu data audio-visual yang baru. Data audio-visual yang baru ini akan berisikan gambar dan suara yang merupakan gabungan dari gambar dan suara dari kedua data audio-visual masukannya. Semua data audio-visual yang digunakan di sini berbentuk digital dan disimpan dalam file dengan format AVI.

1.2 PERMASALAHAN Dalam penyelesaian tugas akhir ini dapat dirumuskan beberapa permasalahan yang dihadapi, yaitu: 

Dua buah file berformat AVI berperan sebagai masukan, dimana salah satu file digunakan sebagai video latar belakang yang untuk selanjutnya disebut juga dengan file AVI background, sedangkan file yang satu lagi sebagai video latar depan yang untuk selanjutnya disebut juga dengan file AVI foreground.



File AVI terdiri dari bagian yang berupa data video dan data audio. Data video tersusun dari kumpulan sejumlah frame atau gambar diam dengan ukuran yang sama, dan setiap frame merupakan suatu bitmap yang tersusun dari sejumlah pixel. Masing-masing dari pixel tersebut memiliki harga tertentu yang akan menentukan warna dari pixel itu. Sedangkan data audio di dalam file AVI tersusun dari sampel-sampel sinyal digital di mana setiap sampel memiliki harga tertentu yang

Pendahuluan

I-3

sebanding dengan harga sinyal pada saat dilakukan pengambilan sampel suara tersebut. 

Menggabungkan file AVI background dan file AVI foreground. Hal ini dilakukan dengan cara membuka file AVI dan mengambil bagianbagian dari masing-masing file AVI, yaitu bagian video dan bagian audio. Bagian video dari AVI background akan digabungkan dengan bagian video dari AVI foreground, sedangkan bagian audio dari AVI background digabungkan dengan bagian audio dari AVI foreground, untuk kemudian hasil gabungan bagian video dengan hasil gabungan bagian audio tadi akan disimpan bersama-sama di dalam satu file untuk membentuk sebuah file AVI yang baru.



Penggabungan bagian video dilakukan untuk setiap frame dari AVI background dengan setiap frame dari AVI foreground. Penggabungan frame video ini menggunakan metode chromakey.



Penggabungan bagian audio dilakukan untuk setiap sampel audio dari AVI background maupun AVI foreground sehingga menghasilkan sampel audio yang baru sebagai keluarannya.

1.3 TUJUAN Tujuan dari tugas akhir ini adalah merencanakan dan membuat suatu perangkat lunak yang dapat digunakan untuk menggabungkan data audio-visual hasil rekaman dengan data audio-visual hasil animasi komputer, sehingga

Pendahuluan

I-4

menghasilkan data audio-visual baru yang lebih menarik. Semua data audio-visual yang digunakan di sini tersimpan dalam bentuk file berformat AVI.

1.4 METODOLOGI Untuk mencapai tujuan diatas, dilakukan langkah-langkah sebagai berikut: •

Pengumpulan bahan-bahan referensi, yang meliputi referensi bahasa pemrograman yang digunakan, dalam hal ini bahasa Delphi (Borland Delphi 2.0), referensi mengenai format file AVI, format data bitmap, format data audio, teknik pemrograman multimedia, serta beberapa referensi lainnya yang menunjang pencapaian tujuan tersebut.



Perencanaan dan pembuatan perangkat lunak untuk menggabungkan file AVI hasil rekaman dengan file AVI hasil animasi komputer. Penggabungan untuk bagian audio dilakukan secara terpisah dengan penggabungan untuk bagian video untuk selanjutnya hasil kedua penggabungan tersebut disimpan bersama-sama ke dalam satu file berformat AVI.



Uji coba dan perbaikan pada perangkat lunak yang dibuat.



Penulisan laporan tugas akhir.

1.5 BATASAN MASALAH Batasan masalah dari tugas akhir ini adalah perencanaan dan pembuatan perangkat lunak dengan kemampuan sebagai berikut:

Pendahuluan



I-5

Menggabungkan file AVI hasil rekaman dengan file AVI hasil animasi komputer dan menghasilkan file AVI yang baru sebagai hasil gabungannya.



Sistem operasi yang digunakan adalah Windows 95.



Kedua file AVI masukan yang digunakan sebagai AVI background maupun AVI foreground memiliki format video dan audio yang sama, yaitu: •

untuk bagian video: berukuran 320 x 240 pixel, laju frame 15 frame/detik, dan resolusi warna 16 bit/pixel.



untuk bagian audio: format PCM 8-bit, 1 kanal, dan laju sampel 22050 Hz.



Keluaran yang diperoleh merupakan file AVI baru dengan format video dan audio yang sama dengan file AVI masukannya.

I.6 SISTEMATIKA PENULISAN Sistematika penulisan laporan tugas akhir ini dibagi dalam lima bab, masing-masing bab diuraikan sebagi berikut: •

BAB I merupakan

pendahuluan yang berisi latar belakang,

permasalahan, tujuan, metodologi, batasan masalah, dan sistematika penulisan. •

BAB II berisi teori-teori penunjang yang membahas tentang struktur data, format file data multimedia, model warna, dan teknik pemrograman multimedia.

Pendahuluan



I-6

BAB III berisi uraian tentang perencanaan dan pembuatan perangkat lunak.



BAB IV berisi uraian tentang cara pengoperasian perangkat lunak yang telah dibuat.



BAB V berisi kesimpulan dan saran.

BAB II TEORI PENUNJANG

Pada bagian ini akan dibahas teori-teori yang menunjang dan digunakan di dalam perencanaan dan pembuatan perangkat lunak. Teori penunjang yang dipakai meliputi: •

Citra Digital



Video Digital



Audio Digital



Format Data Multimedia



Model Warna



Pemrograman Multimedia pada Windows

2.1 CITRA DIGITAL Untuk menyatakan citra (image) secara matematis, dapat didefinisikan fungsi f(x,y) di mana x dan y menyatakan suatu posisi dalam koordinat dua dimensi dan harga f pada titik (x,y) adalah harga yang menunjukkan warna citra pada titik tersebut1. Citra digital adalah citra yang dinyatakan secara diskrit (tidak kontinyu), baik untuk posisi koordinatnya maupun warnanya. Dengan demikian, citra digital dapat digambarkan sebagai suatu matriks, di mana indeks baris dan indeks kolom

1

Rafael C Gonzales, Digital Image Processing, Addison-Wesley Publishing, hal.6

II-1

Teori Penunjang

II-2

dari matriks menyatakan posisi suatu titik di dalam citra dan harga dari elemen matriks menyatakan warna citra pada titik tersebut. Dalam citra digital yang dinyatakan sebagai susunan matriks seperti ini, elemen-elemen matriks tadi disebut juga dengan istilah pixel yang berasal dari kata picture element. Untuk mendapatkan suatu citra digital, dapat digunakan alat yang memiliki kemampuan untuk mengubah sinyal yang diterima oleh sensor citra menjadi bentuk digital, misalnya dengan menggunakan kamera digital atau scanner. Cara yang lain adalah dengan menggunakan ADC (Analog-to-Digital Converter) untuk mengubah sinyal analog yang dihasilkan oleh keluaran sensor citra menjadi sinyal digital, misalnya dengan menggunakan perangkat keras video capture yang dapat mengubah sinyal video analog menjadi citra digital.

Format Penyimpanan Citra Digital Untuk menyimpan citra digital ke dalam suatu file, dapat digunakan bermacam-macam format. Secara garis besar, format dari citra digital dapat dikelompokkan menjadi dua, yaitu bitmap dan vector.

Format Bitmap Pada format bitmap, citra disimpan sebagai suatu matriks di mana masingmasing elemennya digunakan untuk menyimpan informasi warna untuk setiap pixel. Jumlah warna yang dapat disimpan ditentukan dengan satuan bit-per-pixel. Semakin besar ukuran bit-per-pixel dari suatu bitmap, semakin banyak pula jumlah warna yang dapat disimpan.

Teori Penunjang

II-3

Format bitmap ini cocok digunakan untuk menyimpan citra digital yang memiliki banyak variasi dalam bentuknya maupun warnanya, seperti foto, lukisan, dan frame video. Format file yang menggunakan format bitmap ini antara lain adalah BMP, DIB, PCX, GIF, dan JPG. Format yang menjadi standar dalam sistem operasi Microsoft Windows adalah format bitmap BMP atau DIB. Kelebihan dari format DIB ini adalah bersifat fleksibel karena dapat digunakan untuk menyimpan citra dengan 1, 4, 8, 16, dan 24 bit-per-pixel. Di samping itu, proses untuk membaca informasi warna pixel di dalam format DIB lebih mudah dan dapat dilakukan secara cepat. Format yang lain seperti JPG dan GIF memiliki kelebihan dalam hal ukuran file yang kecil karena citra digital disimpan dalam bentuk terkompresi.

Format Vector Pada format vector, citra disimpan sebagai sekumpulan bentuk-bentuk tertentu seperti garis, kurva, kotak, poligon, dan lingkaran yang dapat juga memiliki warna. Data yang tersimpan di dalam file format vector ini berupa kodekode yang menunjukkan suatu bentuk dengan posisinya, dimensinya, dan warnanya. Format ini cocok digunakan untuk menyimpan citra yang banyak mengandung garis dan kurva, misalnya gambar teknik, diagram blok, dan flowchart. Format file yang menggunakan format vector ini antara lain adalah DWG, DXF (AutoCAD), dan CDR (CorelDraw). Kelebihan dari format vector ini adalah kebutuhan kapasitas untuk menyimpannya lebih kecil dibandingkan jika disimpan dengan format bitmap.

Teori Penunjang

II-4

2.2 VIDEO DIGITAL Untuk memahami tentang video digital, harus dipahami dulu pengertian mengenai video itu sendiri. Video di sini didefinisikan sebagai sekumpulan gambar bergerak yang diperoleh dari hasil rekaman kamera atau hasil animasi komputer. Pada mulanya informasi video ini disimpan secara analog, sebagai perubahan bentuk gelombang secara kontinyu yang mewakili adanya perubahan warna dan kecerahan (brightness) dari gambar yang direkam. Di sisi lain, komputer digital hanya dapat menyimpan dan mengolah data yang bersifat biner. Untuk itu di kalangan industri komputer didefinisikan warna dalam besaran 24-bit yang dapat digunakan untuk menyimpan sekitar 16,7 juta kemungkinan warna yang berbeda. Dengan demikian data video dapat disimpan secara digital sebagai titik-titik yang masing-masing memiliki warna tertentu dan titik-titik tersebut jika disusun sebagai satu kesatuan akan membentuk suatu gambar secara utuh. Kemajuan teknologi yang dicapai pada saat ini telah memungkinkan komputer pribadi (PC) memiliki kemampuan untuk menampilkan informasi berupa video yang berisi gambar bergerak beserta suaranya. Untuk menyimpan data video secara digital, telah diciptakan berbagai format penyimpanan dan metode kompresi-dekompresi. Perangkat lunak yang digunakan untuk melakukan kompresi dan dekompresi terhadap data video digital dengan menggunakan teknik tertentu disebut juga dengan codec yang merupakan singkatan dari compressor-decompressor. Sampai saat ini masih dilakukan berbagai penelitian untuk menemukan format yang dapat digunakan untuk menyimpan data video digital dengan seefisien mungkin. Di antara format video

Teori Penunjang

II-5

digital yang populer dan banyak digunakan pada saat ini adalah: AVI, QuickTime, Indeo, Cinepak, dan MPEG.

AVI AVI adalah format video digital yang paling banyak digunakan dalam komputer pribadi PC yang menggunakan sistem operasi Windows. Format AVI ini diciptakan oleh Microsoft Corporation. Microsoft merancang format file AVI ini secara fleksibel sehingga dapat menyimpan data video yang dikompresi dan didekompresi dengan menggunakan codec yang dibuat oleh pihak lain seperti Indeo dan Cinepak.

QuickTime QuickTime adalah format penyimpanan video digital yang diciptakan oleh Apple Computer. Format video QuickTime ini pada awalnya dirancang khusus untuk digunakan pada komputer Apple Macintosh tanpa harus menambahkan perangkat keras khusus. Apple Computer dalam merancang arsitektur QuickTime bersifat terbuka sehingga dapat digunakan codec dari pihak lain seperti Indeo dan Cinepak. Bahkan pada saat ini telah dibuat versi QuickTime yang dapat digunakan pada sistem operasi Microsoft Windows.

Indeo Indeo adalah format video digital dari Intel Corporation yang dirancang untuk dapat dijalankan pada komputer dengan prosesor kelas 486 dan Pentium

Teori Penunjang

II-6

tanpa harus menambahkan perangkat keras khusus. Format Indeo ini dirancang untuk dapat digunakan pada berbagai platform dan didukung penggunaannya pada Microsoft Windows, IBM OS/2, dan Apple QuickTime. Cinepak Cinepak adalah format penyimpanan video digital dari Radius Inc yang dirancang untuk dapat digunakan pada komputer dengan prosesor Intel 386-20 MHz tanpa memerlukan perangkat keras tambahan. Format Cinepak ini juga didukung oleh Microsoft Windows dan Apple QuickTime.

MPEG MPEG yang merupakan singkatan dari Moving Picture Expert Group didefinisikan oleh ISO (International Standard Organization) dan dirancang untuk menyimpan data video digital dengan kualitas tinggi. Standar yang pertama adalah MPEG-1 dengan resolusi 352 x 240 pixel dengan laju frame 30 frame/detik. Dengan standar MPEG-1 ini, data video dan audio sepanjang 70 menit dapat disimpan di dalam sebuah CD-ROM. Standar yang lebih baru adalah MPEG-2 yang mendukung resolusi 704 x 480 pixel dan laju frame 30 frame/detik. Standar ini dirancang untuk digunakan oleh kalangan pemakai video profesional serta kalangan pertelevisian dan perfilman. Standar MPEG-2 bersifat kompatibel dengan MPEG-1, yang artinya bahwa perangkat keras yang dirancang untuk menangani format MPEG-2 akan dapat juga menangani format MPEG-1.

Teori Penunjang

II-7

Salah satu kelemahan dari format MPEG ini adalah diperlukannya perangkat keras tambahan untuk dapat memainkannya pada komputer dengan prosesor yang berkelas di bawah Pentium. Namun demikian dengan semakin meningkatnya kemampuan komputer yang digunakan oleh masyarakat luas, standar MPEG ini akan semakin banyak digunakan.

2.3 AUDIO DIGITAL Agar komputer dapat digunakan untuk memanipulasi suara, maka sinyal suara harus dikonversi ke dalam bentuk digital. Mula-mula, konversi dari sinyal audio analog ke digital dilakukan dengan melakukan proses sampling, yaitu mengambil harga sinyal setiap periode waktu tertentu, mengkonversikan harga tersebut ke dalam skala yang sesuai, dan menyimpan hasilnya. Sebagai contoh, sinyal audio yang memiliki frekuensi sampling 22050 Hz, berarti dalam satu detik dilakukan proses sampling sebanyak 22050 kali. Frekuensi sampling yang digunakan untuk mengkonversi sinyal audio analog dan digital dapat diatur sesuai dengan kebutuhan. Semakin tinggi frekuensi sampling yang digunakan, semakin bagus kualitas yang didapatkan, namun semakin besar kapasitas media penyimpan yang dibutuhkan. Sebagai gambaran, sistem telepon digital kebanyakan menggunakan frekuensi sampling 8 kHz karena sudah cukup memadai untuk merekam suara pembicaraan manusia, sedangkan perekaman musik pada CD (compact disk) dan DAT (digital audio tape) menggunakan frekuensi sampling 44 kHz guna memperoleh kualitas rekaman yang tinggi.

Teori Penunjang

II-8

Salah satu perusahaan yang mempelopori pemanfaatan komputer untuk mengolah sinyal audio digital adalah Apple dengan produknya Macintosh. Tetapi pada saat ini komputer kompatibel IBM PC berbasis prosesor Intel juga dapat memiliki kemampuan untuk mengolah sinyal audio digital dengan menambahkan perangkat keras sound card seperti SoundBlaster, misalnya. Di antara format audio digital yang populer adalah: Mac .snd, SoundBlaster .voc, RIFF .wav, dan Sun .au, dan SGI .aiff.

2.4 FORMAT DATA MULTIMEDIA PADA WINDOWS Aplikasi multimedia ialah suatu aplikasi yang di dalamnya mengandung informasi berupa suara, video, atau keduanya. Aplikasi multimedia memiliki kelebihan di dalam memberikan informasi jika dibandingkan dengan media cetak atau media audio-video standar seperti televisi, kaset, dan radio. Pada bahan media cetak, informasi yang disajikan hanya berisikan sekumpulan gambar dan tulisan yang bersifat statis. Sedangkan dibandingkan dengan peralatan audio-video standar, aplikasi multimedia memiliki kelebihan karena bersifat lebih interaktif, yaitu memungkinkan pemakai untuk berinteraksi dua arah secara aktif dengan komputer untuk memperoleh informasi yang dikehendakinya. Contoh dari penerapan aplikasi multimedia antara lain: -

Pemasaran apartemen, rumah, dan sebagainya

-

Program-program pendidikan

-

Membuat presentasi yang menarik

-

Ensiklopedi / referensi interaktif

Teori Penunjang

II-9

Secara umum, di dalam sistem operasi Microsoft Windows terdapat tiga jenis format data multimedia yang ditetapkan sebagai standar, yaitu: MIDI, waveform audio, dan video.

MIDI Data suara MIDI merupakan sekumpulan instruksi untuk memainkan alat musik tertentu dengan nada dan tempo tertentu. Instruksi-instruksi ini akan diterjemahkan oleh suatu synthesizer, yang biasanya merupakan bagian dari sound card, sehingga dapat menghasilkan suara. Format data MIDI ini hanya cocok digunakan untuk menyimpan nada-nada musik dan efek-efek suara, tetapi tidak praktis jika digunakan untuk menyimpan suara yang bersifat acak, seperti suara manusia. File berformat MIDI ini memiliki ekstensi .MID.

Waveform Audio Waveform audio adalah suara hasil rekaman langsung yang dikonversi menjadi sinyal digital. Format data waveform audio ini dapat digunakan untuk menyimpan suara manusia, musik, dan suara apa saja yang dapat direkam. Dengan format data ini dapat diperoleh suara dengan kualitas yang bagus dan mendekati suara aslinya. File dengan format waveform audio ini memiliki ekstensi .WAV.

Teori Penunjang

II-10

Video Data video ialah data yang terdiri dari data waveform audio dan gambar bergerak. Gambar bergerak ini sesungguhnya merupakan kumpulan dari sejumlah gambar-gambar diam yang direkam dan disimpan secara berurutan. File dengan format video ini memiliki ekstensi .AVI.

2.4.1 Format File AVI Format file AVI didefinisikan oleh Microsoft Corporation. AVI merupakan singkatan dari Audio Video Interleaved yang berarti bahwa data yang terdapat di dalam file AVI merupakan data audio dan data video yang disimpan untuk dimainkan secara berselingan antara audio dengan videonya sehingga gambar video yang dijalankan akan tampak secara bersamaan dengan suara dari audionya. File AVI memiliki beberapa karakteristik yang penting untuk diperhatikan. Karakteristik yang penting ini meliputi: 

Ukuran lebar dan tinggi dari gambar video dalam satuan pixel. Semakin besar ukuran gambar yang digunakan, akan semakin besar pula kapasitas yang dibutuhkan oleh media penyimpannya. Ukuran yang digunakan umumnya memiliki perbandingan lebar dibanding tinggi sebesar 4 : 3, misalnya: 160 x 120, 240 x 180, dan 320 x 240.



Laju frame (frame rate) dari stream video dalam satuan frame per detik (fps). Semakin tinggi laju frame yang digunakan, semakin halus dan semakin alami gambar yang dihasilkan, namun semakin besar pula

Teori Penunjang

II-11

kapasitas yang dibutuhkan oleh media penyimpannya. Laju frame yang umum digunakan adalah 10, 12, 15, 24, 25, dan 30 fps. 

Resolusi warna dari stream video dalam satuan bit per pixel (bpp). Semakin tinggi resolusi warna, semakin bagus gambar yang dihasilkan, namun semakin besar pula kapasitas yang dibutuhkan oleh media penyimpannya. Resolusi yang umum digunakan adalah 4 bpp, 8 bpp, 16 bpp, dan 24 bpp.



Ukuran sampel dari stream audio dalam satuan bit. Ukuran sampel yang umum digunakan adalah 8-bit dan 16-bit. Semakin tinggi ukuran sampel, semakin tinggi pula kualitas suara yang dihasilkan, namun semakin

besar

pula

kapasitas

yang

dibutuhkan

oleh

media

penyimpannya. 

Laju sampel (sample rate) dari stream audio dalam satuan Hz. Laju sampel yang umum digunakan adalah 11025 Hz, 22050 Hz, dan 44100 Hz. Semakin tinggi laju sampel, semakin bagus kualitas suara yang dihasilkan, namun semakin besar pula kapasitas yang dibutuhkan oleh media penyimpannya.



Jumlah kanal dari stream audio. Untuk audio mono menggunakan 1 kanal, sedangkan untuk stereo menggunakan 2 kanal.

Spesifikasi format file AVI mengikuti spesifikasi format file RIFF yang juga didefinisikan oleh Microsoft.

Teori Penunjang

II-12

Format File RIFF RIFF merupakan singkatan dari Resource Interchange File Format, yaitu format file yang dirancang untuk dapat menyimpan data multimedia secara umum. Kelebihan dari format RIFF adalah sifatnya yang fleksibel dan dapat menyesuaikan jika nantinya terjadi perubahan format data atau penambahan jenis format data yang baru. Format file RIFF ini sangat sesuai digunakan untuk menyimpan, memainkan, dan memindahkan data multimedia antara aplikasi maupun platform yang berbeda. File RIFF tersusun dari blok-blok data yang disebut dengan chunk. Setiap chunk dapat didefinisikan sebagai berikut:

typedef DWORD FOURCC; typedef FOURCC CKID; typedef DWORD CKSIZE; typedef struct { CKID ckID; CKSIZE ckSize; BYTE ckData[ckSize]; } CK;

Penjelasan mengenai bagian-bagian dari suatu chunk dapat dilihat pada tabel 2.1. Type data FOURCC berukuran 4 byte dan tersusun dari sederetan karakter ASCII sepanjang satu sampai dengan empat karakter. Jika jumlah karakter kurang dari empat, maka sisanya harus diisi dengan karakter spasi.

Teori Penunjang

II-13

Selain file AVI, file yang juga menggunakan format RIFF antara lain adalah file .WAV (waveform audio) dan file .RMI (MIDI sequence). Suatu file RIFF tersusun dari: 1. Header 'RIFF' [4 byte ukuran file] 'xxxx' , di mana 'xxxx' menunjukkan identitas format dari RIFF. 2. Chunk [4 byte identitas chunk] [4 byte ukuran chunk] 3. 'LIST' [4 byte ukuran list] [4 byte identitas list] [data], di mana data dapat tersusun dari list atau chunk yang lain. Chunk LIST adalah chunk yang dapat memiliki subchunk berupa chunk-chunk yang lain..

Tabel 2.1 Field-field pada struktur chunk file RIFF Field

Keterangan

ckId

Kode 4 karakter yang menunjukkan identitas dari chunk. Program aplikasi yang tidak mengenali identitas chunk ini dapat melewatinya.

ckSize

Besar ukuran dari chunk, tidak termasuk ukuran dari ckId dan ckSize.

ckData

Berisi data dari chunk dengan besar ukuran sesuai yang ditunjukkan oleh field ckSize.

Teori Penunjang

II-14

Format File AVI Secara umum, file AVI dapat mengandung dua jenis aliran data yang disebut juga dengan stream, yaitu stream audio dan stream video. Meskipun demikian, file AVI bisa juga hanya berisi stream video saja tanpa harus memiliki stream audio. Format RIFF dari file AVI ditandai dengan kode 4 karakter "AVI ". Semua file AVI paling tidak harus memiliki dua buah chunk LIST. Dua chunk LIST ini digunakan untuk menyimpan format dari stream dan isi data dari stream yang terdapat di dalam file. File AVI juga dapat memiliki chunk index. Chunk index ini berisi informasi mengenai lokasi dari chunk-chunk data yang ada di dalam file. Jadi secara umum file AVI memiliki bentuk berikut:

RIFF('AVI ' LIST('hdrl' . . ) LIST('movi' . . ) ['idx1'] )

Chunk "AVI " menunjukkan bahwa file ini adalah file RIFF dengan tipe AVI. Chunk LIST dan chunk index merupakan subchunk dari chunk RIFF "AVI ". Chunk LIST "hdrl" digunakan untuk menyimpan format dari data dan chunk ini merupakan chunk LIST pertama yang harus ada di dalam file AVI. Chunk LIST

Teori Penunjang

II-15

"movi" berisi data yang sesungguhnya di dalam file AVI dan merupakan chunk LIST kedua yang harus ada di dalam file AVI. Chunk "idx1" adalah chunk index yang bersifat optional (tidak harus ada). Di dalam file AVI, urut-urutan dari ketiga chunk ini tidak boleh ditukar-tukar. Chunk LIST "hdrl" dan chunk LIST "movi" menggunakan subchunk untuk menyimpan datanya. Berikut ini adalah contoh file AVI dengan subchunk yang melengkapi chunk LIST "hdrl" dan LIST "movi":

RIFF('AVI ' LIST('hdrl' 'avih'(
) LIST('strl' 'strh'(
) 'strf'() 'strd'(data pelengkap) . . ) . . ) LIST('movi' {Subchunk | LIST('rec ' Subchunk1 Subchunk2 . . ) . . } . .

Teori Penunjang

II-16

) ['idx1'] )

Header Utama File AVI File AVI selalu diawali dengan adanya header utama. Di dalam file AVI, header ini ditunjukkan dengan adanya kode 4 karakter "avih". Header ini berisikan informasi mengenai file tersebut secara umum seperti banyaknya stream yang ada di dalam file tersebut dan lebar serta tinggi dari gambar video yang terkandung. Secara lengkap, header utama memiliki struktur data yang didefinisikan sebagai berikut:

typedef struct { DWORD

dwMicroSecPerFrame;

DWORD

dwMaxBytesPerSec;

DWORD

dwReserved1;

DWORD

dwFlags;

DWORD

dwTotalFrames;

DWORD

dwInitialFrames;

DWORD

dwStreams;

DWORD

dwSuggestedBufferSize;

DWORD

dwWidth;

DWORD

dwHeight;

DWORD

dwScale;

DWORD

dwRate;

DWORD

dwStart;

DWORD

dwLength;

} MainAVIHeader;

Keterangan mengenai field-field dari struktur data MainAVIHeader dapat dilihat pada tabel 2.2.

Teori Penunjang

II-17

Tabel 2.2 Field-field pada struktur data MainAVIHeader Field

Keterangan

dwMicroSecPerFrame

Panjang periode waktu dalam microdetik antara satu frame video dengan frame berikutnya.

dwMaxBytesPerSec

Perkiraan laju data (data rate) maksimum dari file dalam satuan byte per detik.

dwFlags

Berisi flag untuk file tersebut. Flag-flag yang dapat digunakan adalah: AVIF_HASINDEX Menandakan bahwa file AVI ini memiliki chunk "idx1". AVIF_MUSTUSEINDEX Menandakan bahwa index yang ada harus digunakan untuk menentukan urutan dari data yang ada, jadi bukan berdasar urutan data yang ada secara fisik. AVIF_ISINTERLEAVED Menandakan bahwa file AVI ini bersifat interleaved. Data yang bersifat interleaved dapat dibaca dari CDROM secara lebih efisien dibandingkan data yang bersifat non-interleaved. AVIF_WASCAPTUREFILE Menandakan bahwa file ini dialokasikan khusus untuk melakukan capture video. AVIF_COPYRIGHTED Menandakan bahwa file ini mengandung data yang dilindungi hak ciptanya.

dwTotalFrames

Jumlah total frame video yang ada di dalam file.

dwInitialFrames

Banyaknya frame awal yang digunakan untuk file

Teori Penunjang

II-18

interleaved. dwStreams

Menunjukkan banyaknya stream yang ada di dalam file. Sebagai contoh, sebuah file dengan stream audio dan video memiliki dua buah stream.

dwSuggestedBufferSize

Ukuran buffer yang disarankan untuk membaca file. Secara umum, besarnya ukuran ini harus cukup untuk menampung chunk yang terbesar di dalam file. Jika diset terlalu kecil, maka akan menyebabkan program

aplikasi

playernya

harus

melakukan

realokasi memori pada saat melakukan playback sehingga dapat mengganggu kelancaran proses playback. dwWidth dan dwHeight

Lebar dan tinggi frame video dalam satuan pixel.

dwScale dan dwRate

Digunakan untuk menentukan skala waktu yang digunakan file ini secara keseluruhan. Di samping skala waktu keseluruhan ini, setiap stream yang ada dapat memiliki skala waktunya sendiri. Skala waktu dalam sample per detik diperoleh dengan membagi dwRate dengan dwScale.

dwStart dan dwLength

Menunjukkan waktu awal dari file serta panjang dari file.

Header Stream Header utama file AVI diikuti dengan satu atau lebih chunk "strl". Setiap stream yang ada akan memiliki satu chunk "strl". Chunk ini berisi informasi mengenai stream tersebut di dalam file AVI. Setiap chunk "strl" di dalamnya

Teori Penunjang

II-19

harus berisi chunk header stream dan chunk format stream. Chunk header stream memiliki kode 4 karakter "strh", sedangkan chunk format stream memiliki kode 4 karakter "strf". Sebagai tambahan, chunk "strl" ini dapat juga berisi chunk data stream yang memiliki kode 4 karakter "strd". Header stream memiliki struktur data yang didefinisikan sebagai berikut:

typedef struct { FOURCC

fccType;

FOURCC

fccHandler;

DWORD

dwFlags;

DWORD

dwReserved1;

DWORD

dwInitialFrames;

DWORD

dwScale;

DWORD

dwRate;

DWORD

dwStart;

DWORD

dwLength;

DWORD

dwSuggestedBufferSize;

DWORD

dwQuality;

DWORD

dwSampleSize;

} AVIStreamHeader;

Keterangan mengenai field-field dari struktur data AVIStreamHeader ini dapat dilihat pada tabel 2.3.

Teori Penunjang

II-20

Tabel 2.3 Field-field pada struktur data AVIStreamHeader Field

Keterangan

fccType

Menunjukkan type data yang ada di dalam stream, yaitu audio atau video. Untuk data video fccType bernilai "vids", sedangkan untuk audio bernilai "auds".

fccHandler

Kode

4

karakter

yang

menunjukkan

type

dari

compressor dan decompressor yang digunakan oleh data pada stream tersebut. dwFlags

Berisi flag untuk stream tersebut. Flag-flag yang dapat digunakan adalah: AVISF_DISABLED Menunjukkan bahwa data dari stream hendaknya hanya ditampilkan jika dinyatakan secara eksplisit oleh user. AVISF_VIDEO_PALCHANGES Menunjukkan bahwa terdapat perubahan palette di dalam file ini.

dwInitialFrames

Menunjukkan banyaknya frame sebelum frame awal untuk file interleaved.

dwScale dan dwRate

Digunakan untuk menentukan skala waktu yang digunakan stream ini. Skala waktu ini memiliki satuan sample per detik dan diperoleh dari hasil bagi antara dwRate dengan dwScale.

dwStart dan dwLength

Menunjukkan waktu awal dari stream serta panjang dari stream.

dwSuggestedBufferSize

Ukuran buffer yang disarankan untuk membaca file ini. Secara umum, besarnya ukuran ini harus cukup untuk menampung chunk yang terbesar di dalam file ini. Jika

Teori Penunjang

II-21

diset terlalu kecil, maka akan menyebabkan perangkat lunak playernya harus melakukan realokasi memori pada

saat

melakukan

playback

sehingga

dapat

mengganggu kelancaran proses playback. dwQuality

Menunjukkan tingkat kualitas dari stream.

dwSampleSize

Besarnya ukuran dari setiap sampel.

Beberapa field dari struktur header stream juga terdapat di dalam struktur header utama. Data pada struktur header utama berlaku untuk seluruh file, sedangkan data pada struktur header stream hanya berlaku untuk stream itu sendiri. Chunk format stream ("strf") harus terletak pada posisi setelah chunk header stream ("strh"). Chunk format stream menggambarkan format data yang ada di dalam stream. Untuk stream video, informasi ini merupakan struktur data BITMAPINFO, sedangkan untuk stream audio, informasi ini berupa struktur data WAVEFORMATEX atau PCMWAVEFORMAT. Jika terdapat chunk data stream ("strd"), maka chunk ini terletak pada posisi setelah chunk format stream ("strf"). Format dan isi dari chunk ini dapat bervariasi, tergantung pada driver codec (compressor-decompressor) yang digunakan. Umumnya, informasi yang ada di sini digunakan oleh driver codec untuk keperluan konfigurasi. Untuk membuat program aplikasi yang membaca dan menulis file AVI, pembuat program aplikasi tidak memerlukan isi informasi ini secara detil.

Teori Penunjang

II-22

Suatu player AVI akan mengasosiasikan header stream yang ada di dalam chunk LIST "hdrl" dengan data stream yang ada di dalam chunk LIST "movi" berdasarkan urutan posisi dari chunk "strl". Chunk "strl" yang pertama digunakan untuk stream 0, chunk "strl" yang kedua untuk stream 1, dan seterusnya. Sebagai contoh, jika chunk "strl" yang pertama berisi informasi mengenai format data wave audio, maka data wave audio tersebut terdapat pada stream 0. Dan jika chunk "strl" yang kedua berisi informasi mengenai data video, maka data video tersebut terdapat pada stream 1.

Chunk "movi" Setelah chunk yang berisi informasi mengenai header dari stream, maka terdapat chunk "movi" yang berisi data yang sesungguhnya untuk tiap-tiap stream, yaitu data yang berisi gambar dan suara itu sendiri. Chunk-chunk data dapat diletakkan secara langsung di dalam chunk "movi", atau dapat juga dikelompokkan dalam chunk-chunk "rec ". Pengelompokan dalam chunk "rec " menunjukkan bahwa sekelompok chunk tersebut hendaknya dibaca dari disk dalam satu kali pembacaan secara sekaligus. Hal ini hanya digunakan untuk file yang dirancang untuk dimainkan secara interleaved dari CD-ROM. Chunk data mengandung kode 4 karakter untuk menunjukkan type dari chunk tersebut. Kode 4 karakter yang menandai setiap chunk terdiri dari dua karakter yang menunjukkan nomor urutan stream dan dua karakter kode yang menunjukkan jenis informasi yang terkandung di dalam chunk tersebut. Sebagai contoh, chunk yang berisi waveform audio memiliki kode "wb" (singkatan dari

Teori Penunjang

II-23

wave bits). Sebagai contoh, jika chunk waveform audio ini memiliki header stream yang berada di urutan pertama di dalam chunk "hdrl", maka chunk data ini akan memiliki kode 4 karakter "00wb". Karena semua informasi mengenai format data telah tercantum di dalam chunk header stream, maka chunk yang berisi data audio ini tidak lagi mengandung informasi mengenai format data audio tersebut. Chunk data audio memiliki format sebagai berikut:

WAVE

Bytes

'##wb'

BYTE

abBytes[];

di mana ## menunjukkan nomor urut dari header stream di dalam file AVI (00, 01, 02, dan seterusnya). Data video dapat berupa DIB terkompresi atau DIB non-kompresi. DIB non-kompresi ditandai dengan adanya nilai BI_RGB pada field biCompression di dalam struktur BITMAPINFO. Sedangkan DIB terkompresi memiliki nilai selain BI_RGB pada field biCompression. Chunk data untuk DIB non-kompresi mengandung data video berupa pixel dengan nilai RGB. Chunk ini ditandai dengan kode 2 karakter "db" (singkatan dari DIB bits). Sedangkan kode 2 karakter untuk DIB terkompresi adalah "dc" (singkatan dari DIB compressed). Chunk untuk data ini tidak lagi mengandung informasi header mengenai DIB. Jadi chunk data untuk DIB non-kompresi memiliki format sebagai berikut:

DIB Bits BYTE

'##db' abBits[];

Teori Penunjang

II-24

Sedangkan chunk data untuk DIB terkompresi memiliki format sebagai berikut:

Compressed DIB BYTE

'##dc'

abBits[];

Chunk "idx1" File AVI juga dapat memiliki chunk index yang terletak setelah chunk "movi". Chunk index ini berisi daftar chunk data dengan lokasi dari masingmasing chunk data tersebut di dalam file. Hal ini memungkinkan dilakukannya akses data di dalam file secara random dengan lebih efisien, karena dengan demikian program aplikasi tidak perlu membaca seluruh chunk data yang ada secara berurutan satu per satu. Chunk index menggunakan kode 4 karakter "idx1", dan untuk setiap entry dari index didefinisikan struktur data sebagai berikut:

typedef struct { DWORD

ckid;

DWORD

dwFlags;

DWORD

dwChunkOffset;

DWORD

dwChunkLength;

} AVIIndexEntry;

Keterangan mengenai field-field dari struktur AVIINDEXENTRY ini dapat dilihat pada tabel 2.4. Struktur data AVIINDEXENTRY ini akan dicantumkan di dalam file AVI secara berulang untuk setiap chunk data yang ada.

Teori Penunjang

II-25

Tabel 2.4 Field-field pada struktur data AVIINDEXENTRY Field

Keterangan

ckId

Kode 4 karakter yang menunjukkan type dari chunk data, misalnya "00wb", "01db", dan sebagainya.

dwFlags

Menunjukkan flag untuk data. Flag-flag yang dapat digunakan adalah: AVIIF_KEYFRAME Menunjukkan bahwa data ini merupakan key frame. Jika suatu frame merupakan key frame maka frame ini tidak memerlukan informasi dari frame sebelumnya.

dwChunkOffset

Menunjukkan posisi dari chunk tersebut di dalam file.

dwChunkLength

Menunjukkan besar ukuran dari chunk tersebut dalam byte, tidak termasuk delapan byte yang digunakan untuk header RIFF.

2.4.2 Format Data Bitmap Informasi video yang ada di dalam file AVI sesungguhnya berisi sekumpulan gambar diam yang masing-masing merupakan suatu DIB (device independent bitmap), yang untuk selanjutnya di sini disebut sebagai bitmap. Bitmap adalah suatu gambar yang disimpan secara digital sebagai kumpulan dari titik-titik yang masing-masing memiliki warna tertentu dan membentuk satu kesatuan. Gambar yang tersimpan sebagai bitmap ini memiliki bentuk persegi panjang sehingga mempunyai dimensi lebar dan tinggi.

Teori Penunjang

II-26

Karakteristik lain dari bitmap yang juga penting adalah jumlah warna yang dapat disimpan dalam bitmap tersebut. Ini ditentukan oleh banyaknya bit yang digunakan untuk menyimpan setiap titik dari bitmap yang menggunakan satuan bpp (bit per pixel). Dalam Windows dikenal bitmap dengan 1, 4, 8, 16, dan 24 bit per pixel. Jumlah warna maksimum yang dapat disimpan dalam suatu bitmap adalah sebanyak 2n, di mana n adalah banyaknya bit yang digunakan untuk menyimpan satu titik dari bitmap. Berikut ini tabel yang menunjukkan hubungan antara banyaknya bit per pixel dengan jumlah warna maksimum yang dapat disimpan dalam bitmap. Tabel 2.5 Hubungan antara bit per pixel dengan jumlah warna maksimum pada bitmap Jumlah bit per pixel 1 4 8 16 24

Jumlah warna maksimum 2 16 256 65536 16777216

Sebagaimana telah disebutkan sebelumnya, format dari bitmap ini dinyatakan dalam struktur data BITMAPINFO. Struktur dari BITMAPINFO adalah sebagai berikut:

typedef struct tagBITMAPINFO {

/* bmi */

BITMAPINFOHEADER

bmiHeader;

RGBQUAD

bmiColors[1];

} BITMAPINFO;

Teori Penunjang

II-27

Field bmiHeader berisi struktur data BITMAPINFOHEADER yang berisi informasi mengenai ukuran dan format warna dari bitmap. Field bmiColors berisi array dari struktur data RGBQUAD yang mendefinisikan warna dari bitmap. Adapun struktur dari BITMAPINFOHEADER didefinisikan sebagai berikut:

typedef struct tagBITMAPINFOHEADER { DWORD

biSize;

LONG

biWidth;

LONG

biHeight;

WORD

biPlanes;

WORD

biBitCount;

DWORD

biCompression;

DWORD

biSizeImage;

LONG

biXPelsPerMeter;

LONG

biYPelsPerMeter;

DWORD

biClrUsed;

DWORD

biClrImportant;

/* bmih */

} BITMAPINFOHEADER;

Keterangan mengenai field-field dari struktur BITMAPINFOHEADER ini dapat dilihat pada tabel 2.6.

Teori Penunjang

II-28

Tabel 2.6 Field-field pada struktur data BITMAPINFOHEADER Field

Keterangan

biSize

Menunjukkan besar ukuran yang dibutuhkan oleh struktur BITMAPINFOHEADER ini dalam byte.

biWidth

Menunjukkan lebar dari bitmap dalam satuan pixel.

biHeight

Menunjukkan tinggi dari bitmap dalam satuan pixel.

biPlanes

Menunjukkan jumlah plane untuk bitmap. Field ini harus selalu diset bernilai 1.

biBitCount

Menunjukkan jumlah bit yang diperlukan untuk satu pixel. Field ini dapat memiliki nilai 1, 4, 8, 16, atau 24.

biCompression

Menunjukkan type kompresi untuk bitmap terkompresi. Field ini dapat bernilai salah satu dari: BI_RGB Bitmap tidak terkompresi. BI_RLE8 Bitmap terkompresi secara RLE dengan 8 bit per pixel. BI_RLE4 Bitmap terkompresi secara RLE dengan 4 bit per pixel.

biSizeImage

Menunjukkan besar ukuran bitmap dalam byte.

biXPelsPerMeter dan

Menunjukkan resolusi horisontal dan vertikal, dalam

biYPelsPerMeter

pixel per meter.

biClrUsed

Menunjukkan

jumlah

warna

yang

sesungguhnya

digunakan di dalam bitmap. biClrImportant

Menunjukkan jumlah warna yang dianggap penting di dalam bitmap. Jika bernilai 0, maka seluruh warna dianggap penting.

Teori Penunjang

II-29

Sedangkan strukur data dari RGBQUAD adalah sebagai berikut:

typedef struct tagRGBQUAD { BYTE

rgbBlue;

BYTE

rgbGreen;

BYTE

rgbRed;

BYTE

rgbReserved;

/* rgbq */

} RGBQUAD;

Field rgbBlue, rgbGreen, dan rgbRed adalah harga masing-masing komponen biru, hijau, dan merah untuk warna.

2.4.3 Format Data Waveform Audio Secara umum data audio digital memiliki karakteristik yang dapat dinyatakan dengan parameter-parameter berikut: •

laju sampel (sampling rate) dalam sampel/detik, misalnya 22050 atau 44100 sampel/detik.



jumlah bit tiap sampel, misalnya 8 atau 16 bit.



jumlah kanal, yaitu 1 untuk mono dan 2 untuk stereo. Parameter-parameter tersebut menyatakan setting yang digunakan oleh

ADC (Analog-to-Digital Converter) pada saat data audio direkam. Biasanya laju sampel juga dinyatakan dengan satuan Hz atau kHz. Sebagai gambaran, data audio digital yang tersimpan dalam CD audio memiliki karakteristik laju sampel 44100 Hz, 16 bit per sampel, dan 2 kanal (stereo), yang berarti setiap satu detik suara tersusun dari 44100 sampel, dan setiap sampel tersimpan dalam data sebesar 16-bit atau 2 byte.

Teori Penunjang

II-30

Laju sampel selalu dinyatakan untuk setiap satu kanal. Jadi misalkan suatu data audio digital memiliki 2 kanal dengan laju sampel 8000 sampel/detik, maka sesungguhnya di dalam setiap detiknya akan terdapat 16000 sampel. Sebagaimana telah dijelaskan sebelumnya bahwa untuk stream data audio menggunakan header berupa struktur PCMWAVEFORMAT. PCM merupakan singkatan dari Pulse Coded Modulation, yaitu suatu metode yang digunakan untuk mengkonversikan sinyal audio dari bentuk analog ke bentuk digital.. Adapun struktur dari PCMWAVEFORMAT adalah sebagai berikut:

typedef struct { WAVEFORMAT wf; WORD

wBitsPerSample;

} PCMWAVEFORMAT;

Field wf merupakan struktur WAVEFORMAT yang berisi keterangan umum mengenai format data audio. Field wBitsPerSample menunjukkan banyaknya bit per sample. Adapun struktur data dari WAVEFORMAT adalah sebagai berikut:

typedef struct { WORD

wFormatTag;

WORD

nChannels;

DWORD nSamplesPerSec; DWORD nAvgBytesPerSec; WORD

nBlockAlign;

} WAVEFORMAT;

Teori Penunjang

II-31

Keterangan mengenai field-field dari struktur WAVEFORMAT ini dapat dilihat pada tabel 2.7.

Tabel 2.7 Field-field pada struktur data WAVEFORMAT Field

Keterangan

wFomatTag

Menunjukkan type format data dan memiliki nilai WAVE_FORMAT_PCM.

nChannels

Menunjukkan banyaknya kanal yang ada di dalam data waveform audio. Untuk mono menggunakan satu kanal sedangkan untuk stereo menggunakan dua kanal.

nSamplesPerSec

Menunjukkan besarnya sample rate dalam sample per detik.

nAvgBytesPerSec

Menunjukkan rata-rata laju transfer data, dalam byte per detik. Misalnya untuk PCM 16-bit stereo pada 44.1 kHz, nAvgBytesPerSec bernilai 176400 ( 2 kanal * 2 byte per sample * 44100 ).

nBlockAlign

Menunjukkan banyaknya byte yang digunakan untuk satu buah sample. Misalnya untuk PCM 16-bit mono, nBlockAlign akan bernilai 2.

Teori Penunjang

II-32

2.5 MODEL WARNA Pemodelan warna digunakan untuk menggambarkan sifat-sifat warna secara matematis, sehingga dengan demikian dapat dilakukan pengolahan citra digital dengan cara memanipulasi nilai-nilai warna dari citra tersebut secara matematis. Model warna yang paling banyak digunakan di bidang komputer maupun elektronika adalah model RGB (red-green-blue). Model RGB ini cocok digunakan dalam implementasi perangkat keras elektronik dan penyimpanan data secara digital, namun demikian perubahan nilai yang terjadi pada komponenkomponen warna model RGB ini sulit diikuti oleh kepekaan penglihatan mata manusia. Mata manusia tidak cukup peka untuk dapat membedakan adanya perubahan nilai untuk masing-masing komponen merah, hijau, dan biru. Untuk itu digunakan juga model warna HSL (hue-saturation-luminosity), karena pendekatan dengan model ini lebih sesuai dengan kepekaan penglihatan mata manusia.

2.5.1 Model Warna RGB Di dalam model warna RGB, setiap warna dapat didefinisikan dalam tiga komponen warna yaitu komponen R (merah), G (hijau), dan B (biru). Warnawarna yang lain dapat diperoleh dengan melakukan kombinasi dari masingmasing komponen R, G, dan B dengan nilainya masing-masing. Dalam penerapannya di bidang komputer, harga dari tiap-tiap komponen R, G, dan B berkisar dari 0 sampai 255. Sebagai contoh, warna merah murni memiliki komponen R=255, G=0, B=0, warna hijau murni memiliki harga R=0, G=255,

Teori Penunjang

II-33

B=0, dan seterusnya. Untuk warna hitam memiliki harga R=0, G=0, dan B=0, sedangkan warna putih memiliki harga R=255, G=255, dan B=255. Model warna RGB ini dapat digambarkan sebagai sebuah kubus dalam koordinat Cartesian, di mana masing-masing sumbu mewakili harga dari komponen-komponen R, G, dan B2.

B

Biru

Sian Putih

Magenta

Hijau Hitam Merah

Kuning

R Gambar 2.1 Model Warna RGB

2

ibid hal. 226

G

Teori Penunjang

II-34

Pada kubus warna RGB ini, warna hitam terletak pada sudut kubus di posisi (0, 0, 0), dan warna putih pada posisi (255, 255, 255). Sudut-sudut kubus yang berimpit dengan sumbu-sumbu koordinat ditempati oleh warna-warna merah, hijau, dan biru yang disebut juga dengan warna primer. Sedangkan sudutsudut kubus yang lainnya ditempati oleh warna-warna sian, magenta, dan kuning yang disebut juga dengan warna sekunder.

2.5.2 Model Warna HSL Di dalam model HSL, setiap warna dapat didefinisikan dalam komponen H (Hue), S (Saturation), dan L (Luminosity). Komponen H adalah komponen yang menggambarkan corak dari warna. Komponen H ini merupakan komponen yang sangat menentukan dalam suatu warna, karena harga komponen inilah yang menentukan apakah suatu benda dikatakan berwarna merah, jingga, kuning, hijau, biru, dan sebagainya. Komponen S menunjukkan tingkat kemurnian suatu warna, jadi semakin tinggi nilai S maka warna tersebut semakin murni dan akan semakin tampak cerah, sedangkan semakin rendah nilai S maka warna akan semakin suram dan semakin mendekati abu-abu. Komponen L menunjukkan tingkat keterangan (brightness) suatu warna. Jika nilai L semakin rendah maka warna akan terlihat semakin gelap atau semakin mendekati hitam, sedangkan jika nilai L semakin tinggi maka warna akan terlihat semakin terang atau semakin mendekati putih.

Teori Penunjang

II-35

Model warna HSL ini dapat digambarkan dengan sebuah segitiga yang pada sisi atas dan sisi bawahnya terdapat semacam piramid3. Pada gambar model warna HSL, harga H dari warna P adalah sudut yang terbentuk oleh garis sumbu warna merah terhadap garis yang menghubungkan titik P dengan pusat segitiga. Jadi, warna merah memiliki harga H=0°, warna hijau memiliki harga H=120°, warna biru memiliki harga H=240°.

Putih

Luminocity

Biru

Biru Merah Hijau

H

P

Merah

Hijau

Tampak Atas

Hitam Tampak Samping

Gambar 2.2 Model Warna HSL

3

ibid hal.229

Teori Penunjang

II-36

Harga S dinyatakan sebagai jarak dari pusat segitiga ke titik P. Jadi semakin jauh jarak tersebut, semakin besar pula harga S. Sedangkan harga L adalah jarak dari titik P secara vertikal terhadap puncak limas segitiga bagian bawah. Semakin besar jarak tersebut, harga L akan semakin besar, warna akan semakin terang dan semakin mendekati putih. Pada puncak limas segitiga bagian atas warna akan menjadi putih (harga L maksimum), sedang pada puncak limas bagian bawah warna akan menjadi hitam (harga L minimum).

2.5.3 Konversi Model Warna RGB - HSL Untuk memperoleh harga komponen warna dalam HSL jika kita mengetahui harga komponen warnanya dalam RGB, dapat digunakan rumus sebagai berikut4: 1 L = (R + G + B ) 3

S =1 −

3 [ min( R, G , B)] ( R + G + B)

1   2 [( R − G ) + ( R − B )] H = cos−1  2 1/ 2  [( R − G ) + ( R − B)(G − B)] 

Untuk B > G, maka H = 360° - H.

Pada rumus di atas, diasumsikan bahwa harga R, G, dan B dinormalisasi sehingga memiliki harga di dalam range [0, 1]. Hasil yang diperoleh untuk

4

ibid hal.234

Teori Penunjang

II-37

komponen H, S dan L juga harus berada di dalam range [0, 1]. Untuk itu maka dirumuskan H = H / 360°. Untuk melakukan konversi dari model HSL ke model RGB dapat digunakan rumus berikut5: Untuk 0° < H <= 120°, B = L(1 − S )  S cos H  R = L 1 +   cos( 60°− H ) 

G = L(1 − R − B) Untuk 120° < H <= 240°, H = H - 120°, dan R = L(1 − S )  S cos H  G = L 1 +   cos(60°− H ) 

B = L(1 − R − G ) Untuk 240° < H <= 360°, H = H - 240°, dan G = L(1 − S )  S cos H  B = L 1 +   cos(60°− H ) 

R = L(1 − G − B)

5

ibid hal.236

Teori Penunjang

II-38

2.6 PEMROGRAMAN MULTIMEDIA PADA WINDOWS

Untuk memungkinkan pemrogram menghasilkan perangkat lunak yang kompatibel dan berjalan dengan lancar pada sistem operasi Windows, maka Microsoft menyediakan berbagai fungsi dan struktur data yang dapat digunakan dalam pembuatan program aplikasi. Fungsi-fungsi maupun struktur data yang disediakan oleh sistem operasi ini merupakan bagian inti dari sistem operasi Windows itu sendiri. Fungsi-fungsi dan struktur data ini disebut juga dengan Windows API (Application Programming Interface). Dengan adanya Windows API ini maka pemrogram tidak perlu membuat program yang berbeda untuk digunakan pada perangkat keras yang berbeda. Dengan demikian program aplikasi yang dibuat akan dapat berjalan pada komputer yang konfigurasinya perangkat kerasnya berbeda-beda asalkan sistem operasi yang digunakan sama. Dalam sistem operasi Windows juga dikenal istilah Object dan Handle. Yang dimaksud dengan object adalah suatu struktur internal yang mewakili suatu resource sistem, seperti file, memori, bitmap, layar, atau cursor. Suatu program aplikasi tidak diijinkan melakukan akses secara langsung pada struktur internal atau resource sistem yang diwakili oleh object tadi. Untuk itu program aplikasi harus mendapatkan handle dari object tersebut dan menggunakan handle ini untuk mengakses resource sistem. Sistem operasi Windows menggunakan object dan handle untuk mengatur akses terhadap resource sistem karena dua alasan utama. Yang pertama adalah supaya program aplikasi tidak melakukan akses secara low-level pada struktur

Teori Penunjang

II-39

internal dari resource sistem. Hal ini memungkinkan Microsoft untuk melakukan penambahan atau perubahan fasilitas dari komponen-komponen sistem operasi, dan program aplikasi akan secara otomatis dapat memanfaatkan tambahan fasilitas tadi tanpa harus melakukan perubahan kode dan kompilasi ulang. Alasan yang kedua adalah untuk mengatasi masalah keamanan (security). Karena Windows merupakan sistem operasi yang bersifat multitasking, maka suatu program aplikasi harus dicegah untuk menggunakan resource sistem yang sedang digunakan oleh aplikasi yang lain. Karena itulah, untuk dapat mengakses resource sistem, program aplikasi harus mendapatkan object dan handle melalui fungsifungsi yang disediakan dalam Windows API.

2.6.1 Operasi Bitmap Pada Windows

Dalam pemrograman Windows, bitmap merupakan salah satu objek yang paling sering digunakan. Dari sudut pandang pemakai, bitmap merupakan kumpulan pixel yang membentuk suatu citra. Sedangkan dari sudut pandang pemrogram, bitmap dapat dipandang sebagai suatu struktur yang memiliki elemen-elemen berupa header yang berisi informasi mengenai kedalaman warna bitmap, dimensi bitmap, banyaknya bit yang digunakan oleh bitmap, dan sekumpulan bit-bit yang digunakan untuk menyimpan warna pixel-pixel dari bitmap tersebut. Salah satu fungsi untuk operasi bitmap yang banyak digunakan adalah: int SetDIBitsToDevice(HDC hdc, int XDest, int YDest,

DWORD

dwWidth, DWORD dwHeight, int XSrc, int YSrc, UINT uStartScan, UINT cScanLines, CONST VOID *lpvBits, CONST BITMAPINFO *lpbmi, UINT fuColorUse);

Teori Penunjang

II-40

Fungsi SetDIBitsToDevice() ini digunakan untuk menampilkan bitmap di layar

pada

posisi

yang

diinginkan.

Sebelum

memanggil

fungsi

SetDIBitsToDevice(), harus disiapkan data yang berisi header bitmap tersebut dalam bentuk struktur data BITMAPINFO serta data yang berisi bit-bit untuk menyimpan pixel-pixel dari bitmap tersebut. Untuk mendapatkan informasi warna sebuah pixel dalam suatu bitmap di posisi yang diinginkan dapat digunakan fungsi berikut: COLORREF GetPixel(HDC hdc, int XPos, int nYPos);

Fungsi GetPixel() ini akan mengembalikan nilai dalam struktur data COLORREF, di mana struktur ini merupakan data 32-bit yang mengandung informasi warna RGB dengan bentuk heksadesimal berikut: 0x00bbggrr. Mulai dari byte paling rendah, byte pertama mengandung harga komponen R (merah), byte kedua mengandung komponen G (hijau), dan byte ketiga mengandung komponen B (hijau), sedangkan byte keempat berisi nol. Nilai maksimum untuk setiap komponen warna adalah 0xff atau 255 desimal. Untuk mendapatkan salah satu komponen warna dari struktur data COLORREF tadi dapat digunakan salah satu dari fungsi GetRValue(), GetGValue(), atau GetBValue() yang dideklarasikan sebagai berikut: BYTE GetRValue(DWORD rgb); BYTE GetGValue(DWORD rgb); BYTE GetBValue(DWORD rgb);

Teori Penunjang

II-41

2.6.2 Operasi Input-Output File AVI

Sistem operasi Windows telah menyediakan beberapa fungsi yang dapat digunakan untuk mengakses file AVI. Untuk membuka file AVI dapat digunakan fungsi berikut: function AVIFileOpen(ppfile: PPAVIFILE; szFile: LPCSTR; uMode: UINT; lpHandler: PCLSID): HResult; stdcall;

Fungsi tersebut akan memberikan handle dari file AVI yang dibuka. Selanjutnya handle tersebut dapat digunakan untuk melakukan akses baca tulis terhadap file tersebut. Jika telah selesai melakukan seluruh operasi file, untuk membebaskan semua resource sistem yang telah dipakai file harus ditutup kembali dengan memanggil fungsi berikut: function AVIFileRelease(pfile: PAVIFILE): ULONG; stdcall;

Untuk mendapatkan informasi mengenai file AVI maka dapat digunakan fungsi berikut: function AVIFileInfo(pfile: PAVIFILE; pfi: LPAVIFILEINFOW; lSize: Longint): HResult; stdcall;

Fungsi Informasi yang diperoleh akan diberikan dalam struktur data AVIFILEINFO yang didefinisikan sebagai berikut:

typedef struct { DWORD dwMaxBytesPerSec; DWORD dwFlags; DWORD dwCaps; DWORD dwStreams; DWORD dwSuggestedBufferSize; DWORD dwWidth; DWORD dwHeight; DWORD dwScale;

Teori Penunjang

II-42

DWORD dwRate; DWORD dwLength; DWORD dwEditCount; char

szFileType[64];

} AVIFILEINFO;

Informasi yang terkandung di dalam field-field struktur AVIFILEINFO ini kegunaannya sama dengan field-field yang ada pada struktur MainAVIHeader seperti yang dapat dilihat pada tabel 2.2. Untuk membuka stream yang terdapat di dalam file AVI, dapat digunakan fungsi berikut: function AVIFileGetStream(pfile : PAVIFILE; ppavi: PPAVISTREAM; fccType: DWORD ;lParam: Longint): HResult; stdcall;

Parameter pfile yang digunakan dalam pemanggilan fungsi AVIFileGetStream() ini adalah handle file AVI yang diperoleh dari hasil pemanggilan fungsi AVIFileOpen(), sedangkan parameter fccType menunjukkan tipe stream yang akan dibuka, yaitu audio atau video. Dengan pemanggilan fungsi AVIFileGetStream(), akan didapatkan handle dari stream yang selanjutnya dapat digunakan pada fungsi-fungsi yang berguna untuk mengakses stream tersebut. Untuk menutup kembali stream yang telah selesai digunakan dapat digunakan fungsi: function AVIStreamRelease(pavi: PAVISTREAM): ULONG; stdcall;

Untuk mengambil data yang ada di dalam stream dapat digunakan fungsi: function AVIStreamRead(pavi: PAVISTREAM; lStart: Longint; lSamples: Longint; lpBuffer: Pointer; cbBuffer: Longint; plBytes: PLONG; plSamples: PLONG): HResult; stdcall;

Teori Penunjang

II-43

Pada pemanggilan fungsi AVIStreamRead(), akan diperoleh alamat dari data yang tersimpan di dalam stream tersebut. Untuk stream audio data ini berupa sekumpulan sampel audio yang membentuk suara, sedangkan untuk stream video data ini berupa kumpulan bit-bit yang membentuk bitmap. Pada saat menggunakan fungsi AVIStreamRead(), harus diberikan parameter berupa handle dari stream yang akan dibuka, nomor urut sampel dan jumlah sampel yang dikehendaki, pointer dari buffer memori yang dialokasikan untuk data yang akan dibaca, dan ukuran dari buffer tersebut. Untuk menuliskan data ke dalam stream dapat digunakan fungsi: function AVIStreamWrite(pavi: PAVISTREAM; lStart: Longint; lSamples: Longint; lpBuffer: Pointer; cbBuffer: Longint; dwFlags: DWORD; plSampWritten: PLONG; plBytesWritten: PLONG): HResult; stdcall;

Untuk menuliskan data pada stream audio, harus disiapkan data yang berupa sampel audio dengan format waveform audio yang sesuai dengan isi struktur data PCMWAVEFORMAT. Sedangkan untuk menuliskan data frame video, harus disiapkan data yang berupa bitmap dengan format yang sesuai dengan isi struktur data BITMAPINFO. Pada saat menggunakan fungsi AVIStreamWrite(), harus diberikan parameter berupa handle dari stream yang akan ditulisi, nomor urut sampel dan jumlah sampel yang dikehendaki, pointer dari buffer memori yang dialokasikan untuk data yang akan dituliskan, dan ukuran dari buffer tersebut.

BAB III PERENCANAAN DAN PEMBUATAN PERANGKAT LUNAK

Pada pembuatan perangkat lunak ini penulis menggunakan Borland Delphi 2.0 dengan sistem operasi Microsoft Windows 95. Perangkat lunak yang direncanakan adalah suatu perangkat lunak yang berfungsi untuk menggabungkan dua file AVI sehingga menghasilkan file AVI baru yang merupakan hasil gabungan antara dua file sebelumnya. Di dalam penggabungan ini salah satu file AVI akan berperan sebagai latar belakang (background), sedangkan yang satu lagi sebagai latar depan (foreground). Dengan demikian obyek gambar yang berada pada file AVI latar depan akan seolah-olah masuk dan menyatu dengan gambar yang ada pada file AVI latar belakang. Sedangkan untuk suaranya, suara hasil gabungan akan merupakan hasil campuran dari suara yang dimiliki oleh kedua file AVI masukannya. Format file AVI yang digunakan dalam tugas akhir ini adalah sebagai berikut: 

Bagian video: lebar dan tinggi frame 320 x 240, kedalaman warna 16 bit per pixel, dan laju frame 15 frame/detik. Ukuran ini cukup memadai dan banyak digunakan dalam aplikasi multimedia. Sebagai perbandingan, file video berformat MPEG-1 yang banyak digunakan untuk menyimpan video secara digital di dalam VCD memiliki ukuran 352 x 240. Kedalaman warna 16 bit per pixel memungkinkan sampai III-1

Perencanaan dan Pembuatan Perangkat Lunak

III-2

65536 jumlah warna yang berbeda, sehingga warna gambar yang ditampilkan cukup bagus dan realistis untuk dilihat. Dengan menggunakan kedalaman warna 24 bit per pixel dapat diperoleh hasil yang lebih bagus, tetapi memori dan ruang disk yang dibutuhkan juga akan lebih besar. Sedangkan laju frame yang besarnya 15 frame/detik sudah cukup memadai untuk digunakan dalam aplikasi multimedia pada PC. 

Bagian audio: format 8 bit per sampel, 1 kanal, dan laju sampel 22050 Hz. Dengan format tersebut, maka untuk setiap detik suara akan disimpan dalam ukuran 22050 byte. Laju sampel 22050 Hz adalah salah satu laju sampel standar yang dapat digunakan untuk menyimpan sinyal suara dengan kualitas cukup baik.

Untuk mewujudkan penggabungan file AVI tadi, maka proses yang dilakukan dapat dibagi menjadi dua proses utama, yaitu proses penggabungan video dan proses penggabungan audio. Untuk melakukan masing-masing penggabungan tadi, maka setiap stream yang ada di dalam file AVI harus dipisahkan terlebih dahulu, yaitu stream audio dan stream video. Kemudian masing-masing stream tadi akan ditangani secara terpisah, di mana stream video AVI background akan digabungkan dengan stream video AVI foreground sedangkan stream audio AVI background juga akan digabungkan dengan stream audio AVI foreground. Setelah penggabungan stream video dan penggabungan stream audio selesai dilakukan, akan diperoleh hasil yang berupa stream video dan stream

Perencanaan dan Pembuatan Perangkat Lunak

III-3

audio yang baru sebagai hasil penggabungan tadi. Stream audio dan stream video yang baru tersebut kemudian akan digabungkan dan disimpan bersama-sama sebagai satu file AVI yang baru. Diagram blok dari proses penggabungan file AVI ini dapat dilihat pada gambar 3.1.

Stream Video

Gabung

File AVI 1 Stream Audio

Stream Video File AVI

Stream Video

Stream Audio

File AVI 2 Stream Audio

Gabung

Gambar 3.1 Diagram Blok Proses Penggabungan File AVI

Untuk mengambil suatu stream dari file AVI, pertama kali file AVI harus dibuka terlebih dahulu dengan memanggil fungsi AVIFileOpen(). Untuk menggunakan fungsi ini, harus diberikan parameter berupa nama file AVI yang akan dibuka, pointer untuk menampung handle dari file tersebut, dan mode yang digunakan untuk membuka file. Mode yang digunakan di sini adalah OF_READ yang berarti bahwa file akan dibuka untuk dibaca. Setelah file AVI dibuka, maka stream dapat diambil dengan fungsi AVIFileGetStream(). Parameter yang diberikan adalah handle file yang didapatkan pada saat membuka file, pointer untuk menampung handle dari stream

Perencanaan dan Pembuatan Perangkat Lunak

III-4

yang akan diambil, dan kode 4 karakter yang menunjukkan jenis stream yang akan diambil. Untuk stream video harus digunakan kode 'vids' sedangkan untuk stream audio harus digunakan kode 'auds'.

3.1 PENGGABUNGAN VIDEO Stream video di dalam file AVI tersusun dari sekumpulan gambar-gambar diam (frame) yang masing-masing merupakan bitmap. Untuk menggabungkan dua stream video, maka setiap bitmap yang ada pada video latar belakang harus digabungkan dengan bitmap yang ada pada video latar depan, sebagaimana yang ditunjukkan pada gambar 3.2. Setelah dilakukan penggabungan bitmap per frame, maka bitmap-bitmap hasil gabungan ini akan dituliskan ke dalam satu stream video yang baru.

frame bitmap

video 1

video gabungan

video 2

Gambar 3.2 Penggabungan Stream Video

Perencanaan dan Pembuatan Perangkat Lunak

III-5

Untuk mengambil sebuah frame bitmap dari suatu stream video, harus dialokasikan memori yang akan digunakan sebagai buffer untuk menampung frame tersebut dalam bentuk bitmap. Berikut ini kutipan program yang digunakan untuk menghitung besar ukuran buffer yang dibutuhkan dan mengalokasikan memori untuk buffer tersebut:

vDIBFrameBufferSize:= SizeOf(bi.bmiHeader) + bi.bmiHeader.biBitCount * bi.bmiHeader.biWidth * bi.bmiHeader.biHeight; HmemDIB:= GlobalAlloc( GMEM_FIXED or GMEM_ZEROINIT, vDIBFrameBufferSize ); lpbi:= GlobalLock(HmemDIB);

di mana bi adalah variabel dengan tipe BITMAPINFO yang menyimpan informasi mengenai karakteristik bitmap yang berada di dalam stream video tersebut. Variabel HmemDIB adalah handle yang digunakan untuk mengakses memori yang dialokasikan dengan fungsi GlobalAlloc(). Untuk mengunci memori agar tidak berpindah lokasi dan sekaligus untuk mendapatkan pointer terhadap lokasi memori tadi digunakan fungsi GlobalLock(). Setelah buffer untuk frame video dialokasikan, maka dapat dilakukan pengambilan

frame

dari

stream

video

dengan

menggunakan

fungsi

AVIStreamRead(). Untuk memanggil fungsi tersebut, harus diberikan parameter berupa handle dari stream, nomor urut frame yang akan diambil, pointer buffer untuk menampung frame, dan besar ukuran buffer yang disiapkan. Setelah diperoleh masing-masing frame yang akan digabungkan, baik dari AVI

Perencanaan dan Pembuatan Perangkat Lunak

III-6

background maupun dari AVI foreground, maka dapat dilakukan penggabungan antara kedua frame tersebut dengan menggunakan metode chromakey. Setelah dilakukan penggabungan antara kedua frame, maka frame hasil gabungan dapat dituliskan ke dalam stream yang baru dengan menggunakan fungsi AVIStreamWrite(). Namun sebelumnya stream yang baru ini harus diciptakan dulu dengan menggunakan fungsi AVIFileCreateStream() dan menentukan

format

dari

stream

tersebut

dengan

menggunakan

fungsi

AVIStreamSetFormat().

3.1.1 Penggabungan Frame Dengan Metode Chromakey Metode penggabungan gambar yang digunakan adalah metode chromakey. Prinsip kerja dari metode chromakey ini adalah menyeleksi pixel-pixel gambar yang memiliki suatu warna tertentu dan menggantikan warna dari pixel-pixel tersebut dengan warna yang diambil dari pixel-pixel gambar lain pada posisi yang sama. Warna tertentu tersebut disebut juga sebagai warna kunci (key color). Jadi sebelum proses chromakey ini dilakukan, harus ditentukan terlebih dahulu warna kunci apa yang akan digunakan. Warna kunci inilah yang nantinya akan dihapus dan digantikan dengan warna baru yang diambil dari gambar latar belakang. Dengan demikian objek yang ada pada gambar latar depan akan terlihat seakanakan menyatu dengan gambar latar belakang. Diagram alir dari proses chromakey ini dapat dilihat pada gambar 3.3.

Perencanaan dan Pembuatan Perangkat Lunak

III-7

Start For y=1 to tinggi For x=1 to lebar clr_bg = bg.pixel[x,y] clr_fg = fg.pixel[x,y] clr_fg = clr_key ? Tidak toleransi (clr_fg, clr_key) =True ?

Ya

Ya

out.pixel[x,y] = clr_bg

Tidak out.pixel[x,y] = clr_fg

End

Gambar 3.3 Diagram Alir Proses Chromakey

Warna kunci yang terdapat pada gambar latar depan dapat memiliki variasi nilai karena pengaruh cahaya atau bayang-bayang. Untuk itu dapat ditentukan pula besarnya toleransi pada variasi perubahan harga warna kunci. Jadi semua warna yang masih memiliki harga yang berada di dalam toleransi tersebut akan

Perencanaan dan Pembuatan Perangkat Lunak

III-8

dianggap sebagai warna yang harus dihilangkan dan digantikan dengan warna dari gambar latar belakang. Untuk itu model warna RGB dari warna kunci harus dikonversi terlebih dahulu ke model warna HSL dengan menggunakan rumusrumus yang telah dibahas pada bab sebelumnya. Karena format bitmap yang digunakan adalah 16 bit per pixel, maka setiap pixel gambar tersimpan dalam data sebesar 16 bit, di mana masing-masing komponen R, G, dan B menggunakan 5 bit sedangkan 1 bit sisanya tidak digunakan. Dengan demikian jumlah warna maksimum yang dapat disimpan dalam format ini adalah 2^15 = 32768 warna. Susunan bit untuk komponen R, G, dan B dapat dilihat pada gambar 3.4.

15

0

R

G

B

Gambar 3.4 Susunan Bit RGB Pada Bitmap 16 Bit Per Pixel

Untuk memperoleh nilai masing-masing komponen warna RGB dari setiap pixel digunakan cara sebagai berikut:

nb:= w and $001F; ng:= (w and $03e0) shr 5; nr:= (w and $7c00) shr 10;

Perencanaan dan Pembuatan Perangkat Lunak

III-9

Variabel w adalah variabel bertipe word 16 bit yang digunakan untuk menampung data setiap satu pixel. Selanjutnya data 16 bit tersebut dipisahpisahkan menjadi komponen R, G, dan B di mana 1 bit paling kiri tidak digunakan, bit 2 sampai bit 6 sebagai komponen R, bit 7 sampai bit 11 sebagai komponen G, dan bit 12 sampai bit 16 sebagai komponen B. Karena masing-masing komponen warna menempati 5 bit, maka harus memiliki nilai antara 0 sampai 31, sehingga untuk mendapatkan nilai antara 0 sampai 255 dilakukan proses perhitungan berikut:

nb:= Round((nb*255)/31); ng:= Round((ng*255)/31); nr:= Round((nr*255)/31);

3.1.2 Penentuan Toleransi Warna Kunci Toleransi warna ditentukan dengan menggunakan model warna HSL karena dalam model warna HSL ini pemisahan komponen-komponen warnanya lebih sesuai dengan cara kerja indra penglihatan manusia dalam menerima dan mengamati perbedaan warna. Jika file AVI foreground yang digunakan merupakan hasil animasi komputer, warna latar belakang dari objek yang akan ditampilkan biasanya dapat dibuat bersifat seragam dan memiliki harga yang sama persis. Lain halnya jika file AVI foreground merupakan hasil rekaman dengan menggunakan kamera video. Warna latar belakang yang diperoleh bisa sedikit bervariasi akibat pencahayaan yang tidak merata atau akibat bayang-bayang.

Perencanaan dan Pembuatan Perangkat Lunak

III-10

Jika suatu warna mengalami variasi akibat perbedaan cahaya atau akibat bayangan, maka komponen H (hue) dari warna tersebut tidak akan terlalu banyak terpengaruh. Sebagai contoh, jika mata manusia mengamati suatu benda yang berwarna biru, dia akan tetap dapat mengatakan bahwa benda tersebut berwarna biru, meskipun benda tersebut diletakkan di tempat yang sangat terang, agak terang, atau agak gelap. Dalam hal ini komponen warna yang banyak mengalami perubahan adalah komponen L (luminosity). Oleh sebab itu toleransi warna ditentukan dengan membandingkan harga komponen H dari setiap warna pada frame foreground dengan harga komponen H dari warna kunci. Sebelumnya, harga warna dalam model RGB harus dikonversi ke model HSL dengan menggunakan rumus yang telah dibahas pada bab sebelumnya. Berikut ini kutipan program yang digunakan untuk melakukan konversi tersebut:

L:= Round( (R+G+B)/3 ); if L=0 then begin H:= 0; S:= 0; Exit; end; minRGB:= R; if G < minRGB then minRGB:= G; if B < minRGB then minRGB:= B; S:= Round( 255 - (255 * 3 * minRGB / (R+G+B)) ); d1:= Sqrt( (R-G)*(R-G) + (R-B)*(G-B) ); if d1= 0 then dH:= 0 else dH:= ArcCos( ((R-G+R-B)/2) / d1 ); if (B>G) then dH:= 2*C_Pi - dH; H:= Round( 255*(dH/(2*C_Pi)) );

Perencanaan dan Pembuatan Perangkat Lunak

III-11

3.2 PENGGABUNGAN AUDIO Stream audio di dalam file AVI berisi sekumpulan sampel-sampel audio yang berupa nilai digital. Dalam tugas akhir ini digunakan data audio dengan format PCM 8-bit, 1 kanal, dan laju sampel 22050 Hz. Artinya, untuk setiap satu sampel dibutuhkan data sebesar 8 bit, dan dalam setiap detik terdapat 22050 sampel. Karena setiap satu sampel menempati data sebesar 8 bit, maka nilai dari setiap sampel berkisar antara 0 sampai 255. Dalam format PCM 8-bit ini besarnya nilai tengah dari sampel (midpoint value) adalah 128. Pada prinsipnya mencampur dua sinyal suara adalah sama dengan menjumlahkan dua sinyal tersebut, sebagaimana yang ditunjukkan pada gambar 3.5. Karena data yang diolah berbentuk digital, maka penjumlahan dilakukan untuk setiap sampel audio yang ada. Diagram alir untuk proses penggabungan data audio ditunjukkan pada gambar 3.6. Berikut ini adalah sebagian potongan dari program yang digunakan untuk untuk menggabungkan data suara: for i:=1 to nSampleSize do begin valBg:= Byte(pbg^) - MID_VALUE_8_BIT_PCM; valFg:= Byte(pfg^) - MID_VALUE_8_BIT_PCM; valOut:= valBg + valFg; { normalisasi harga sample sesuai dgn format data PCM } valOut:= valOut + MID_VALUE_8_BIT_PCM; if valOut < MIN_VALUE_8_BIT_PCM then valOut:= MIN_VALUE_8_BIT_PCM; if valOut > MAX_VALUE_8_BIT_PCM then valOut:= MAX_VALUE_8_BIT_PCM; pout^:= Byte(valOut); inc(pbg); inc(pfg);

Perencanaan dan Pembuatan Perangkat Lunak

III-12

inc(pout); end;

Pada listing program di atas, harga dari MIN_VALUE_8_BIT_PCM, MID_VALUE_8_BIT_PCM, dan MAX_VALUE_8_BIT_PCM masing-masing adalah 0, 128, dan 255. Variabel ValBg dan ValFg digunakan untuk mengambil harga sampel dari kedua sinyal masukan, sedangkan ValOut digunakan untuk menyimpan hasil gabungannya.

Gambar 3.5 Penjumlahan Sinyal Audio

Perencanaan dan Pembuatan Perangkat Lunak

III-13

Start For i=1 to nSample smpl_bg = bg.sampel[i] - 128 smpl_fg = fg.sampel[i] - 128 smpl_out = smpl_bg + smpl_fg smpl_out = smpl_out + 128

smpl_out < 0 ? Tidak

smpl_out > 255 ? Tidak

Ya

Ya

smpl_out = 0

smpl_out = 255

out.sampel[i] = smpl_out

End

Gambar 3.6 Diagram Alir Proses Penggabungan Data Audio

Perencanaan dan Pembuatan Perangkat Lunak

III-14

Sebelum kedua sampel masukan dijumlahkan, maka harga dari masingmasing sampel harus dikurangi dahulu dengan nilai tengah dari sampel 8 bit, yaitu 128. Hal ini disebabkan karena data yang tersimpan sebagai type byte memiliki nilai antara 0 sampai 255. Sedangkan sinyal audio digital 8 bit yang sesungguhnya akan memiliki harga dari -128 sampai 127. Untuk itu pada saat penyimpanannya di dalam komputer, harga -128 sampai 127 ini harus dikonversi menjadi harga 0 sampai 255. Untuk itu, setelah kedua sampel masukan dijumlahkan, hasil penjumlahannya harus ditambahkan lagi dengan 128. Setelah itu, hasil penjumlahan tadi dicek apakah harganya tidak berada di luar kisaran harga minimum dan harga maksimumnya, yaitu dari 0 sampai 255. Jika kurang dari dari harga minimum maka akan diset menjadi sama dengan harga minimum, sedangkan jika lebih dari harga maksimum maka akan diset menjadi sama dengan harga maksimum.

Pengaturan Volume Audio Untuk menambahkan pengaturan level volume dari stream audio yang dijumlahkan, maka masing-masing dari harga valBg dan ValFg harus dikalikan terlebih dahulu dengan faktor pengali yang dapat diset untuk masing-masing stream audio masukan. Proses tersebut di atas dilakukan untuk setiap sampel audio yang ada sehingga hasil keluarannya akan merupakan sejumlah sampel audio yang membentuk stream audio baru yang berisi gabungan antara kedua stream audio masukannya.

Perencanaan dan Pembuatan Perangkat Lunak

III-15

Setelah penggabungan bagian video dan penggabungan bagian audio selesai dilakukan, maka stream video dan stream audio hasil gabungannya akan disimpan bersama-sama sehingga membentuk satu file AVI yang baru.

3.3 PENGGABUNGAN FILE AVI SECARA MULTI SEGMEN Setelah dibahas metode yang digunakan untuk menggabungkan stream video maupun stream audio, pada bagian ini akan dibahas mengenai penggabungan file AVI secara multi segmen. Yang dimaksud dengan multi segmen di sini adalah bahwa file AVI background dapat dibagi menjadi beberapa segmen. Setiap segmen terdiri dari beberapa frame yang berurutan dan tidak boleh terdapat frame yang saling bertumpuk (overlap) antara segmen yang satu dengan segmen yang lain. Setiap segmen dapat digabungkan dengan file AVI foreground yang berbeda. Dengan demikian maka satu file AVI untuk background dapat digabungkan dengan beberapa file AVI foreground di mana masing-masing file AVI foreground tersebut akan menempati daerah waktu yang berbeda. Jika diinginkan pergantian file AVI foreground setelah mencapai adegan tertentu pada file AVI background, maka dapat ditempatkan pada segmen selanjutnya. Suatu segmen juga dapat diset oleh pemakai agar tidak digabungkan dengan file AVI apapun. Untuk lebih memperjelas, sistem multi segmen ini dapat digambarkan dengan contoh yang dapat dilihat pada gambar 3.7. Pada gambar tersebut file AVI background dibagi menjadi 4 segmen. Segmen pertama digabungkan dengan file

Perencanaan dan Pembuatan Perangkat Lunak

III-16

AVI foreground 1, segmen kedua dan segmen keempat dibiarkan tetap seperti aslinya, sedangkan segmen ketiga digabungkan dengan file AVI foreground 2. Pemakai dapat memilih sendiri mulai pada frame keberapa sampai frame keberapa dia akan menentukan isi suatu segmen pada file AVI background.

AVI background

segmen 1

segmen 2

segmen 3

segmen 4

AVI output

AVI foreground 1

AVI foreground 2

Gambar 3.7 Penggabungan File AVI Secara Multi Segmen

Informasi untuk setiap segmen disimpan di dalam variabel array bertype record TOutSegment yang didefinisikan sebagai berikut:

TOutSegment=record sFgFilename: String; nTotalFrame_FgAVI: Integer; nBgStartFrame: Integer; nBgEndFrame: Integer; nFgStartFrame: Integer; nFgEndFrame: Integer; nOutStartFrame: Integer;

Perencanaan dan Pembuatan Perangkat Lunak

III-17

nJumOutFrame: Integer; keyColor: DWORD; keyColorTol: Integer; lFgAudioExist: Boolean; nBgAudioStartSample: Integer; nBgAudioEndSample: Integer; nFgAudioStartSample: Integer; nFgAudioEndSample: Integer; nOutAudioStartSample: Integer; nJumOutAudioSample: Integer; nBgAudioVolume: Integer; nFgAudioVolume: Integer; nTranspLevel: Integer; lOverlay: Boolean; end;

Dengan demikian, setiap segmen akan berisi informasi mengenai: 

nama file AVI foreground yang dipilih dan jumlah total framenya



frame awal dan frame akhir yang dipilih untuk AVI background maupun AVI foreground



nomor urut frame awal pada output dan jumlah frame yang dihasilkan



warna kunci dan toleransi warna kunci



sampel awal dan sampel akhir audio untuk AVI background maupun AVI foreground



nomor urut sampel awal audio pada output dan jumlah sampel audio yang dihasilkan

Perencanaan dan Pembuatan Perangkat Lunak

III-18

3.4 PEMILIHAN FRAME VIDEO YANG AKAN DIGABUNG Perangkat lunak ini juga dirancang sehingga pemakai dapat menentukan pilihan mulai dari frame ke-berapa sampai frame ke-berapa dari file AVI foreground yang akan digabungkan ke sebuah segmen. Jadi tidak harus seluruh frame yang ada pada file AVI foreground ikut digabungkan. Dengan demikian pemakai akan lebih leluasa untuk memilih sendiri adegan-adegan mana yang akan digabungkan ke dalam suatu segmen. Pada saat pemakai memilih nomor urut frame awal dan frame akhir, maka akan langsung ditampilkan jumlah frame yang dipilih. Jika jumlah frame yang dipilih pada suatu segmen ternyata tidak sama antara jumlah frame AVI background dengan jumlah frame AVI foreground, maka jumlah frame yang akan disimpan akan diambil dari jumlah frame yang lebih banyak. Tetapi penggabungan frame hanya akan dilakukan sampai pada frame terakhir dari file AVI yang jumlah frame terpilihnya lebih sedikit. Untuk file AVI yang jumlah frame terpilihnya lebih banyak, kelebihan framenya akan disimpan dalam bentuk yang tetap sama dengan aslinya (tidak digabung dengan frame apapun). Sebagai contoh, pemakai melakukan setting pada suatu segmen sebagai berikut: 

AVI background: Start Frame=0, End Frame=100, Total Frame=101.



AVI foreground: Start Frame=0, E nd Frame=80, Total Frame=81.

Maka akan dihasilkan frame output sebanyak 101 frame dimana 81 frame pertama merupakan gabungan antara AVI background dengan AVI foreground, sedangkan 20 frame berikutnya langsung diambil dari frame pada AVI background.

Perencanaan dan Pembuatan Perangkat Lunak

III-19

3.5 PENULISAN DATA KE FILE AVI Untuk membuat suatu file AVI terlebih dahulu harus diciptakan streamstream yang akan dituliskan ke file tersebut. Stream-stream ini harus diciptakan dulu dengan menggunakan fungsi AVIFileCreateStream() dan menentukan format stream tersebut dengan menggunakan fungsi AVIStreamSetFormat(). Untuk stream video, format stream harus disiapkan terlebih dahulu dalam bentuk struktur data BITMAPINFO. Untuk stream audio, format stream ini harus disiapkan terlebih dahulu dalam bentuk struktur data PCMWAVEFORMAT. Jika stream telah dibuat, maka data yang berupa frame-frame video atau sampel-sampel audio hasil gabungan dapat dimasukkan pada stream tersebut pada posisi yang sesuai. Data yang dituliskan pada stream harus memiliki format yang sama dengan yang telah diset untuk stream tersebut, yaitu seperti yang dinyatakan di dalam struktur BITMAPINFO atau PCMWAVEFORMAT.

3.6 PERANCANGAN TAMPILAN PERANGKAT LUNAK Untuk merancang perangkat lunak yang mudah digunakan perlu dilakukan perancangan langkah-langkah pengoperasian program maupun bentuk tampilan yang akan digunakan oleh pemakai untuk berinteraksi dengan suatu perangkat lunak. Pada perangkat lunak ini diusahakan agar pemakai dapat menggunakan program secara mudah dan cepat. Namun demikian, diusahakan juga agar program tetap fleksibel sehingga dapat memenuhi kebutuhan pemakai yang ingin menggunakan fasilitas lebih lanjut.

Perencanaan dan Pembuatan Perangkat Lunak

III-20

Perangkat lunak ini menggunakan sistem multi-window, di mana di dalam satu program aplikasi terdapat beberapa window di dalamnya. Window yang pertama dinamakan sebagai 'Project Window'. Window ini digunakan untuk menempatkan semua parameter yang dimasukkan oleh pemakai. Informasi yang ditampilkan pada window ini meliputi jumlah segmen, nama file AVI background dan foreground yang digunakan, nomor frame awal dan frame akhir, jumlah total frame, warna kunci, dan level volume audio untuk masing-masing segmen. Window yang kedua dan ketiga masing-masing adalah window 'Background Video' dan 'Foreground Video' yang digunakan untuk menampilkan frame-frame yang terkandung di dalam file AVI background dan file AVI foreground. Untuk menampilkan hasil sementara dari penggabungan frame, disediakan window 'Output Preview'. Dengan adanya window ini, pemakai dapat mencoba mengubah-ubah parameter penggabungan file AVI dan melihat hasil gabungan per frame-nya pada window tersebut. Jadi jika hasil gabungannya ternyata belum sesuai dengan yang diinginkan, dapat dilakukan pengubahan parameter sebelum hasil gabungan disimpan secara permanen ke dalam suatu file. Di samping itu masih terdapat satu window lagi, yaitu window 'AVI Player' yang berfungsi sebagai pelengkap untuk memainkan file AVI background, file AVI foreground, atau file AVI lain yang dapat ditentukan sendiri oleh pemakai.

Perencanaan dan Pembuatan Perangkat Lunak

III-21

3.7 PENAMBAHAN EFEK TRANSPARANSI Untuk menghasilkan efek transparan antara objek pada foreground dengan objek pada background, maka setiap pixel yang ada pada gambar foreground diproses dengan pixel yang sama posisinya yang ada pada gambar background. Proses yang dilakukan untuk setiap pixel adalah sebagai berikut: 1. Masing-masing

pixel

pada gambar foreground maupun

background

dipisahkan menjadi komponen R, G, dan B. 2. Masing-masing komponen R, G, dan B untuk pixel foreground maupun background dijumlahkan kemudian dibagi dua sehingga diperoleh harga R, G, dan B yang baru. 3. Harga R, G, dan B yang baru ini digabungkan sehingga menjadi warna pixel baru sebagai hasil gabungan. Karena pixel hasil gabungan mengandung warna yang berasal dari foreground maupun background, maka akan timbul kesan bahwa kedua gambar tampil bersama-sama sehingga tampak seakan-akan transparan.

BAB IV CARA PENGOPERASIAN PERANGKAT LUNAK

Perangkat lunak AVIMixer ini dirancang untuk dijalankan pada sistem operasi Microsoft Windows 95. Untuk dapat menggunakan program ini terlebih dahulu harus disiapkan file-file AVI yang akan digunakan sebagai masukannya. Untuk memperoleh file AVI yang akan digunakan sebagai latar belakang, dapat digunakan hasil rekaman dari kamera video, kemudian diambil dengan menggunakan perangkat keras video capture. Selain dengan cara itu, juga dapat langsung mengambil hasil capture dari acara televisi dengan menggunakan perangkat keras Media Capture. Atau dapat juga dihasilkan dari file MPEG yang diperoleh dari VCD, kemudian dikonversi dengan program MPEG Converter sehingga menghasilkan file video dengan format AVI. Untuk memperoleh file AVI yang berisi animasi yang akan digunakan sebagai latar depan, dapat dibuat dengan menggunakan program seperti Asymetrix 3D F/X, Animation Editor, Autodesk Animator, CorelMove, LightWave 3D, Ray Dream Studio, dan lain-lain. File AVI yang akan digunakan sebagai masukan dapat mengandung stream audio ataupun tidak. Jika file AVI masukannya tidak mengandung stream audio, maka file AVI keluarannya juga tidak akan mengandung stream audio. Pada saat program dijalankan pertama kali maka akan muncul tampilan awal yang menampilkan sebuah window dengan judul 'Project Window'.

IV-1

Cara Pengoperasian Perangkat Lunak

IV-2

4.1 PENGISIAN PARAMETER-PARAMETER MASUKAN Pada Project Window ini terdapat berbagai masukan yang dapat diisikan oleh pemakai untuk menentukan parameter-parameter yang akan digunakan dalam penggabungan file AVI. Parameter-parameter ini meliputi: 

Nama file AVI yang akan digunakan sebagai background.



Nama file AVI yang akan digunakan sebagai foreground.



Pemilihan nomor frame awal dan nomor frame akhir dari setiap file AVI yang akan digabungkan, baik sebagai foreground maupun background.



Warna kunci dan besar toleransi warna kunci yang akan digunakan dalam proses chromakey.



Level volume untuk stream audio dari masing-masing file AVI masukan yang akan digabungkan.



Jumlah segmen pada proses penggabungan file AVI. Setiap segmen dapat menggunakan file AVI foreground yang berbeda, dapat digabungkan pada nomor frame yang berbeda, dan dapat menggunakan warna kunci yang berbeda pula. Pada akhirnya masing-masing segmen ini akan digabungkan secara berurutan untuk menghasilkan keluaran berupa sebuah file AVI yang baru. Pada Project Window ini juga ditampilkan informasi berupa jumlah

segmen, nama file AVI untuk background maupun foreground, nomor urut frame awal dan frame akhir yang dipilih, jumlah total frame yang dipilih, serta nilai RGB dan nilai HSL dari warna kunci yang dipilih. Contoh tampilan dari Project Window adalah sebagai berikut:

Cara Pengoperasian Perangkat Lunak

IV-3

Gambar 4.1a

Gambar 4.1b

Cara Pengoperasian Perangkat Lunak

IV-4

Gambar 4.1c

Gambar 4.1 Tampilan Pada Saat Pengisian Parameter Masukan

Di samping Project Window, terdapat juga beberapa window yang lain yang masing-masing memiliki fungsi sebagai berikut: 

Window Background Video. Window ini berguna untuk melihat isi frameframe dari file AVI yang digunakan sebagai latar belakang. Pada window ini pemakai dapat memilih untuk melihat gambar pada posisi frame yang diinginkan.



Window Foreground Video. Window ini berguna untuk melihat isi frameframe dari file AVI yang digunakan sebagai latar depan dan untuk memilih

Cara Pengoperasian Perangkat Lunak

IV-5

warna kunci. Pada window ini pemakai dapat memilih untuk melihat gambar pada posisi frame yang diinginkan. 

Window Output Preview. Window ini berguna untuk melihat lebih dahulu seperti apa frame hasil gabungan yang akan diperoleh sebelum disimpan ke dalam file AVI secara permanen. Dengan adanya fasilitas ini maka pemakai akan tahu apakah hasil penggabungan gambar yang diperoleh telah sesuai dengan yang dikehendaki. Jika belum, maka pemakai memiliki kesempatan untuk memperbaikinya dengan mengatur parameter-parameter seperti warna kunci, besar toleransi warna kunci, dan posisi urutan frame.



Window AVI Player. Window ini berfungsi untuk memainkan suatu file AVI, baik file AVI untuk background, foreground, atau file AVI hasil gabungan yang telah disimpan.

4.2 LANGKAH-LANGKAH PENGGABUNGAN FILE AVI Urutan langkah-langkah yang harus dilakukan yang untuk menggabungkan file AVI dengan menggunakan perangkat lunak ini adalah sebagai berikut: 1. Memilih file AVI yang akan dijadikan sebagai background. File AVI yang akan digunakan sebagai background ini merupakan file AVI yang berisi gambar rekaman langsung dari dunia nyata. Untuk memilih file yang akan berperan sebagai background, dilakukan dengan menekan tombol 'Select Background AVI...', kemudian memilih file yang diinginkan. 2. Menentukan jumlah segmen yang diinginkan. Jika tidak ditentukan, maka jumlah segmen default adalah satu.

Cara Pengoperasian Perangkat Lunak

IV-6

3. Memilih file AVI yang akan dijadikan sebagai foreground untuk setiap segmen. File AVI yang akan digunakan sebagai foreground ini biasanya merupakan file AVI yang berisi gambar bergerak hasil animasi komputer. Untuk memilih file yang akan berperan sebagai foreground, dilakukan dengan mengaktifkan checkbox 'Foreground AVI', kemudian memilih file yang diinginkan. 4. Menentukan nomor urut frame awal dan frame akhir dari masing-masing file AVI yang akan digabungkan. Fasilitas ini diberikan untuk memberikan keleluasaan kepada pemakai sehingga pemakai dapat memilih adegan-adegan mana yang diinginkan untuk ditambahkan gambar hasil animasi di dalamnya. Hal ini disebabkan kemungkinan adanya adegan-adegan tertentu yang diinginkan tetap seperti aslinya, jadi tidak perlu digabungkan dengan gambar lain. Pemilihan frame awal dan frame akhir ini berlaku untuk setiap segmen. Jadi file AVI hasil keluaran akan merupakan disusun dari segmen-segmen di mana masing-masing segmen merupakan hasil gabungan dari file AVI background dengan file AVI foreground. Untuk setiap segmennya, pemakai dapat memilih file AVI foreground yang berbeda, dan juga menentukan nomor urut frame awal dan nomor urut frame akhir yang diinginkan. 5. Menentukan warna kunci yang akan digunakan untuk proses chromakey. Untuk memilih warna kunci, dapat dilakukan dengan memilih warna pada kotak dialog warna atau dapat juga dengan cara menunjuknya dengan mouse secara langsung pada gambar AVI foreground yang ditampilkan. Harga warna yang dipilih sebagai warna kunci akan ditampilkan pada Project Window.

Cara Pengoperasian Perangkat Lunak

IV-7

Warna kunci yang dipakai untuk satu segmen dapat berbeda dengan warna kunci yang dipakai untuk segmen lain. 6. Menentukan besar toleransi warna untuk warna kunci yang telah dipilih. Harga dari toleransi warna ini berkisar dari 0 sampai 255. Jika toleransi warna ini diset nol, maka proses chromakey akan berlangsung lebih cepat, namun dengan syarat bahwa warna tersebut terdapat pada gambar AVI foreground secara merata tanpa ada variasi sedikitpun. 7. Menentukan level volume untuk stream audio yang akan digabungkan untuk masing-masing file AVI. Level volume ini dapat diatur mulai dari 0% sampai dengan 300% terhadap level volume asalnya. 8. Melihat hasil penggabungan sementara melalui window 'Output Preview'. Jika hasilnya belum sesuai dengan yang diinginkan, maka dapat diadakan perubahan pada warna kunci atau harga toleransi warna. 9. Jika pengaturan semua parameter sudah selesai dilakukan, maka file AVI hasil gabungan dapat disimpan dengan nama yang diinginkan.

Seluruh informasi mengenai setting parameter yang telah dilakukan juga dapat dilihat secara lengkap melalui pilihan menu 'Tools | Information'.

BAB V PENUTUP

Setelah melalui berbagai percobaan, perbaikan dan penyempurnaan, program ini dapat bekerja dengan cukup baik, bahkan dapat juga digunakan untuk menggabungkan file AVI yang keduanya merupakan hasil rekaman kamera video. Dari laporan tugas akhir yang dibuat oleh penyusun ini, dapat diperoleh beberapa kesimpulan dan saran yang diharapkan dapat berguna bagi perkembangan ilmu pengetahuan dan teknologi.

5.1 KESIMPULAN Beberapa kesimpulan yang diperolah dari hasil laporan tugas akhir ini antara lain: 1. Dengan menggabungkan file AVI hasil rekaman dengan file AVI hasil animasi komputer maka dapat diperoleh file AVI baru yang lebih menarik. 2. Dengan memahami format file data multimedia, teknik pengolahan data gambar, dan teknik pengolahan data audio, maka dapat dipelajari bagaimana membuat perangkat lunak aplikasi multimedia. 3. Untuk memperoleh hasil yang bagus dalam proses penggabungan video, maka warna kunci yang dipilih untuk proses chromakey hendaknya merupakan warna yang tidak terkandung atau paling sedikit terkandung di dalam objek yang ingin ditampilkan. V-1

Penutup

V-2

5.2 SARAN-SARAN Adapun saran yang digunakan untuk pengembangan perangkat lunak ini adalah: 1. Perangkat lunak ini dapat dikembangkan menjadi suatu perangkat keras sehingga proses penggabungan dapat berlangsung lebih cepat karena tidak perlu terlalu banyak menyita waktu pada CPU. 2. Dengan kecepatan proses penggabungan yang tinggi, maka perangkat keras ini dapat dikembangkan untuk mengolah data audio-video secara real-time dengan laju frame yang lebih tinggi. 3. Untuk lebih menghemat kapasitas media penyimpanan, file audio-video hasil keluaran dapat dikonversi dari format AVI ke format lain yang membutuhkan kapasitas lebih kecil seperti format MPEG, misalnya.

DAFTAR PUSTAKA

Charles Calvert, "DELPHI PROGRAMMING UNLEASHED", Indianapolis: Sams Publishing, 1995 Microsoft Corporation, "MICROSOFT WIN32 PROGRAMMER'S REFERENCE", Redmond: Microsoft Corporation, 1996 Microsoft Corporation, "WIN32 MULTIMEDIA PROGRAMMER'S REFERENCE", Redmond: Microsoft Corporation, 1996 Microsoft Corporation, "VIDEO FOR WINDOWS PROGRAMMER'S GUIDE", Redmond: Microsoft Corporation, 1993 Microsoft Corporation, "MULTIMEDIA PROGRAMMING INTERFACE AND DATA SPECIFICATIONS ", Redmond: Microsoft Corporation, 1991 Rafael C Gonzales & Richard E Woods, "DIGITAL IMAGE PROCESSING", Massachusetts: Addison-Wesley Publishing Company, 1992 Steve Rimmer, "ADVANCED MULTIMEDIA PROGRAMMING", USA: Windcrest/McGraw-Hill Inc., 1995

LAMPIRAN

A. Tampilan Program

Gambar A.1 Contoh Tampilan Frame AVI Background

Gambar A.2 Contoh Tampilan Frame AVI Foreground

Gambar A.3 Contoh Tampilan Frame AVI Hasil Gabungan

DAFTAR RIWAYAT HIDUP

Nama

: Setyo Nugroho

Tempat/tgl lahir

: Wonogiri, 29 Maret 1973

Agama

: Islam

Nama Ayah

: Martono, BSc

Nama Ibu

: Sri Pudjansih

Alamat

: Jl Menco II / 02 Wonogiri 57611 - Jateng

Penulis adalah anak kedua dari empat bersaudara.

Riwayat Pendidikan: -

TK Bhayangkari, Wonogiri (1977-1979)

-

SD Negeri IV, Wonogiri (1979-1985)

-

SMP Negeri 1, Wonogiri (1985-1988)

-

SMA Negeri 1, Wonogiri (1988-1991)

-

Institut Teknologi Sepuluh Nopember (ITS) Surabaya, Jurusan Teknik Elektro, Bidang Studi Teknik Sistem Komputer (1991-sekarang)

Pengalaman Kemahasiswaan: -

Asisten Praktikum Pemrograman Komputer

-

Asisten Praktikum Rangkaian Logika

Related Documents


More Documents from ""