PERANCANGAN APLIKASI ANTARMUKA PEMANCAR SIARAN TV DIGITAL MENGGUNAKAN MEDIA IP BERBASIS OPEN SOURCE
oleh : FITRI MULIANTI S 107091002778
PROGRAM STUDI TEKNOLOGI INFORMASI FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH JAKARTA 2011 M / 1432 H
PERANCANGAN APLIKASI ANTARMUKA PEMANCAR SIARAN TV DIGITAL MENGGUNAKAN MEDIA IP BERBASIS OPEN SOURCE
Skripsi Sebagai Salah Satu Syarat Untuk Memperoleh Gelar Sarjana Komputer
Fakultas Sains dan Teknologi Universitas Islam Negeri Syarif Hidayatullah Jakarta
Oleh: FITRI MULIANTI S 107091002778
PROGRAM STUDI TEKNIK INFORMASI FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH JAKARTA 2011 M / 1432 H
ii
PERANCANGAN APLIKASI ANTARMUKA PEMANCAR SIARAN TV DIGITAL MENGGUNAKAN MEDIA IP BERBASIS OPEN SOURCE
Skripsi Sebagai Salah Satu Syarat Untuk Memperoleh Gelar Sarjana Komputer Pada Fakultas Sains dan Teknologi Universitas Islam Negeri Syarif Hidayatullah Jakarta
Oleh: Fitri Mulianti S 107091002778
Menyetujui, Pembimbing I,
Pembimbing II,
Victor Amrizal, M.Kom NIP. 150411288
Nenny Anggraini, MT NIP. -
Mengetahui, Ketua Program Studi Teknik Informatika
Yusuf Durrachman, MIT, M.Sc NIP. 19710 522 200 604 1 002
iii
PENGESAHAN UJIAN
Skripsi berjudul “Perancangan Aplikasi Antarmuka Pemancar Siaran TV Digital Menggunakan Media IP Berbasis OpenSource” yang ditulis oleh Fitri Mulianti S, NIM 107091002778 telah diuji dan dinyatakan lulus dalam sidang Munaqosah Fakultas Sains dan Teknologi Universitas Islam Negeri Syarif Hidayatullah Jakarta pada tanggal 23 September 2011. Skripsi ini telah diterima sebagai salah satu syarat untuk memperoleh gelar sarjana strata satu (S1) Program Studi Teknik Informatika. Menyetujui : Penguji I
Penguji II
Hendra Bayu Suseno, M.Kom NIP. 198212 11 200912 11 003
Feri Fahrianto, M.Sc NIP. 19800829 201 101 1 002
Pembimbing I
Pembimbing II
Nenny Anggraini,MT NIP. -
Victor Amrizal, M.Kom NIP. 150411288
Mengetahui : Ketua Program Studi Teknik Informatika
Dekan Fakultas Sains dan Teknologi
Yusuf Durrachman, MIT, M.Sc NIP. 19710 522 200 604 1 002
DR. Syopiansyah Jaya Putra, M.Sis NIP. 19680117 200112 1001
iii
HALAMAN PERNYATAAN
DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENARBENAR ASLI KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN SEBAGAI SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI ATAU LEMBAGA MANAPUN.
Jakarta, 23 September 2011
Fitri Mulianti S 107091002778
v
ABSTRAK Fitri Mulianti S (107091002778), Perancangan Aplikasi Antarmuka Pemancar siaran TV Digital Menggunakan Media IP berbasis Open Source. (Di bawah bimbingan
Victor Amrizal, M.Kom dan Nenny Anggraini, MT) Perkembangan Teknologi Telekomunikasi terutama pada dunia sistem penyiaran TV (television broadcasting) telah mengalami perkembangan yang sangat pesat. Sistem penyiaran TV mulai beralih dari sistem TV analog menjadi sistem TV digital. Salah satu cara menerima program siaran TV digital adalah IPTV (Internet Protocol Televisi). Penerima program siaran TV digital berbasis IPTV dapat menggunakan perangkat keras PC (personal computer) atau laptop.
Penyiaran IPTV dapat menggunakan software berbasis Open Source yaitu Open Caster dengan topologi jaringan lokal maupun internet. Pada OpenCaster terdapat fungsi-fungsi untuk melakukan proses multiplexing atau manipulasi data transport stream yang dijalankan melalui sebuah terminal. Pengguna harus mengetikkan
sintak
yang
diperlukan
dalam
menjalankan
fungsi-fungsi
OpenCaster. Dan format video yang dapat digunakan dalam proses multiplexing hanya video dengan format *.ts. Dalam Tugas Akhir ini , penulis merancang aplikasi antarmuka untuk membantu dan memudahkan dalam menerapkan penyiaran televisi digital, terutama IPTV. Aplikasi ini menjadi perantara antara pengguna dengan OpenCaster tanpa harus menggunakan terminal secara langsung. Aplikasi ini juga dirancang agar format video selain *.ts(transport stream) dapat digunakan. Penyiaran konten berupa non-transport stream dapat memungkinkan dengan bantuan ffmpeg dalam membantu proses konversi video non-transport stream menjadi transport stream untuk kemudian dilakukan multiplexing.
Kata kunci: televisi digital, IPTV, Internet Protocol, software, transport stream , nontransport stream, multiplexing, open source
vi
KATA PENGANTAR Assalamualaikum, Wr. Wb Segala puji dan syukur ke Hadhirat Allah Yang Maha Pengasih dan Penyayang telah memberikan karunia yang melimpah sehingga penulis dapat menyelesaikan Skripsi ini, dan shalawat serta salam semoga selalu terlimpah kepada junjungan kita Nabi Besar Muhammad SAW, Beserta para keluarga, Sahabat beserta para keluarga, Sahabat serta para pengikutnya hingga akhir zaman kelak. Penulisan skripsi ini disusun sebagai salah satu syarat untuk memperoleh gelar sarjana komputer pada fakultas sains dan teknologi Universitas islam negeri syarif hidayatullah jakarta. Adapaun judul skripsi yang dibuat adalah “Perancangan
Aplikasi
Antarmuka
Pemancar
Siaran
TV
Digital
Menggunakan Media Ip Berbasis Open Source” Penulis menyadari selesainya Skripsi ini tidak terlepas dari berbagai pihak yang dengan rela membantu, mulai dari pelaksanaan penelitian sampai dengan selesainya laporan ini. Karena hal tersebut, Penulis ingin mengucapkan terima kasih kepada: 1. Bapak DR. Syopiansyah Jaya Putra, M.Sis selaku Dekan Fakultas Sains dan Teknologi UIN Syarif Hid.ayatullah Jakarta. 2. Bapak Yusuf Durrachman, MIT, M.Sc selaku Ketua Program Studi Teknik Informasi Informasi dan Sekretaris Program Studi Teknik Informasi Informasi, Ibu Viva Arifin, M.MSi.
vii
3. Bapak Victor Amrizal, M.Kom selaku Dosen Pembimbing I dan Ibu Nenny Anggraini, MT selaku Dosen Pembimbing II. 4. Papa dan Ibu tercinta yang senantiasa memberikan semangat dan selalu senantiasa mendoakan kelancaran skripsi saya serta dorongan materil yang cukup sampai saya bisa menyelesaikan kuliah saya. 5. Bapak Dr.Hary Budiarto selaku pembimbing dari BPPT. 6. Bapak Sofyan Mufti Prasetyo, Tri Miyarno, dan Muhammad Setiyobudi selaku pembimbing lapangan di BPPT yang senantiasa membantu kami. 7. Triono yang telah membantu saya dalam menyelesaikan aplikasi, Nurul Hidayah teman sepejuangan yang senantiasa bersama-sama dalam pembuatan skripsi ini. 8. Teman-teman TI C 2007 dan TI Multimedia, yang tidak bisa disebutkan satu per satu. 9. Teman-teman kosan saya yang selalu memberikan semangat kepada saya, terima kasih kak veby, teh ela, inni (mamak), Zahra, haen, mini, enong, widya, pipit dan juga ibu kos. 10. Terima Kasih kepada putri (puput) , Mama dan adik-adiknya yang senantiasa menerima saya dirumah mereka sebagai tempat untuk mengerjakan skripsi. 11. Kepada semua pihak yang telah memberikan dorongan moril dan materil selama penyelesaian skripsi ini.
viii
Penulis menyadari bahwa penyusunan Skripsi ini masih terlalu banyak kekurangan, oleh karena itu Penulis mengharapakan kritik dan saran yang bersifat membangun agar penyusunan laporan ini menjadi lebih baik lagi. Akhir kata, semoga skripsi ini bermanfaat khususnya kepada Penulis sendiri dan umumnya bagi yang membaca. Jakarta, 23 September 2011
Fitri Mulianti S Penulis
ix
DAFTAR ISI Halaman Halaman Judul
i
Halaman Sampul
ii
Lembar Persetujuan Pembimbing
iii
Lembar Pengesahan Ujian
iv
Halaman Pernyataan
v
Abstrak
vi
Kata Pengantar
vii
Daftar Isi
x
Daftar Gambar
xiv
Daftar Tabel
xvi
BAB I PENDAHULUAN
1
1.1
Latar Belakang
1
1.2
Permasalahan
4
1.2.1 Identifikasi Masalah
4
1.2.2 Rumusan Masalah
4
1.2.3 Batasan Masalah
5
Tujuan dan Manfaat
5
1.3.1 Tujuan
5
1.3.2 Manfaat
6
1.3
x
1.4
1.5
Metode penelitian
7
1.4.1 Metode Pengumpulan Data
7
1.4.2 Metode Pengembangan Sistem
7
Sistematika penulisan
8
BAB II LANDASAN TEORI
10
2.1
Pengertian Aplikasi
10
2.2
TV Digital
10
2.2.1 Standar Siaran TV Digital
11
2.2.2 Penerimaan Siaran TV Digital
13
2.3
Internet Protokol
15
2.4
Broadcasting
18
2.4.1 Broadcast Address
20
2.4.2 Multicast Address
21
Standar Kompresi MPEG-2
23
2.5.1 MPEG-2 Transport Stream
24
2.5.2 Multiplexing
29
2.6
OpenCaster
30
2.7
FFMPEG
33
2.5
BAB III METODELOGI PENELITIAN 3.1
Metode Pengumpulan Data
38
3.1.1 Studi Pustaka
38
3.1.2 Studi Literatur
39
3.1.3 Observasi
39
xi
38
3.3
Metode Perancangan Aplikasi
40
3.3.1 Envision (Membayangkan)
42
3.3.2 Conduct User and Task Analysis
42
3.3.3 Design and Prototype
43
3.3.4 Evaluate and Refine
43
3.3.5 Complete Detailed and Production
44
3.3.6 Release and Follow Up
44
BAB IV ANALISIS DAN PERANCANGAN SISTEM 4.1 Profil BPPT
46
4.4.1 Sejarah BPPT
46
4.4.2 Struktur Organisasi BPPT
47
4.4.3 Visi dan Misi BPPT
48
4.2 Hasil Observasi
48
4.3 Alasan Menggunakan Metode LUCID
52
4.4 Metode Pengembangan Aplikasi
54
4.3.1 Envision (Membayangkan)
54
4.3.2 Conduct User and Task Analysis
55
4.3.3 Design and Prototype
59
4.3.4 Evaluate and Refine
71
4.3.5 Complete Detailed and Production
73
4.3.6 Release and Follow Up
80
4.3.6.1 Sisi Pemancar
80
4.3.6.2 Sisi Klien
84
xii
46
BAB V PENUTUP
87
5.1 Kesimpulan
87
5.2 Saran
88
DAFTAR PUSTAKA
89
LAMPIRAN SOURCE CODE
86
xiii
DAFTAR GAMBAR Halaman Gambar 2.1 Anycast
19
Gambar 2.2 Broadcast
19
Gambar 2.3 Multicast
20
Gambar 2.4 Pemetaan Alamat IP ke Alamat Ethernet
23
Gambar 2.5 MPEG-2 digunakan di DVB dan DVD
24
Gambar 2.6 Alur Model MPEG-2 transport stream
25
Gambar 2.7 Paket Transport Stream
26
Gambar 2.8 Skema Multiplexer 2 ke 1
29
Gambar 2.9 Bagian Komponen MPEG-2 transport stream pada proses Multiplexing
30
Gambar 4.1 Struktur Organisasi BPPT
47
Gambar 4.2 Model Topologi yang dapat diterapkan
49
Gambar 4.3 Layer Program
50
Gambar 4.4 Proses Multiplexing Program
51
Gambar 4.5 Rancangan Penyiaran
55
Gambar 4.6 Usecase Diagram
60
Gambar 4.7 Sequence Diagram
61
Gambar 4.8 Class Diagram
68
Gambar 4.9 Flowchart Proses Video
65
Gambar 4.10 Layar Login
68
Gambar 4.11 Layar Simpan Konfigurasi
69
xiv
Gambar 4.12 Layar Tab Video
69
Gambar 4.13 Layar Tab Play
71
Gambar 4.14 Layar Utama
78
Gambar 4.15 Perancangan Latar Belakang
79
Gambar 4.16 Tampilan Login
80
Gambar 4.17 Halaman Konfigurasi Sistem
81
Gambar 4.18 Halaman Tab Video
82
Gambar 4.19 Halaman Tab Play
84
Gambar 4.20 Masukan UDP Protokol
85
Gambar 4.21 Hasil Siaran
85
Gambar 4.22 Pemilihan Program
86
xv
DAFTAR TABEL Halaman Tabel 2.1 Daftar beberapa fungsi OpenCaste
32
Tabel 4.1 Variasi Pilihan Singkatan FrameSize
34
Tabel 4.1 Konsep Rancangan Umum
54
xvi
BAB I Pendahuluan 1.1. Latar Belakang Perkembangan Teknologi Telekomunikasi terutama pada dunia sistem penyiaran TV (television broadcasting) telah mengalami perkembangan yang sangat pesat. Sistem penyiaran TV mulai beralih dari sistem TV analog menjadi sistem TV digital. Istilah TV digital bukanlah merujuk kepada pesawat TV digunakan melainkan lebih kepada penggunaan sinyal digital dalam penyiaran program televisi. Siaran digital hanya mengenal dua kondisi status, terima (kode 1) atau tidak (kode 0). Siaran digital ini atau yang lebih dikenal dengan TV Digital memberikan banyak kelebihan dibandingkan dengan TV analog : 1. Sinyal Digital memungkinkan kompresi data dan transmisi data yang lebih efisien, sehingga dapat menampung beberapa program siaran dalam satu kanal frekuensi. Dibandingkan siaran TV analog yang mensyaratkan satu program siaran dalam satu kanal frekuensi. 2. TV Digital menghasilkan kualitas gambar yang lebih jernih, Ketajaman gambar pada televisi tergantung pada kerapatan titik gambar persentimeter persegi, yang disebut dengan pixel. TV Analog maksimal memiliki kerapatan gambar 512x400 pixel. Sedangkan TV Digital bisa memiliki kerapatan gambar yang lebih besar dari TV analog. Siaran TV digital dapat diterima di pesawat TV analog dengan menggunakan Set- Top-Box (sebuah alat pengubah sinyal digital menjadi
1
2
gambar dan suara dan menampilkannya pada pesawat televisi analog). Terdapat beberapa cara yang telah dirancang untuk menerima siaran TV Digital, yaitu : melalui kabel atau sering disebut dengan digital cable dan melalui satelit atau disebut digital satellite. Standar lain, seperti DMB (Digital Multimedia Broadcasting) dan DVB-H (Digital Video BroadcastingHandheld), yang dirancang untuk menangani perangkat keras seperti telepon genggam untuk menerima program siaran TV Digital. Dan cara lain untuk menerima program siaran TV digital adalah IPTV (Internet Protocol Televisi), dengan IPTV dapat menerima program siaran TV digital melalui internet protocol, menggunakan koneksi broadband DSL(Digital Subscriber Line) menggunakan media kabel telepon atau dengan kabel serat optik. Kesimpulan, IPTV merupakan alternatif untuk menerima sinyal siaran TV Digital melaui internet. Dengan IPTV penonton tidak lagi tergantung dengan jadwal program yang telah ditentukan oleh penyedia program (provider). Sebaliknya penonton dapat memilih sendiri program yang mereka inginkan yang dapat diperoleh dari daftar acara yang tersedia, tanpa harus menunggu jadwal yang telah disusun oleh penyedia program siaran televisi. Penerima
program
siaran
TV
digital
berbasis
IPTV
dapat
menggunakan perangkat keras PC (personal computer) atau laptop karena data yang disiarkan sudah dalam data digital yang artinya sudah dapat langsung dibaca/diterjemahkan oleh bahasa mesin.
3
Penyiaran konten TV digital melalui IPTV dapat menggunakan perangkat lunak OpenCaster. Pada OpenCaster terdapat fungsi-fungsi untuk melakukan proses multiplexing atau manipulasi data transport stream yang dijalankan melalui sebuah terminal. Pengguna harus mengetikkan sintak yang diperlukan dalam menjalankan fungsi-fungsi OpenCaster. Dan format video yang dapat digunakan dalam proses multiplexing hanya video dengan format *.ts. Berdasarkan uraian diatas, penulis bermaksud untuk merancang aplikasi antarmuka untuk membantu dan memudahkan dalam menerapkan penyiaran televisi digital, terutama IPTV. Aplikasi ini menjadi perantara antara pengguna dengan OpenCaster tanpa harus menggunakan terminal secara langsung. Aplikasi ini juga dirancang agar format video selain *.ts(transport stream) dapat digunakan. Dalam perancangan aplikasi antarmuka untuk IPTV ini, penulis menggunakan open source. Alasan penulis memilih menggunakan open source dalam perancangan perangkat lunak yaitu mendapatkan kelegalan dari perangkat lunak dengan biaya minimum atau hampir tidak berbayar. Selain itu open source juga telah terkenal kehandalannya dalam pemanfaatannya sebagai jaringan. Berdasarkan latar belakang di atas maka penulis membuat tugas akhir dengan judul "Perancangan Aplikasi Antarmuka Pemancar siaran TV Digital Menggunakan Media IP berbasis Open Source”. Penelitian dan perancangan dilakukan di BPPT (Badan Pengkajian dan Penerapan Teknologi), di Pusat Teknologi Informasi dan Komunikasi Gedung II
BPPT Lantai 21,
4
Jalan M.H.Thamrin No.8, Jakarta Pusat. Diharapkan dengan adanya aplikasi ini, dapat menjadi contoh dasar dalam mempelajari cara memancarkan siaran TV digital menggunakan IPTV. 1.2. Permasalahan Terdapat beberapa pokok permasalahan dalam mewujudkan proses penyiaran konten IPTV yang akan dilakukan penelitian lebih lanjut : 1.2.1. Identifikasi Masalah 1. Tingkat ketelitian pengguna menjadi masalah dalam menjalankan sintaks
menggunakan
terminal.
Mengurangi
kesalahan
dan
mempermudah pengetikan sintak fungsi dari OpenCaster untuk meminimalisasi erorrs atau dengan kata lain proses tidak dapat dilakukan. 2. Format video yang hanya berupa format *.ts menjadi keterbatasan dalam menyiarkan konten TV digital sehingga perlu penambahan format lain agar lebih bervariasi. 3. Perkembangan dunia internet mengubah kebiasaan sebagian orang dimana kebutuhan untuk menonton televisi tidak hanya didapat melalui perangkat televisi melainkan penonton dapat melihat siaran TV melalui internet. 1.2.2. Rumusan Masalah 1. Bagaimana merancang GUI (antarmuka) untuk penyiaran konten berbasiskan IP dengan menggunakan java?
5
2. Bagaimana memancarkan siaran TV digital yang lebih interaktif? 3. Bagaimana video selain .*ts (transport stream) dapat disiarkan menggunakan aplikasi ini? 4. Bagaimana mengahasilkan video yang akan dipancarkan dengan ukuran video yang kecil namun dengan kuliatas yang cukup bagus? 1.2.3. Batasan Masalah Permasalahan yang akan dibahas hanya akan dibatasi oleh beberapa pokok masalah dibawah ini: 1.
Aplikasi antarmuka yang hanya bisa dilakukan oleh admin.
2.
Aplikasi antarmuka ini digunakan untuk melakukan proses multiplexing, konversi video, filter data video dan melakukan playout / memancarkan berkas transport stream.
3.
Aplikasi hanya berjalan pada platform linux.
4.
Layanan IPTV terbatas pada penyiaran konten.
5.
Penerima atau klien hanya dapat menerima siaran TV digital dengan menggunakan media PC atau laptop.
1.3. Tujuan dan Manfaat Adapun tujuan dan manfaat yang dilakukan penelitian ini diuraikan sebagai berikut : 1.3.1. Tujuan
1. Menghasilkan suatu aplikasi GUI penyiaran IPTV berbasis software open source. 2. Menghasilkan video yang berukuran rendah dengan kualitas yang
6
1.3.2. Manfaat
• Bagi Penulis 1. Sebagai salah satu syarat kelulusan dalam menyelesaikan Program Strata 1. 2. Menambah ilmu dan pengetahuan penulis, khususnya dalam bidang TV Digital. • Bagi Universitas 1. Dapat menjadi sumbangan karya ilmiah dalam disiplin ilmu teknologi informasi. 2. Mengetahui kemampuan mahasiswa dalam menguasai materi ilmu yang telah diperoleh selama kuliah. 3. Mengimplementasikan ilmunya dan sebagai bahan evaluasi. • Bagi Pengguna dan Penerima layanan IPTV 1. Memberikan kemudahan dalam melakukan penyiaran dan menikmati layanan IPTV. 2. Penonton dapat dengan bebas menonton dimana saja dengan menggunakan perangkat keras laptop . 3. Penonton atau klien dapat bebas memilih program TV yang mereka suka. 4. Tidak perlu mengikuti jadwal siaran televisi disusun oleh jaringan televisi.
7
1.4. Metodologi Penelitian Pada penulisan skripsi ini, metode penelitian yang digunakan meliputi dua metode, metode pengumpulan data dan metode pengembangan teknologi. 1.4.1. Metode Pengumpulan Data Dalam
proses
penulisan
skripsi
ini,
bentuk
metodologi
pengumpulan data yang akan dilakukan antara lain: 1. Studi pustaka, yakni mengumpulkan data - data dari berbagai buku, jurnal, karya ilmiah dan sumber bacaan dari situs internet yang berkaitan dengan masalah yang akan dibahas dalam pembuatan aplikasi return channel ini. 2. Studi Literature, menggunakan referensi lain berupa : bahan tulisan dari skripsi atau penelitian yang objek pembahasannya hampir sama 3. Observasi, yakni teknik pengumpulan data dengan jalan pengamatan langsung secara sistematis terhadap objek penelitian. 1.4.2. Metode Pengembangan Sistem Perancangan aplikasi ini menggunakan metode Lucid (Logical User-Centered Design). LUCID adalah suatu kerangka kerja untuk melakukan kegiatan yang mendefinisikan dan bentuk produk interaktif. Pada awalnya diciptakan untuk mendukung pengembangan perangkat lunak yang sangat bermanfaat dan situs web. Enam tahapan pada metode Logical User-Centered Design (Charles B. Kreitzberg, PhD) yaitu :
8
1. Envision (Membayangkan) 2. Conduct User and Task Analysis (Perilaku pengguna dan Analisis tugas) 3. Design and Prototype (Rancangan dan Prototipe) 4. Evaluate and Refine (Evaluasi dan Perulangan) 5. Complete Detailed Design and Production (Melengkapi detail Rancangan dan Produksi) 6. Release and Follow Up (Rilis dan tindakan lanjut) 1.5. Sistematika Penulisan Secara garis besar. Sistematika penulisan skripsi ini dibagi menjadi 5 bab, yaitu : BAB I
PENDAHULUAN Pendahuluan yang terdiri dari latar belakang dilakukannya penelitian, perumusan masalah, pembatasan masalah, tujuan, dan manfaat yang dapat diambil dari penelitian ini.
BAB II LANDASAN TEORI Bab ini akan menguraikan teori-teori yang digunakan sebagai landasan atau dasar dari penulisan skripsi ini, serta menjelaskan secara singkat perangkat lunak yang digunakan dalam perancangan aplikasi. BAB III METODOLOGI PENELITIAN Bab ini berisi metodologi penelitian yang menggunakan dua tahap berupa metode pengumpulan data dan metode perancangan
9
aplikasi (Logical User-Centered Design). BAB IV ANALISIS DAN PERANCANGAN APLIKASI Bab ini akan diuraikan dan membahas analisis terhadap kebutuhan sistem, serta implementasi perancangan aplikasi. BAB V
KESIMPULAN DAN SARAN Bab ini berisi kesimpulan yang dapat diambil dari penulisan skripsi ini dan saran untuk memperbaiki dan mengembangkan aplikasi ini.
BAB II LANDASAN TEORI 2.1. Pengertian Aplikasi Antarmuka Application atau sering disebut program aplikasi adalah program yang siap pakai. Program yang direka untuk melaksanakan suatu fungsi bagi pengguna atau aplikasi yang lain. Contoh-contoh aplikasi adalah program pemoroses kata, dan web browser. Aplikasi akan menggunak sistem operasi (OS) komputer dan aplikasi yang lainnya yang mendukung. Istilah ini masuk kedalam istilah Teknologi Informasi semenjak tahun 1993, yang biasanya juga disingkat dengan app. App adalah software yang dibeli perusahaan dari tempat pembuatannya. Application Interface atau dalam bahasa Indonesia aplikasi antarmuka adalah penghubung antar aplikasi, misalnya sekumpulan software yang memungkinkan programmer untuk memasuki suatu sistem dan memakai layanan yang disediakan didalam suatu jaringan. 2.2. TV Digital Digital Television (DTV) atau sering disebut TV Digital adalah transmisi dari audio dan video menggunakan sinyal digital, kebalikan dari sinyal analog yang digunakan pada TV Analog. Televisi digital mendukung format gambar yang berbeda didefinisikan oleh kombinasi dari ukuran, rasio aspek (lebar x tinggi rasio) dan interlace (teknik menggandakan frame rate yang dirasakan dari sinyal video tanpa mengkonsumsi bandwidth ekstra.). Dari berbagai format yang ada, penyiaran digital terresterial dibagi menjadi
10
11
dua kategori format yaitu HDTV(High-defenition television)
dan SDTV
(Standard definition television). High-definition televisi (HDTV) adalah format televisi digital memberikan gambar berkualitas teater dan kualitas suara CD. HDTV merupakan salah satu dari beberapa format yang berbeda yang dapat ditransmisikan melalui DTV, menggunakan beberapa format, diantaranya : 1280x720 pixel di modus progressive scan (ringkas 720p) or 1920×1080 pixels dimodus interlace (1080i). Progresif (atau pemindaian noninterlaced) adalah cara menampilkan, menyimpan, atau mengirimkan gambar bergerak di mana semua baris dari setiap frame digambar secara berurutan. HDTV tidak dapat ditransmisikan melalui saluran analog saat ini. Standart definition TV (SDTV), dapat menggunakan salah satu dari beberapa format yang berbeda mengambil bentuk berbagai aspek rasio tergantung pada teknologi yang digunakan di negara yang broadcast. Untukaspek ratio 4:3 dengan format 640x480 digunakan di negara yang menggunakan sistem NTSC, sedangkan 720x576 piksel digunakan di negara yang menggunakan sistem PAL. Untuk aspek rasio 16:9, format 704x480 digunakan di negara yang menggunakan sistem NTSC, sedangkan 720x576 digunakan di negara yang menggunakan sistem PAL. 2.2.1. Standar Siaran TV Digital Siaran TV Digital memiliki beberapa standar, yaitu Digital Video Broadcasting dan Advanced Television System Comitte. Berikut akan dijelaskan secara singkat mengenai DVB dan ATSC :
12
1. Digital Video Broadcasting (DVB) DVB
sebagai standar global untuk penyiaran TV digital
berawal dari pembentukan DVB project pada 11 September 1993 (Budianto dkk, Sistem TV Digital dan Prospeknya di Indonesia, Hary(Jakarta: MultikomIndo Persada2007), hal 67). DVB Project beranggotakan sekitar 250 broadcasters, manufacturers, network operators, software developers, regulatory bodies dan lebih dari 35 negara berkomitmen merancang standar teknis terbuka untuk pengiriman global dari TV digital dan data servis. Teknologi DVB telah menjadi bagian integral dari dunia penyiaran, menetapkan standar untuk satelit, kabel, terresterial,
layanan berbasis IP
(dvb.org). Semua data ditransmisikan dalam MPEG transport streams
dengan
beberapa
kendala
tambahan
(DVB-
MPEG)(http://en.wikipedia.org/wiki/Digital_Video_Broadcasting). 2.
Advanced Television System Comitte (ATSC) Advanced Television System Comitte merupakan sebuah organisasi non-profit yang dibentuk pada tahun 1982 yang bertugas mengembangkan
standar-standar teknis untuk semua aspek dari
televisi digital. Standar ATSC dikembangkan oleh Grand Alliance, sebuah konsorsium perusahaan elektronik dan telekomunikasi yang berkumpul untuk mengembangkan spesifikasi untuk apa yang sekarang dikenal sebagai HDTV. ATSC juga menggunakan standardefinition (SDTV) format, meskipun awalnya hanya layanan HDTV
13
diluncurkan dalam format digital. Standar ATSC mendefenisikan suatu sistem yang didesain untuk transmisi video dan audio kualitas tinggi serta data melalui suatu kanal radio selebar 6MHz.
Sistem
televisi digital ATSC menggunakann MPEG-2 untuk pengodean video dan Digital Audio Compression (AC-3) untuk pengodean audio (Budianto dkk,2007: 52 dan 53). Advanced Television System Comitte untuk transmisi TV Digital melalui Teristerial , kabel dan jaringan satelite. 2.2.2. Penerima Siaran TV Digital Ada sejumlah cara yang berbeda untuk menerima siaran TV Digital. Salah satu yang paling tertua cara penerimaan DTV (dan TV secara unum) adalah menggunakan antenna (atau lebih dikenal dengan aerial di beberapa Negara). Cara ini dikenal juga sebagai DigitalTerresterial Television (DTT).Cara lain yang telah dirancang untuk penerima siaran TV Digital dengan menggunakan digital cable dan digital satellite. Di beberapa Negara, transmisi dari sinyal Televisi melalui gelombang micro,menggunakan digital MMDS (Multichannel Multipoint Distribution Service). Standar lain, seperti DMB dan DVBH, dirancang untuk perangkat genggam seperti telepon genggam untuk menerima sinyal TV. Cara lain menggunakan IPTV, menerima TV melalui Internet Protocol, menggandalkan DSL atau kebel optikal. IPTV merupakan cara alternative untuk menerima sinyal TV Digital melalui internet. Sebagai contoh, perangkat lunak P2P (peer-to-peer)
14
televisi Internet yang dapat digunakan untuk menonton TV pada komputer. Berikut merupakan penjelasan secara singkat mengenai digital terestrial, digital cable, digital satellite: 1. Digital Terrestrial Television (DTTV or DTT) adalah evolusi dan perkembangan teknologi dari terrestrial televisi analog, untuk jaringan siaran darat yang ditangkap melalui antenna. Tujuan dari Terrestrial TV Digital hampir sama dengan digital versus analog pada platform lain seperti kebel, satelit, ditandai dengan pengurangan penggunaan spektrum dan kapasitas lebih dari analog, kualitas gambar lebih baik, dan biaya operasi yang lebih rendah untuk siaran dan transmisi setelah biaya upgrade awal. Sebuahimplementasi teknologi terestrial televisi digital menggunakan siaran udara untuk antena konvensional (atau udara), bukan dari parabola atau koneksi kabel. 2. Digital cable adalah istilah generik untuk semua jenis distribusi televisi kabel menggunakan kompresi video digital atau distribusi, Teknologi Digital Cable telah memungkinkan penyedia saluran kabel untuk mengkompresi video sehingga mereka mengambil sedikit ruang frekuensi dan menawarkan berbagai kemampuan komunikasi dua arah. Hal ini memungkinkan penyedia kabel digital untuk menawarkan lebih banyak saluran, video on demand (tanpa menggunakan saluran telepon), layanan telepon, internet kecepatan
15
tinggi, dan layanan televisi interaktif. Selain itu, teknologi digital kabel memungkinkan untuk koreksi kesalahan untuk memastikan kualitas sinyal yang diterima dan menggunakan sistem distribusi digital yang aman (yaitu sinyal enkripsi yang aman untuk mencegah penyadapan dan pencurian pelayanan.) 3. Televisi
satelit
adalah
televisi
disampaikan
dengan
cara
komunikasi satelit dan diterima oleh antena luar, biasanya menggunakan parabola, dan sejauh pengguna rumah tangga yang bersangkutan, penerima satelit baik dalam bentuk seperangkat eksternal set-top box atau modul tuner satelit dibangun menjadi sebuah TV. Tuner TV satelit juga tersedia sebagai kartu atau USB stick harus terpasang ke komputer. Di banyak daerah di dunia televisi satelit menyediakan berbagai saluran dan layanan, sering ke daerah-daerah yang tidak dilayani oleh penyedia terestrial atau kabel. Siaran televisi satelit langsung datang ke masyarakat umum dalam dua cara yang berbeda - analog dan digital. Analog televisi satelit digantikan oleh televisi satelit digital dan yang terakhir akan tersedia dalam kualitas yang lebih dikenal sebagai high-definition television. 2.3. Internet Protocol Television (IPTV) Internet protocol television (IPTV) adalah sebuah proses menyediakan layanan televisi (video dan audio) melalui jaringan Protokol Internet(Internet
16
Protocol dikenal dengan IP).
Jaringan IP ini memulai, memproses dan
menerima suara atau komunikasi multimedia menggunkan IP. Sistem IP mungkin merupakan sistem IP publik (contoh : Internet), Sistem data pribadi (contoh : berbasis LAN), atau sistem hybrid baik publik ataupun swasta. Pengertian lain dari IP Television (IP TV)-IP television mentransmisikan video dan audio digital melalui data networks, biasanya melalui internet. Layanan IPTV mungkin secara berlangganan (dibayar oleh penerima) atau mungkin didanai oleh iklan atau instansi pemerintah. Penyiaran televisi IP mengirimkan sinyal data multimedia kepada pengguna akhir atau ke titik distribusi yang mengarahkan sinyal televisi digital untuk pengguna akhir (http://www.iptvdictionary.com/). Internet Protocol Television (IPTV) saat ini merupakan layanan sekumpulan video (dan terkait) dikirimkan kepada konsumen untuk tujuan hiburan. Layanan video ini mungkin meliputi: • Video siaran langsung. • Content on Demand • Layanan Interactive TV (iTV)
Layanan IPTV dikirimkan ke seluruh paket jaringan transportasi berdasarkan Protokol Internet dengan keamanan yang sesuai, kualitas layanan dan kehandalan yang diperlukan. Jaringan IP end-to-end mengangkut sinyal audio, video dan control sinyal antara sumber konten dan konsumen. Jaringan IP end-to-end memiliki karaktetistik umum : • Ini terdiri dari beberapa bagian antara konsumen akhir dan sumber konten, misalnya, jaringan lokal, jaringan akses, jaringan inti.
17
• Paket IP dapat dienkapsulasi oleh beberapa transportasi 2 lapisan (misalnya, Ethernet frame.) • Jaringan akses bagian dari jaringan IP terdiri dari berbagai jenis teknologi untuk transmisi fisik yang terdapat di layer 2 yaitu protokol data unit layer (misalnya, berbagai versi dari DSL, serat optik dan nirkabel.) • Jaringan lokal yg merupakan bagian dari jaringan IP terdiri dari berbagai jenis teknologi untuk transmisi fisik dari frame Ethernet (misalnya, titik ke titik kabel data (Cat 5 atau 6), Ethernet melalui kabel coaxial, Ethernet melalui kabel listrik dan / atau lokal nirkabel pilihan.) • Layanan IP lainnya diaktifkan dapat disampaikan secara paralel dengan layanan IPTV saat ini menggunakan akses yang sama. • Perangkat lain mungkin beroperasi di jaringan lokal secara paralel dan / atau
berinteraksi
dengan
perangkat
IPTV
saat
ini
(http://www.atis.org/tops/IEG/ATIS_IPTV_EG_RPT_final.pdf). Teknologi multicast dapat mengiriman konten yang sama kesejumlah pelanggan pada waktu yang bersamaan, multicast tidak membantu pada fitur video on demand, dimana membutuhkan unique stream untuk sampai ke rumah pengguna. Untuk mendukung VoD dan layanan lain menggunakan sebuah unicast stream Jenis stream ini dikontrol oleh Real Time Streaming Protocol (RTSP). Sedangkan Internet Group Management Protocol(IGMP) digunakan untuk mendukung multicasting MPEG2 telah menjadi format video utama untuk penyiaran tetapi MPEG2 pindah ke lingkungan jaringan dapat menjadi bermasalah karena
18
file yang terlalu besar dan akan membuat jaringan menjadi lambat. MPEG4/AVC (H.264) merupakan encoding (pengkodean) video yang memenuhi persyaratan berkualitas tinggi menggunakan bandwidth yang lebih rendah. H.264 dapat menyampaikan kualitas yang sama seperti MPEG-2 tapi dengan lebar pita yang lebih sedikit (Budianto dkk, 2007: 22) . Hasil output (keluaran) dari encoder MPEG-4/AVC adalah sebuah UDP-IP multicast atau unicast dalam sebuah program tunggal MPEG-2 TS. 2.4. Broadcasting Broadcasting adalah penyaluran konten audio dan video kekhalayak melalui radio, televisi dan lain. Sejarah Broadcasting televisi secara eksperimen dimulai sejak 1925, dan komersial sejak 1930-an, media pemograman video telah ditunggu oleh masyarakat sejak lama dan cepat berkembang bersaing dengan radio broadcasting yang telah lebih dulu. Kabel radio atau sering disebut juga dengan kabel FM sejak 1928 dan kabel televisi sejak 1932, keduanya menggunakan kabel coaxial, dengan prinsip pelanyanan sebagai media transmisi untuk memproses program, baik itu radio ataupun stasiun
televesi, dengan produksi terbatas berdedikasi kabel
pemrograman. Televisi satelit ada dari sekitar tahun 1974 dan radio satelit ada sekitar tahun 1990, Webcasting video / televisi (dari sekitar tahun 1993) dan audio / radio (dari sekitar 1994) stream: menawarkan campuran radio tradisional dan program siaran stasiun televisi dengan internet yang didedikasikan pemrograman webcast.
19
Pada dunia komputer, broadcasting merupakan metode pengiriman pesan ke-semua penerima secara serentak. Penyiaran dapat dilakukan sebagai operasi tingkat tinggi dalam program, misalnya untuk Interface Message Passing , atau mungkin operasi jaringan tingkat rendah, misalnya untuk penyiaran pada Ethernet. Dalam jaringan komputer, broadcasting lebih kepada transmisi sebuah paket yang akan diterima oleh setiap perangkat pada jaringan. (Andrew Tanenbaum (2003). Computer Networks. p.368. ISBN 0130661023.) Dalam praktenya, cakupan dari broadcast dibatasi oleh broadcast domain. Broadcast kebalikan dari unicast addressing, dimana sebuah host mengirim datagram ke sebuah host single yang diidentifikasi oleh alamat IP yang unik.
Gambar 2.1. Anycast Sumber : http://en.wikipedia.org/wiki/File:Anycast.svg 28 Juni 2011, 09:31 WIB
Gambar 2.2. Broadcast Sumber : http://en.wikipedia.org/wiki/File:Broadcast.svg 28 Juni 2011, 09:31 WIB
20
Penerus
Internet Protocol Version 4 (IPv4), IPv6 juga tidak
menerapkan metode siaran untuk mencegah terganggunya semua node dalam jaringan ketika hanya beberapa mungkin tertarik dalam layanan tertentu. Sebaliknya bergantung pada multicast addressing secara konsep mirip metode routing one-to-many . Namun, multicasting membatasi penerima untuk bergabung dengan kelompok multicast tertentu. Ethernet dan IPv4 menggunakan semua yang alamat broadcast untuk menunjukkan paket broadcast. Token Ring menggunakan nilai khusus dalam bidang kontrol IEEE 802.2.
Gambar 2.3. Multicast Sumber : http://en.wikipedia.org/wiki/File:Multicast.svg 28 uni 2011, 09:5 WIB 2.4.1. Broadcast address Broadcast address adalah alamat logika di mana semua perangkat yang terhubung ke multiple-access jaringan komunikasi diaktifkan untuk menerima datagram. Sebuah pesan dikirim ke alamat broadcast biasanya diterima oleh semua jaringan terpasang host, bukan oleh host tertentu.
21
Alamat
Ethernet
Broadcast
dalam
hexadecimal
adalah
FF:FF:FF:FF:FF:FF. Ada beberapa tipe dari IP broadcasting : 1. Batas Alamat IP broadcast adalah 255.255.255.255. Broadcast tidak diteruskan oleh router. 2. Sebuah broadcast diarahkan ke jaringan memiliki bentuk x.255.255.255, dimana x adalah alamat dari jaringan kelas. Broadcast dapat diteruskan tergantung pada program router 3. Paket data dikirim ke smua subnetwork jika paket data itu adalah 10.1.255.255 pd jaringan 10.1.0.0 dan jaringan subnetting dengan beberapa jaringan 10.1.x.0, maka paket data itu akan dikirim ke smua alamat subnetwork 4. Paket data dikirim
dengan bentuk alamat subnet 10.1.1.255
dengan subnet mask 255.255.255.0. 2.4.2. Multicast address "Multicast" kadang-kadang juga salah digunakan untuk mengacu pada siaran multiplexing. Multicast biasa digunakan untuk streaming multimedia, video conference, dan masih banyak yang lain seiring dengan berkembangnya internet. IP Multicast- Sebuah Internet protocol yang digunakan untuk menyiarkan (broadcast) pesan yang sama ke beberapa penerima. Sebuah pesan multicast IP ditransfer ke semua anggota dalam kelompok ditetapkan (http://www.iptvdictionary.com/).
22
Sebuah alamat multicast adalah identifier logis untuk sebuah kelompok host dalam jaringan komputer, yang tersedia untuk proses datagram atau frame yang dimaksudkan untuk multicast untuk layanan jaringan yang ditunjuk. Pengalamatan multicast dapat digunakan di Link Layer (dalam model OSI Layer 2), seperti Ethernet multicast, dan pada layer internet (untuk OSI Layer 3 ) untuk Internet Protocol Versi 4 (IPv4) atau Versi 6 (IPv6). • Ethernet Addressing: The internet assigned numbers authority (IANA) mengalokasikan alamat ethernet dari 01:00:5E:00:00:00 melalui 01:00:5E:7F:FF:FF untuk multicasting. Ini berarti ada 23 bit yang tersedia untuk ID grup multicast. • IP Addressing : Rentang alamat IP multicast dimulai dari 224.0.0.0 sampai 239.255.255.255. Dalam heksadesimal yaitu E0.00.00.00 sampai EF.FF.FF.FF. Untuk menjadi alamat multicast, tiga bit pertama dari byte paling signifikan harus diset dan bit keempat harus jelas. Pada alamat IP multicast terdapat 28 bit, sedangkan pada Alamat Ethernet terdapat 23 bit sehingga ada 5 bit IP multicast tidak dapat dipetakan ke dalam sebuah paket data Ethernet. 5 bit tersebut adalah 5 bit yang paling signifikan.
23
Gambar 2.4. Pemetaan alamat IP ke alamat Ethernet Sumber : http://www.comptechdoc.org/independent /networking/guide/netbroadcasting.html 30 Juni 2011, 12:19 WIB
2.5. Standar Kompresi MPEG-2 MPEG-2 adalah standar untuk "pengkodean generik gambar bergerak dan informasi audio yang terkait". MPEG-2 menggambarkan kombinasi dari kompresi video lossy dan lossy metode kompresi data audio yang memungkinkan penyimpanan dan transmisi film menggunakan media penyimpanan saat ini tersedia dan bandwidth transmisi. Perkembangan teknologi siaran TV yang mengarah ke siaran TV digital telah menetapkan suatu standar kompresi untuk audio dan video digital yaitu MPEG-2. Standar MPEG-2 atau ISO/IEC 13818 digunakan sebagai format dari sinyal TV digital yang disiarkan melalui sistem terrestrial (melalui udara), kabel dan sistem televise satelit. MPEG-2 juga merupakan spesifikasi dari format film dan program lain yang didistribusikan pada DVD dan disc sejenis. Seperti stasiun televisi, penerima siaran televisi, pemutar DVD, dan perangkat lain yang sering dirancang menggunakan standar ini. MPEG-2 adalah yang kedua dari beberapa standar yang dikembangkan oleh Moving Pictures Expert Group (MPEG) dan merupakan standar internasional ISO/IEC 13818. Bagian 1 dan 2 dari MPEG-2 dikembangkan dalam sebuah
24
tim kolaboratif bersama dengan ITU-T, dan memiliki nomor katalog masingmasing di Seri Rekomendasi ITU-T.
Gambar. 2.5. MPEG-2 digunakan di DVB dan DVD MPEG-2 digunakan pada Digital Video Broadcast dan Digital Versatile Discs, MPEG transport stream, TS, dan MPEG program stream, PS, adalah format. MPEG-2 adalah inti dari televisi digital dan format DVD. MPEG-2 video tidak dioptimalkan untuk bit rate rendah, terutama kurang dari 1 Mbit / s = 1,000,000 bit/s pada resolusi definisi standar. 2.5.1. MPEG-2 Transport Stream MPEG-2 Transport Stream adalah sebuah standar transmisi dan penyimpanan audio, video dan data, digunakan pada sistem DVB dan ATSC. Sebuah MPEG-2 Transport Stream, juga disebut sebagai MPEG-2 atau MPEG TS atau hanya TS, adalah format khusus untuk transmisi MPEG (MPEG-1, MPEG-2, atau MPEG-4) video muxed dengan stream lainnya. Ini umumnya digunakan untuk televisi digital dan streaming di seluruh jaringan, termasuk internet. Transport stream menentukan format kontainer encapsulating packetized elementary streams, dengan koreksi kesalahan dan fitur
25
sinkronisasi streaming untuk menjaga integritas transmisi ketika sinyal yang terdegradasi.
Gambar 2.6. Alur model MPEG-2 transport stream Beberapa program MPEG digabungkan kemudian dikirim ke antena pemancar. Sebuah ATSC receiver kemudian dekode file TS dan menampilkannya. Transport stream memiliki beberapa elemen penting, elemenelemen tersebut adalah : 1. Paket Sebuah paket adalah unit dasar dari data dalam aliran transportasi. paket memiliki data header dan payload. Header tersebut berisikan informasi tabel diluar konten data yang terdapat di dalam paket. Semua konten data di dalam paket berada di bagian payload.
26
Gambar 2.7. Paket transport stream Header terdiri dari sync byte, yang nilainya 0x47, diikuti oleh tiga flags satu-bit dan 13-bit paket Identifier (PID). Kemudian 2 bit Scrambling control Dikuti oleh 4-bit continuity counter. Opsional lahan transport tambahan sebagai sinyal opsional adaption field. Sisa dari paket terdiri dari payload, Panjang dari paket adalah 188 byte. 2. PID Setiap paket di transport stream yang terdiri dari elementary stream memiliki paket ID 13 bit (PID) sebagai identitas dari setiap paket tersebut saat dilakukan multiplex. Saat dilakukan demultiplex, demultiplexer akan mengekstrak elemtary stream dari transport stream dengan mencari paket-paket yang memiliki PID sama. Kebanyakan aplikasi, pembagian waktu multiplexing berguna untuk memutuskan seberapa sering PID tertentu muncul dalam aliran transportasi.
27
3. Program Transport stream memiliki konsep program. Setiap program tunggal dideskripsikan oleh Program Map Table (PMT) yang memiliki PID yang unik, dan elementary streams yang terkait dengan program yang memiliki PID tercantum dalam PMT. Sebagai contoh, sebuah transport stream yang digunakan pada televisi digital mungkin berisi tiga program, untuk mewakili 3 siaran televisi. Misalkan masing-masing saluran terdiri dari satu video stream, satu atau dua stream audio, dan setiap metadata yang diperlukan. Sebuah penerima ingin dekode "channel" tertentu hanya diizinkan dekode muatan dari setiap PID yang terkait dengan program. Karena hal ini dapat membuang isi dari semua PID lainnya. Sebuah transport stream dengan lebih dari satu program yang disebut sebagai MPTS - Multi Program Transport Stream. Sebuah program tunggal stream transportasi disebut sebagai SPTS. 4. PSI (Program Specific Information) Terdapat empat tabel PSI: Program Association (PAT), Program Map (PMT), Conditional Access (CAT), dan Network Information (NIT). • PAT (Program Association Table) adalah daftar semua program yang tersedia dalam transport stream. Setiap program yang tercantum didentifikasi dengan nilai 16-bit yang disebut program_number. Setiap program yang tercantum dalam PAT
28
memiliki nilai terkait dari PID untuk Program Map Table (PMT).
Untuk
program_number
bernilai
0x0000
sudah
dialokasikan untuk NIT. Akan tetapi, jika pada PAT tidak terdapat suatu program apapun, maka NIT akan diberikan PID 0x0010. Paket TS yang berisi paket PAT informasi selalu memiliki PID 0x0000. • CAT - Conditional Access Table mendefinisikan jenis pengacakan yang digunakan dan nilai-nilai PID dari transport streams yang mengandung manajemen akses bersyarat dan hak informasi entitlement information (EMM). PAT dikirim dengan nilai PID 0x001. • Program Map Tables (PMTs) berisi informasi tentang program. Setiap program memiliki 1 PMT. • NIT - Network Information Table (PID=10, berisi rincian dari jaringan pembawa yang digunakan untuk mengirimkan MPEG multiplex, termasuk frekuensi pembawa) 5. PCR (Program Clock Reference) Pada transport stream dapat memiliki beberapa program yang sudah di-multiplex. Setiap program diharapkan dapat disinkronisasikan saat dilakukan decode pada setiap program. Oleh karena itu, PCR dimasukkan saat proses multiplex dilakukan.
29
2.5.2. Multiplexing Dalam elektronik, sebuah multiplexer atau mux adalah perangkat yang memilih salah satu dari beberapa sinyal input analog atau digital dan meneruskan input yang dipilih ke dalam satu line.
Gambar 2.8. Skema Multiplexer 2-ke-1 Sebuah multiplexer dari 2n input memiliki n line, dimana digunakan untuk memilih masukan mana yang akan dikirim ke ouput. Multiplexer biasa digunakan untuk meningkatkan sejumlah data yang dapat dikirim melalui jaringan internet dengan sejumlah waktu dan bandwith tertentu. Dalam telekomunikasi dan jaringan komputer, multiplexing (atau dikenal dengan muxing) adalah sebuah metode dimana beberapa sinyal pesan analog atau digital data stream digabungkan menjadi satu sinyal melalui media bersama. Multiplexing yang dimaksud disini secara teknik adalah sebuah audio dan video stream digabung menjadi satu transport stream. Pada sistem MPEG-2, multiplexing merupakan salah satu layanan yang berfungsi untuk menggabungkan dua atau lebih dari elementary stream ke dalam sebuah single stream yang dapat dibawa pada kanal transmisi.
30
Gambar 2.9. Bagian komponen dari MPEG-2 transport stream pada proses multiplexing
Sumber: http://knol.google.com/k/mpeg-2-transmission#
Elementary stream (ES) merupakan suatu paket (stream) yang hanya berisikan video atau audio saja. Dari masing-masing ES tersebut akan dipaketkan menjadi suatu Packet Elementary Stream (PES). Kemudian, beberapa PES akan di-multiplex menjadi suatu Program Stream (PS). Selanjutnya PS yang bisa lebih dari satu akan di-multiplex menjadi suatu file TS yang akan ditransmisikan pada MPEG-2 stream. 2.6. OpenCaster Open Caster adalah kumpulan dari open source dan free software yang berjalan pada sistem operasi linux untuk memainkan dan multiplex MPEG transport stream (format standar untuk transmisi dan menyimpan audio,video) OpenCaster merupakan sebuah perangkat lunak berlisensi GNU/GPL yang dapat digunakan untuk menghasilkan paket data MPEG-2 transport stream dan memanipulasi paket data tersebut. Perangkat lunak ini berjalan di sistem Linux dan memiliki tujuan dasar untuk dapat melakukan multiplex
31
video dan audio digital, serta mensinkronisasikan pada hasil keluaran. Adapun pengembangan dari OpenCaster, baik dari segi tools ataupun library yang disediakan adalah menggunakan bahasa pemrograman Python (2.4) dan C (ANSI ’99). Python digunakan untuk menghasilkan data bagian, sedangkan C digunakan sebagai pengkodean transport stream. Selain menghasilkan paket data MPEG-2 transport stream dan memanipulasi paket data, OpenCaster juga memiliki kemampuan spesifik dalam segi fungsionalitasnya. Berikut adalah beberapa kemampuan lainnya yang dapat dilakukan oleh OpenCaster untuk versi terbaru, yaitu versi 3.0: • Membuat tabel PSI/SI • Mampu memainkan setiap jenis berkas MPEG-2 transport stream dengan baik • Menghasilkan data stream lainnya yang dibawa pada sebuah TS • Mengubah filesystem di carousels DSMCC • Memanipulasi TS secara real time yang disimpan dalam hard disk • Melakukan multipleks transport stream constant bit rate (CBR) • Melakukan restamp PCR, PTS & DTS • Melakukan DVB-ASI dengan menggunakan perangkat keras PCI dan USB • Melakukan DVB-S, DVB-T, dan DVB-C dengan menggunakan perangkat keras DekTec DTA-110T. • Dukungan awal untuk H264 (cek manual untuk x264 misalnya, tidak mendukung untuk file gabungan)
32
• udp transportasi stream remultiplexing (input dan ouput harus ts multicast melalui udp) • alat kompresi m2ts • Mendukung frame rate 24fps Pada OpenCaster terdapat fungsi-fungsi yang dapat dijalankan untuk melakukan proses multiplex ataupun memanipulasi data transport stream. Pada Tabel 2.1 memperlihatkan beberapa fungsi dalam melakukan kedua proses tersebut yang terdapat di OpenCaster: Tabel 2.1 Daftar beberapa fungsi pada OpenCaster. Nama
Deskripsi
Fungsi Tsloop
Membuat berkas transport stream melakukan proses loop. Sintaks: tsloop filename1.ts filename2.ts ... filenameN.ts
Tsstamp
Memperbaiki PCR (Program Clock Reference) dimana informasi pemilihan waktu pada transport stream mengalami kesalahan. Sintaks: tsstamp input.ts transport_rate_bit/s
Tscbrmuxer
Melakukan multiplex berbagai data, baik data audio, video, ataupun data lainnya yang akan disiarkan melalui transport stream. Sintaks: tscbrmuxer b:bitrate_pat pat.ts b:bitrate_cat cat.ts b:pmt1_bitrate pmt1.ts b:nit_bitrate nit.ts
tspcrmeasure
Mengkalkulasi laju bit dari suatu berkas transport
33
stream. Sintaks: tspcrmeasure input.ts expected_bit/s Tspidmapper
Mengubah nilai PID yang lama ke sebuah nilai PID yang baru. Sintaks: tspidmapper input.ts [b:buffer_size_in_packets] PID1 to PID2 and PID3 to PID4 and ...
Tsnullshaper
Memasukkan paket null ke dalam berkas transport stream dengan yang berfungsi untuk mengisi transport stream yang masih kosong. Sintaks: Tsnullshaper
input.ts
[b:packets_buffer]
+file1.ts
+file2.ts +file3.ts ... t:1000 filex.ts ... s: ip.ts tsudpsend
Melakukan penyiaran audiovideo melalui jaringan IP menggunakan protokol UDP. Sintaks: tsudpsend [file.ts] [ip address] [port] [bitrate]
2.7. FFmpeg FFmpeg adalah alat konversi audio / video.. FFmpef termasuk libavcodec, library terkemuka dari open source codec. Sebuah server streaming untuk live broadcast juga termasuk dalam FFmpeg. FFmpeg adalah cross-platform solusi untuk merekam, mengubah dan stream audio dan video. FFmpeg adalah piranti lunak berlinsensi LGPL atau GPL tergantung konfigurasi yang dipilih. Sintaks Dasar dari command FFmpeg : [rain]$ ffmpeg -i input.avi output.mpg
34
FFmpeg secara otomatis menebak encoders mana yang akan digunakan dengan memperhatikan format input dan file output. Pastikan menyebutkan nama file dengan lengkap beserta dengan format file tersebut. Generalisasi standar sintaks command dari ffmpeg : [rain]$ ffmpeg -i inputfile.fmt1 outputfile.fmt2 Catatan : Pilihan FFmpeg selalu menerapkan ke file berikutnya dalam daftar argumen. Tidak peduli apakah itu input atau output file. Misalnya setiap flag/argumen yang disebutkan dalam perintah setelah nama file input maka selanjutnya akan menjadi nama file output. Berikut ini beberapa kombinasi sintaks yang lain yang terdapat pada ffmpeg : 1. Mengatur Resolusi atau frame size dari video menggunakan ffmpeg Pengaturan frame size untuk hasil video akhir menggunakan flag (tanda) '-s'.[shredder12]$ ffmpeg -i inputfile.avi -s 320x240 outputfile.avi Dapat menggunakan notasi langsung di tempat menuliskan resolusi. contoh: hd720 singkatan untuk 1280x720. Berikut akan ditulis beberapa singkatan frame size lain yang sering digunakan. Lihat Tabel 2.2. Variasi pilihan untuk singkatan frame size. Tabel.2.2. Variasi pilihan untuk singkatan frame size sqcif 4cif vga uxga qsxga wxga woxga
128x96 704x576 640x480 1600x1200 2560x2048 1366x768 2560x1600
qcif qqvga svga qxga hsxga wsxga wqsxga
176x144 160x120 800x600 2048x1536 5120x4096 1600x1024 3200x2048
cif qvga xga sxga wvga wuxga wquxga
352x288 320x240 1024x768 1280x1024 852x480 1920x1200 3840x2400
whsxga 6400x4096
whuxga 7680x4800
cga
320x200
hd480
hd720
hd1080
1920x1080
852x480
1280x720
35
2. Menagutur bitrate dari Video -b
tanda ini digunakan untuk mengatur bitrate dari video file [shredder12]$ ffmpeg -i input.avi -b 200k output.avi 3. Mangatur frame rate dari video -r tanda ini digunakan untuk mengatur frame rate. [shredder12]$ ffmpeg -i input.avi -r 25 output.avi 4. Konversi High Quality file menjadi .flv format file Spesifikasi output: Video Bitrate: < 500 kbps aspect ratio: 480x360 audio bitrate: 32kbps Frames per second: 25 Menggunakan komen berikut untuk menerapkan spesifikasi diatas. [shredder12]$ ffmpeg -i recorded_file.mov -ar 22050 -ab 32k -r 25 -s 480x360 -vcodec flv -qscale 9.5 output_file.avi •
ar digunakan untuk mengatur frekuensi audio untuk output file. Nilai standar ar adalah 41000Hz tapi contoh diatas menggunakn nilai yang lebih randah untuk menghasilkan flv file.
•
qscale adalah skala kuantisasi yang pada dasarnya merupakan skala kualitas untuk kecepatan bit variabel dan coding, dengan angka yang lebih rendah Unutk mengetahui seluruh format yang didukung oleh FFmpeg dapat
menjalankan command berikut ini :
[rain]$ ffmpeg -formats
36
5. Pengkodean dasar Audio pada FFmpeg Stelah mengetahui command dasar dari ffmpeg, sekarang beberapa pilihan dasar yang dapat digunakan untuk pengkodean audio transcoding -ar untuk mengatur frekuensi audio audio untuk output file. Nilai comman yang digunakan adalah 22050, 44100, 48000 Hz. -ac Mengatur jumlah saluran audio. -ab tanda ini digunakan untuk mengatur nilai bitrate dari file audio. misalnya menggunakan-ab 128k untuk menggunakan bitrate 128KB. Semakin tinggi nilai, semakin baik kualitas audio. Ini adalah salah satu faktor penting yang bertanggung jawab atas kualitas audio. Tapi itu tidak berarti Anda dapat membuat file audio yang jelek menjadi lebih baik dengan meningkatkan bitrate nya. File yang dihasilkan hanya akan menjadi ukuran yang lebih besar. -an singkatan untuk "no audio recording" dan dapat digunakan untuk menghapus sebuah stream audio dari file media. Ketika menggunakan pilihan ini, semua yang lain atribut yang terkait audio dibatalkan. -acodec pilihan ini memungkinkan untuk memilih jenis codec audio yang inginkan. misalnya jika Anda menggunakan ffmpeg pada file mp3, maka akan membutuhkan libmp3lame audio codec. Anda dapat menentukan dengan menggunakan-acodec libmp3lame. Meskipun, secara default, ffmpeg yang akan mencari dari codec yang dibutuhkan (dengan menebak dari format file output) .
37
[shredder12]$ ffmpeg -i input.wav output.mp3 Jika tidak mencari format file tertentu, kemudian coba dan gunakan format open audio ogg vorbis. Berikut printah untuk mengkonversi file audio ke format ogg vorbis. [shredder12]$ ffmpeg -i input.mp3 -b 128k output.ogg Sintak tersebuat akan langsung mengkonversi file audio mp3 menjadi format file open ogg.
BAB III METODE PENELITIAN Penelitian ini merupakan rangkaian dalam penulisan skripsi tentang perancangan aplikasi antarmuka pemacar siaran TV digital menggunakan media Internet Protokol. Metode penelitian yang digunakan dalam pembuatan aplikasi pada bidang peminatan ini meliputi dua metode, yaitu metode pengumpulan data dan metode pengembangan sistem. Metode yang digunakan dalam pembuatan aplikasi pada bidang peminatan ini meliputi dua metode, yaitu metode pengumpulan data dan metode pengembangan sistem. 3.1. Metode Pengumpulan Data Penyusunan skripsi ini memerlukan data-data serta informasi sebagai bahan yang dapat mendukung kebenaran materi uraian dan pembahasan. Adapun metode pengumpulan data yang digunakan dalam pembahasan skripsi ini adalah menggunakan : 3.1.1. Studi Kepustakaan Pada tahap pengumpulan data dengan cara studi kepustakaan bermaksud untuk mengumpulkan data dan informasi yang relevan dengan objek penelitian. Pencarian data dengan buku maupun mencari artikel yang berkaitan dengan objek penelitian melalui Internet. Data-data tersebut dijadikan sebagai landasan teori skripsi.
38
39
Beberapa refrensi diantaranya adalah : 1.
Hary Budiarto. et al. 2007. Sistem TV Digital dan Prospeknya di Indonesia. Bandung : PT. Multikom Indo Persada.
2.
Fungsi-fungsi
ffmpeg
:
http://ffmpeg.org/ffmpeg-
doc.html#SEC98 3.1.2. Studi Literatur Selain studi pustaka , menggunakan referensi lain berupa : bahan
tulisan
dari
skripsi
atau
penelitian
yang
objek
pembahasannya hampir sama, contohnya adalah penelitian tentang TV Digital, IPTV dan skripsi atau penelitian menggunakan metode LUCID (Logical User Centered Interface Diagram). Berikut beberapa studi literature yang digunakan : 1. PEMANCAR TV DIGITAL DVB-T BERBASIS SOFTWARE http://digilib.its.ac.id/ITS-Undergraduate-100010039894/12839 2. Analisis Dan Usulan Pengembangan User Interface Software Permainan Edukasi Untuk Anak- Anak Dengan Metode Lucid (Logical User Centered Interaction Design) ebookbrowse.com/l2h-004-604-doc-d61323980 3.1.3. Observasi Observasi
adalah
cara
pengambilan
data
dengan
menggunakan mata tanpa ada pertolongan alat standar lain untuk keperluan tersebut (Moh.Nazir,2005:175)
40
Perancangan
aplikasi
melakukan
pengamatan
atau
peninjauan langsung yang dilakukan di Pusat Teknologi Informasi dan Komunikasi (PTIK), Badan Pengkajian dan Penerapan Teknologi (BPPT), Lantai 21 Gedung 2 Jalan MH. Thamrin no 8 Jakarta Pusat 10340. Obeservasi ini dilakukan pada bulan April sampai bulan Agustus 2011. untuk mengetahui secara langsung keadaan objek penelitian yang sebenarnya. Hal ini dilakukan untuk memperoleh informasi secara jelas mengenai data-data dan informasi dalam perancangan aplikasi. 3.2.
Metode Perancangan Aplikasi Perancangan aplikasi ini menggunakan metode Lucid (Logical User-Centered Design). LUCID adalah suatu kerangka kerja untuk melakukan kegiatan yang mendefinisikan dan bentuk produk interaktif. Pada awalnya berguna untuk mendukung pengembangan perangkat lunak yang sangat bermanfaat dan situs web. LUCID juga berguna untuk jenis produk interaktif lainnya. Lucid memandu kita untuk memutuskan fungsionalitas produk yang butuhkan. Hal ini tidak hanya fokus pada apa yang seharusnya produk lakukan tetapi bagaimana merancang fungsi yang terbaik dari perspektif pengguna. Prinsip utama dari Kerangka Lucid adalah bahwa merancang produk harus menawarkan pengguna efektivitas, efisiensi, keterlibatan, toleransi kesalahan dan kemudahan belajar. (http://leadersintheknow.biz/Portals/0/Publications/Lucid-Paper-v2.pdf)
41
Enam tahapan pada metode Logical User-Centered Design (Charles B. Kreitzberg, PhD) yaitu : 1. Envision (Membayangkan): Mengembangkan konsep produk secara jelas, Menentukan tujuan kegunaan untuk rancangan antarmuka.
2. Conduct User and Task Analysis (Perilaku pengguna dan Analisis tugas): Meneliti dan menganalisa kebutuhan pengguna agar mencapai target sesuai dengan harapan.
3. Design and Prototype (Rancangan dan Prototipe) : Merancang konsep dan membuat kunci layar prototipe untuk mengilustrasikan antarmuka. 4. Evaluate and Refine (Evaluasi dan Perulangan) : Rancangan berulang dan perbaikan terhadap rancangan. 5. Complete Detailed Design and Production (Melengkapi detail Rancangan dan Produksi) : Penerapan pada perangkat lunak. 6. Release and Follow Up (Rilis dan tindakan lanjut) : Merencanakan dan implementasi pengenalan produk kepada pengguna , termasuk evaluasi kemampuan akhir untuk meyakinkan bahwa hasil akhir telah dibangun seperti yang telah dirancang pada awal projek.
Perancangan antarmuka dapat dilakukan dengan menggunakan alat Delphi, Power Builder,VC++, Vbasic, Motif, Java, Toolbook, Hypercard, Access, Labview, Netscape Gold, Internet Explorer,Powerpoint,MS Access, SE tools. Komponen utama Lucid adalah ease-of-understanding (memudahkan
untuk
mengerti)
dan
ease-to-use
(memudahkan
dalam
menggunakan). Lucid memfokuskan pada ‘front-end’ dari perangkat lunak: menaksir
kebutuhan dari pengguna (user requirement) dan mengembangkan
42
sebuah tampilan, perasaan dan pengarahan aliran (flow) yang mendukung kebutuhan fungsi (function requirements) dari sebuah sistem. Lucid tidak mempermasalahkan arsitektur teknis dibandingkan beberapa metodologi yang telah ada sebelumnya.
3.2.1. Envision (Membayangkan) Pada tahap ini, tahapan awal untuk menentukan rancangan aplikasi. Terdapat dua blok dimana blok lama atau rancangan lama adalah titik awal sehingga ide baru pada rancangan baru tercipta. Berikut blok rancangan lama dan rancangan baru yang terdapat pada Tabel. 3.1 dibawah ini : Tabel 3.1 Rancangan Lama dan Rancangan Baru Rancangan Lama 1. OpenCaster
Rancangan Baru
menggunakan 1. Membuat rancangan antar muka
terminal.
agar
pengguna
dalam
lebih
menyiarkan
mudah konten
program TV Digital. 2. Format video yang digunakan 2. Aplikasi adalah *.ts (transport stream)
ini
akan
dilakukan
pengaturan agar format selain *.ts (transport stream) dapat digunakan pada aplikasi ini.
3.2.2. Conduct User and Task Analysis (Perilaku pengguna dan Analisis tugas) Tahap ini mencari kebutuhan dari pengguna untuk merancang aplikasi antarmuka yang akan dibuat. Beberapa analisa kebutuhan aplikasi yang dirancang, yaitu :
43
1. Merancang GUI (Guide User Interface) untuk mempermudah admin pemancar siaran TV digital dalam menyiarkan konten. 2. Format konten yang dapat dilakukan multiplexing sebelum akhirnya dipancarkan hanya file dengan format *.ts, maka dirancang agar format file lain dapat digunakan pada aplikasi yang akan dibuat. Tahap ini juga akan menganalisa spesifikasi dan kebutuhan
(Specification and Requirement) dari Aplikasi, Spesifikasi aplikasi ini terbagi menjadi dua yaitu spesifikasi perangkat keras dan perangkat lunak yang diperlukan oleh aplikasi ini. 3.2.3. Design and Prototype (Rancangan dan Prototipe) Setelah analisis kebutuhan selesai maka tahap selanjutnya adalah perancangan dan pembuatan prototype bagaimana aplikasi antarmuka ini akan berjalan. Tahap perancangan (design) adalah membuat spesifikasi aplikasi, spesifikasi yang akan dibuat berdasarkan pada langkah berikut :
1. UML (usecase diagram, sequence diagram dan class diagram) 2. Perancangan bagan alir (process flowchart). 3. Perancangan antar muka (user interface).
3.2.4. Evaluate and Refine (Evaluasi dan Perulangan) Tahap ini akan dilakukan analisa kembali terhadap rancangan yang telah disusun sebelumnya, dan akan dilakukan perbaikan terhadap rancangan bila diperlukan. Evaluasi dilakukan pada kasus ini oleh admin, apakah rancangan prototipe sudah sesuai dengan harapan admin. Jika
44
sesuai maka tahap selanjutnya akan dilakukan, jika tidak maka langkah 1,2 dan 3 diperbaiki.
3.2.5. Complete Detailed Design and Production (Melengkapi detail Rancangan dan Produksi) Pada tahap ini akan dilakukan proses produksi pembuatan aplikasi antarmuka, dimana protyping yang sudah disepakati akan diterjemahkan kedalam bahasa pemograman yang sesuai. Aplikasi ini dibuat menggunakan editor : Netbeans dan multimedia tools : OpenCaster, ffmpeg. Rancangan latar belakang aplikasi dirancang menggunakan Adobe Photoshop CS2.
3.2.6. Release and Follow Up (Rilis dan tindakan lanjut) Pada tahap akhir ini yang dilakukan adalah merencanakan dan melaksanakan pengenalan produk kepada pengguna, pada kasus ini aplikasi antarmuka akan dikenalkan kepada admin pemnacar konten TV digital. Tahap ini juga akan dilakukan evaluasi kegunaan akhir untuk meyakinkan bahwa hasil akhir yang telah dibangun seperti yang telah dirancang pada awal proyek. Membuat dan memantau mekanisme umpan balik untuk mengumpulkan data untuk peluncuran (launching/release).
3.3. Peralatan Penelitian Peralatan yang digunakan pada saat penelitian antara lain berupa peragkat keras dan perangkat lunak : 1. Perangkat Keras Perangkat keras yang digunakan dalam penelitian ini adalah sebuah laptop yang
digunakan
sebagai
pemancar
dengan
spesifikasi
Processor
Pentium(R) Dual-Core CPU T4200 @ 2.00 GHz , Memory RAM 2 GB
45
DDR2, DVD super multi dan WLAN. Dan sebuah laptop lainnya dengan syarat memiliki WLAN. 2. Perangkat Lunak Perangkat lunak yang digunakan pada penelitian ini antara lain : • Sistem Operasi Open Source (Ubuntu 10.04 LTS) • Open Caster 2.4 sebagai perangkat lunak server broadcast • FFMPEG, dvgrab, dan tstools • JDK (Java Development Kit) versi 6 sebagai Java Virtual Machine • Netbeans IDE 6.9 sebagai tempat mengembangkan program. • Photoshop CS 2 sebagai tempat untuk pendesain interface aplikasi • VLC media player
BAB IV ANALISA, PERANCANGAN DAN IMPLEMENTASI 4.1. Profil BPPT 4.1.1. Sejarah BPPT Badan Pengkajian dan Penerapan Teknologi (BPPT) adalah lembaga pemerintah non-departemen yang berada dibawah koordinasi Kementerian Negara Riset dan Teknologi yang mempunyai tugas melaksanakan tugas pemerintahan di bidang pengkajian dan penerapan teknologi. Proses pembentukan BPPT bermula dari gagasan Mantan Presiden Soeharto kepada Prof Dr.Ing. B.J. Habibie pada tanggal 28-Januari-1974. Dengan surat keputusan no. 76/M/1974 tanggal 5-Januari-1974, Prof Dr. Ing. B.J. Habibie diangkat sebagai penasehat pemerintah dibidang advance teknologi dan teknologi penerbangan yang bertanggung jawab langsung pada presiden dengan membentuk Divisi Teknologi dan Teknologi Penerbangan (ATTP) Pertamina. Melalui
surat
keputusan
Dewan
Komisaris
Pemerintah
Pertamina No.04/Kpts/DR/DU/1975 tanggal 1 April 1976, ATTP diubah menjadi Divisi Advance Teknologi Pertamina. Kemudian diubah menjadi Badan Pengkajian dan Penerapan Teknologi melalui Keputusan Presiden Republik Indonesia No.25 tanggal 21 Agustus 1978. Diperbaharui dengan Surat Keputusan Presiden No.47 tahun 1991.
46
47
Berikut keepala-kepalaa BPPT dari awal berdiiri sampai ssekarang: 1. Prof. Dr.Ing. B.JJ. Habibie 1974-1998 2. Prof. Dr. Raharddi Ramelan 1998-1998 1 M 1998 8-1999 3. Prof. Dr. Zuhal MSEE 4. Dr. A.S. A Hikam 1999-2001 5. Ir. M.. Hatta Rajaasa 2001-20 004 6.Dr. Kuusmayanto Kadiman 20 004-2006 7. Prof. Ir. Said Djaauharsyah Jenie, Sc.D 2006-2008 2 8. Dr. Irr. Marzan A. A Iskandar 2008-Sekara 2 ang 4.1.2. Struktur O Organisasi BPPT
mbar. 4.1. Struktur Orgganisasi BPP PT Gam
48
4.1.3. Visi dan Misi BPPT 1. VISI Pusat Unggulan Teknologi yang mengutamakan Kemitraan melalui Pemanfaatan hasil rekayasa teknologi secara Maksimum. 2. MISI • Memacu perekayasaan teknologi untuk meningkatkan daya saing produk industri • Memacu perekayasaan teknologi untuk meningkatkan pelayanan publik instansi pemerintah. • Memacu perekayasaan teknologi untuk kemandirian bangsa 4.2. Hasil Obeservasi Perancangan aplikasi melakukan pengamatan atau peninjauan langsung yang dilakukan di Badan Pengkajian dan Penerapan Teknologi, Bagian Pusat Teknologi Informasi dan komunikasi Gedung II Lt.21, Jl. M.H. Thamrin No.8 Jakarta Pusat 10340, untuk mengetahui secara langsung keadaan objek penelitian yang sebenarnya. Hal ini dilakukan untuk memperoleh informasi secara jelas mengenai data-data dan informasi dalam perancangan aplikasi. Berikut ini merupakan informasi yang didapat dari tempat penelitian : Pada gambar 4.2 dibawah ini digambarkan tentang model topologi yang dapat diterapkan dalam sistem IPTV.
49
Gambar 4.2 Model Topologi yang dapat diterapkan Sumber: konsep BPPT Pada gambar di atas dijelaskan bahwa pada sisi penyelenggara terdiri dari penyedia konten dan penyiar konten. Penyedia konten bertugas memproduksi konten yang akan disiarkan.
Dalam hal ini
penyedia konten tersebut adalah setiap stasiun televisi. Sedangkan pada penyiar konten, bertugas mengunduh konten pada penyedia konten kemudian melakukan multiplexing dan menyiarkan hasil multiplex tersebut melalui jaringan IP. Kemudian pada sisi penikmat konten, dapat menikmati siaran dengan syarat terhubung dengan jaringan internet (dapat juga untuk jaringan lokal). Siaran Televisi Digital IPTV ini dapat dinikmati dengan menggunakan pesawat televisi maupun perangkat komputer. Untuk dapat menikmati layanan IPTV menggunakan pesawat televisi, khususnya televisi analog maka diperlukan sebuah set top box yang
50
mendukung IPTV. Set top box ini berfungsi sebagai alat yang dapat mengkonversi sinyal siaran digital yang diterima menjadi sinyal analog yang dapat diterima oleh pesawat televisi analog. Sedangkan untuk menikmati layanan IPTV menggunakan komputer, diperlukan media player yang mendukung streaming video pada jaringan, contohnya VLC media player. Adapun proses transmisi data yang terjadi ketika proses penyiaran dapat dilihat pada gambar struktur komunikasi data berikut.
server
klien
Gambar 4.3 Layer Program Sumber: Konsep TCP/IP Layer Pada gambar 4.3 di atas merupakan gambaran aliran data yang terjadi dari server menuju klien. Proses tersebut digambarkan dalam TCP/IP layer. 1. Aplication Layer Pada layer ini tedapat perangkat lunak OpenCaster IPTV. Pada perangkat lunak tersebut, akan melakukan multiplex audio
51
video dengan bantuan tabel PSI yang dibentuk. Kemudian mengubahnya menjadi pesan UDP melalui perintah “tsudpsend”.
Gambar 4.4. Proses multiplexing program Selain OpenCaster, yang berada pada layer ini adalah VLC media player. Pada VLC media player terjadi proses demultiplex, yaitu memecah pesan UDP hasil multiplexing menjadi beberapa stream sehingga dapat dinikmati oleh klien. 2. Transport Layer Yang berada pada lapisan transport ini adalah protokol UDP yang digunakan sebagai media transmisi data. Alasan menggunakan UDP karena UDP merupakan protokol yang tidak perlu membuat koneksi terlebih dahulu dengan sebuah host tertentu, maka transmisi broadcast pun dimungkinkan. Sebuah protokol lapisan aplikasi dapat mengirimkan paket data ke beberapa tujuan dengan menggunakan alamat multicast atau broadcast. 3. Internet Layer Yang berada pada internet layer adalah IP multicast. IP multicast
adalah
metode
pengiriman
datagram
IP
kepada
sekelompok penerima dengan transmisi tunggal.
52
4. Physical Layer Yang termasuk ke dalam layer ini adalah perangkat media transmisi yang digunakan pada sistem IPTV seperti ethernet card, kabel UTP, dan modem. 4.3. Alasan Menggunakan LUCID Alasan menggunakan metode LUCID, karena kerangka LUCID menawarkan pengguna efektifitas, efisiensi, keletelibatan, toleransi kesalahan dan kemudahan dalam belajar terhadap aplikasi. Berikut penjelasan lebih lanjut manfaat dari produk berdasarkan metode LUCID, yaitu : 1. Efektifitas Menurut kamus besar bahasa Indonesia, Kata efektif berarti ada efeknya (akibatnya, pengaruhnya, kesannya); manjur atau mujarab (tt obat); dapat membawa hasil; berhasil guna (tt usaha, tindakan); mulai berlaku (tt undang-undang, peraturan). Berdasarkan pengertian kamus bahasa Indonesia maka efektifitas yang dimaksud pada aplikasi ini adalah aplikasi memberikan pengaruh yang positif terhadap admin (pihak yang akan menggunakan aplikasi ini), admin jadi lebih mudah dalam melakukan kegiatan menyiarkan konten siaran TV digital berbasis IPTV, dapat digunakan secara langsung tanpa harus mempelajari fungsi-fungsi dari OpenCaster dan FFmpeg karena aplikasi sudah mengatur semua kebutuhan tersebut pada aplikasi.
53
2. Efisiensi Kata efisien menurut kamus besar bahasa Indonesia yaitu tepat atau sesuai untuk mengerjakan (menghasilkan) sesuatu (dengan tidak membuang-buang waktu, tenaga, biaya), mampu menjalankan tugas dengan tepat dan cermat, berdaya guna, bertepat guna. Sedangkan efisiensi pada aplikasi adalah waktu untuk melakukan penyiaran siaran TV digital berbasis IPTV dapat menghemat waktu karena admin tidak perlu mengetik perintah-perintah OpenCaster dan FFmpeg secara manual melalui terminal yang memerlukan waktu yang lebih banyak dibandingkan menggunakan aplikasi antarmuka ini. 3. Keterlibatan Aplikasi ini menuntut keterlibatan admin dalam melakukan setiap tahap dalam memproses hasil akhir. 4. Toleransi Kesalahan Dengan adanya aplikasi ini maka tingkat melakukan kesalahan dalam melakukan penyiaran konten digital lebih kecil, karena admin yang tidak perlu melakukan pengetikan perintah manual seperti yang telah dijelaskan sebelumnya. 5. Kemudahan belajar Mudah untuk mempelajari kegunaan dari aplikasi antar muka ini karena sudah menggunakan tampilan antarmuka yang mudah dipahami.
54
4.4. Metode Pengembangan Aplikasi 4.4.1. Envision (Membayangkan) Pada tahap ini, tahapan awal untuk menentukan rancangan aplikasi. Terdapat dua blok dimana blok lama atau rancangan lama adalah titik awal sehingga ide baru pada rancangan baru tercipta. Tabel 4.1. Konsep Rancangan Umum Rancangan Lama 1. OpenCaster
menggunakan
terminal.
Rancangan Baru 1. Membuat muka mudah
rancangan
antar
agar pengguna lebih dalam
menyiarkan
konten program TV Digital. 2. Format video yang digunakan adalah *.ts (transport stream)
2. Aplikasi ini akan dilakukan pengaturan agar format selain *.ts (transport stream) dapat digunakan pada aplikasi ini.
Dari tabel
rancangan diatas maka diharapkan pengguna
aplikasi akan lebih mudah menyiarkan konten siaran TV digital karena ada perantara yang mendukung yaitu tampilan antarmuka (interface). Dan file yang bisa untuk aplikasi ini tidak lagi terbatas pada file dengan format video transport stream,file dengan format video yang lain seperti * mp4, wmv, flv, mpg, asf, mov, avi, mkv. Berdasarkan
pendekatan
model
topologi
yang
telah
dijelaskan, pada gambar 4.4 dibawah ini digambarkan topologi penyiaran konten siaran Televisi Digital. Dimana CPU server
55
dipersiapkan untuk dapat menjadi pemancar IPTV dan PC lain atau laptop dijadikan sebagai media penerima siaran.
Gambar 4.5. Rancangan Penyiaran Adapun perbedaan model usulan dengan pendekatan model topologi yang dijelaskan yaitu pada topologi jaringan dan media penerima. Pada rancangan ini pemancar IPTV telah menyediakan filefile sehingga tidak perlu mengunduh dari server penyedia konten dan penerima siaran televisi digital pada rancangan ini hanya perangkat keras Laptop ataupun komputer. 4.3.2. Conduct User and Task Analysis (Perilaku pengguna dan Analisis tugas) Tahap ini mencari kebutuhan dari pengguna untuk merancang aplikasi antarmuka yang akan dibuat. Tahap ini juga menganalisa kebutuhan dari
aplikasi baik kebutuhan non fungsional maupun
kebutuhan fungsional.
56
Beberapa analisa kebutuhan aplikasi yang dirancang, yaitu : 1. Merancang GUI (Guide User Interface) untuk mempermudah admin pemancar siaran TV digital dalam menyiarkan konten. 2. Format konten yang dapat dilakukan multiplexing sebelum akhirnya dipancarkan hanya file dengan format *.ts, maka dirancang agar format file lain dapat digunakan pada aplikasi yang akan dibuat. Spesifikasi dan Kebutuhan (Specification and Requirement) dari Aplikasi, Spesifikasi aplikasi ini terbagi menjadi dua yaitu spesifikasi perangkat keras dan perangkat lunak yang diperlukan oleh aplikasi ini. Berikut merupakan spesifikasi yang diperlukan oleh aplikasi : 1. Spesifikasi Minimum Perangkat Keras Spesifikasi perangkat keras ada dua jenis kebutuhan. yaitu spesifikasi untuk pemancar dan spesifikasi untuk klient. Berikut rincian spesifikasi minimum untuk pemancar maupun klient: 1) Server a) Prosesor dengan kecepatan 3,0 GHz b) Memory 2GB c) Harddisk 80GB d) VGA 128MB e) Monitor f)
Keyboard dan Mouse standar
57
2) Client Kebutuhan minimum perangkat keras untuk client yang dapat digunakan yaitu: a) Prosesor dengan kecepatan 2,0 GHz b) Memory 1GB c) Harddisk 80GB d) VGA 64MB e) Monitor f) Keyboard dan Mouse standar 2. Spesifikasi Perangkat Lunak Aplikasi antarmuka ini yang dirancang harus memiliki tampilan yang bersifat user-friendly sehingga memudahkan pengguna dalam melakukan semua modul pada sistem. Untuk dapat menggunakan aplikasi yang akan dirancang, diperlukan penambahan
perangkat
lunak
pendukung.
Adapun
usulan
spesifikasi perangkat lunak yang dibutuhkan adalah: 1) Spesifikasi perangkat lunak untuk server: Operating System
: Linux Ubuntu
Programming Tools
: Java, Phyton
Editor
: Netbeans
Multimedia Tool
: OpenCaster 3.1, FFmpeg
Desain Tools
: Adobe Photoshop CS 3
Reporting Tools
: Microsoft Word 2007.
58
2) Spesifikasi perangkat lunak untuk client: Media Player yang mendukung streaming pada jaringan IP, seperti VLC media player. Dan
berikut
ini
merupakan
kebutuhan
(requirement)
fungsional admin terhadap aplikasi yang akan diproduksi, rincian kebutuhan aplikasi sebagai berikut: 1. Admin dapat melakukan login dan logout : Adapun fungsi yang dibutuhkan adalah fungsi autentifikasi dengan kondisi username dan password yang dimasukkan. Sehingga hanya admin yang dapat mengakses aplikasi. 2. Admin dapat mengubah konfigurasi dari server yang digunakan : Dibutuhkan penggunaan paket FileInputStream, FileOutputStream, dan util.properties pada pembangkitan kode java untuk dapat menyimpan nama jaringan yang dimasukkan ke dalam sebuah file. 3. Admin dapat mengunduh video atau konten yang akan disiarkan : Dibutuhkan paket JFileChooser untuk dapat membangkitkan fungsi pengunduhan file audio video. 4. Admin dapat memasukan data/ informasi yang penting untuk proses konversi video : Dibutuhkan fungsi-fungsi dari FFmpeg untuk dapat melakukan proses konversi video. 5. Admin dapat melakukan proses filter dan check bitrate : Untuk melakukan proses filter maka diperlukan fungsi tsfilter dan proses check bitrate menggunakan tsmeasure.
59
6. Admin dapat menyiarkan konten melalui internet protocol : Untuk menyiarkan konten dibutuhkan fungsi tsudpsend dengan parameterparameter yang telah dijelaskan pada bab II. 4.3.3. Design and Prototype (Rancangan dan Prototipe) Setelah analisis kebutuhan selesai maka tahap selanjutnya adalah perancangan
dan pembuatan prototype bagaimana aplikasi
antarmuka ini akan berjalan. Tahap perancangan (design) adalah membuat
spesifikasi
aplikasi,
spesifikasi
yang
akan
dibuat
berdasarkan pada langkah berikut : 1. UML (Unified Modeling Language), Unified Modelling Language (UML) adalah sebuah "bahasa" yg telah menjadi standar dalam industri untuk visualisasi, merancang dan mendokumentasikan sistem piranti lunak. UML menawarkan sebuah standar untuk merancang model sebuah sistem. UML mendefinisikan berbagai jenis diagram, dalam rancangan ini menggunakan tiga diagram, yaitu : Usecase Diagram, Sequence Diagram dan Class Diagram. Use case diagram menggambarkan fungsionalitas yang diharapkan dari sebuah sistem. Sequence diagram analis untuk menggambarkan interaksi dinamis antara obyek dalam suatu sistem informasi. Class diagram menggambarkan struktur dan deskripsi class, package dan objek beserta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain.
60
Gambar 4.6. Usecase Diagram
61
Gambar 4.7. Sequence Diagram
1. Admin melakukan login untuk mengawali sistem. 2. Admin memasukkan username. 3. Admin memasukkan password.
62
4. Proses ke tahap selanjutnya yaitu konfigurasi sistem. 5. Sistem akan mengecek apakah jaringan telah diberi ID dengan mengecek keberadaan file konfigurasi. 6. Jika jaringan belum dikonfigurasi, maka sistem akan meminta admin untuk memasukkan username dan network name. 7. Admin memasukkan username dan network name. 8. Masuk ke dalam form Utama diawali dengan tampilan tab video. 9. Admin kemudian diminta untuk memasukan data PID video dimulai dari 150, kemudian Service provider dan Service Name. 10. Admin bebas milih size video dan ratio sesuai dengan pilihan yang tersedia pada aplikasi. 11. Admin mulai mengunduh video dengan menekan tombol browse file, dan memilih video yang akan disiarkan. 12. Informasi jumlah video yang telah akan keluar pada field jumlah video 13. Kemudian admin akan mengeklik tombol convert, dan filter, tombol-tombol ini akan aktif sesuai dengan urutan sistem seperti diagram diatas. 14. Klik tombol check birate dan hasil akan tertera pada field Jumlah Birate. 15. Klik Tombol Muxing, maka semua file akan dilakukan multiplexing dengan parameter-parameter tabel PSI yang telah ditetapkan. 16. Sistem akan meminta admin untuk memasukkan IP dan port server pemancar. 17. Admin memasukkan IP dan port server kemudian mengklik tombol play pada Tab Play.
63
Gambar 4.8. Class Diagram
64
Pada Class Diagram terdapat empat kelas yang terdiri dari: 1. Kelas Login Kelas ini merupakan kelas yang berfungsi untuk mengautentikasi pengguna aplikasi. 2. Kelas Mux Kelas ini dapat dikatakan kelas utama karena pada kelas ini terdapat prosesproses masukan data, pilih size video dan ratio kemudian, upload, convert, filter, check bitrate, multiplexing, dan playout. 3. Kelas PSIGenerator Kelas in merupakan kelas untuk melakukan pengelolaan pada tabel PSI yang digunakan pada penyiaran. 4. Kelas SimpanKonfig Kelas ini berfungsi sebagai pendefinisian nama jaringan dan ID Region jaringan.
65
2. Perancangan bagan alir (process flowchart). Mulai
Masukan Data
Konversi file video jadi .*ts
Filter file .*ts
Check bitrate
Hasil video.*ts
Tambah Video
Ya
Tidak
Muxing Video
Broadcast Video
Selesai
Gambar 4.9. Flowchart proses Video
66
Berikut ini merupakan potongan program berdasarkan flowchart proses. Dibawah ini merupakan coding untuk proses konversi video. String convert="ffmpeg ‐i "+jLokasiFile.getText()+ " ‐ar 22050 ‐ab 128k ‐b 2500k" + " ‐r 24 ‐maxrate 5000k ‐bufsize 256k ‐vcodec mpeg2video ‐s "+size+" ‐aspect "+ratio+"" + " ‐acodec mp2 ‐map 0:0 ‐map 0:1 ‐mpegts_start_pid 0x"+jPIDVideo1.getText()+"" + " ‐metadata service_provider="+jServisprovider.getText()+" ‐ metadata service_name="+jServisname.getText()+" ‐y "+folderUser+"temps/"+ini+".ts";
Dan dibawah ini adalah coding untuk proses filter video. Sehingga data video yang tertinggal hanya PID video dan PID audio. String[] fs = new String[3]; fs[0] = "/bin/sh";//fungsi linux untuk buka consul baru fs[1] = "‐c"; fs[2] = "tsfilter "+folderUser+"temps/"+ini+".ts +"+Integer.parseInt(jPIDVideo1.getText(),16)+" +"+(Integer.parseInt(jPIDVideo1.getText(),16)+1)+">"+folderUser +"temps/"+ini+"f.ts";
Sedangkan coding berikut adalah coding untuk tombol next. Tombol next ini memiliki fungsi untuk menghilangkan data yang telah pernah kita masukan, kemudian setelah tombol ini ditekan
67
maka, tombol browse akan aktif dan tombol next tidak dapat difungsikan. private void nextButtonActionPerformed(java.awt.event.ActionEvent evt) { jLokasiFile.setText(""); Jbirate.setText(""); jPIDVideo1.setText(""); jServisprovider.setText(""); jServisname.setText(""); jBrowseFile.setEnabled(true); nextButton.setEnabled(false); }
Coding untuk langkah selanjutnya adalah memprediksi bitrate, hasil prediksi ini akan berfungsi dalam proses muxing. Dibawah ini merupakan inti untuk memproses prediksi birate. String predict = "tspcrmeasure "+av+" 4000000";
Muxing merupakan proses inti yang harus dilakukan agar video tersebut dapat disiarkan.
Proses muxing ini akan
menggunakan video yang telah melewati proses konversi, filter dan check bitrate. textsum = "mkfifo "+folderUser+"temps/fifomuxed.ts;mkfifo "+folderUser+"temps/fifoloop.ts;" + "tscbrmuxer " +
68
Dan yang terakhir adalah untuk menyiarkan siaran tv digital yang telah melewati proses-proses diatas. Dibawah ini merupakan into untuk melakukan proses penyiaran konten TV digital. combine ="tsudpsend "+folderUser+"temps/fifoloop.ts "+jIPServer.getText()+" "+jPortServer.getText()+" "+sumbitrate;
3.
Perancangan antar muka (user interface). a. Desain Prototype Login
Layar login adalah layar awal pada perangkat lunak penyiaran IPTV. Fungsi dari layar ini adalah sebagai kondisi awal program untuk bisa masuk dan mengakses layar-layar lainnya.
Welcome To IPTV User : Pass :
Login
Gambar 4.10. Layar Login
Layar ini hanya dapat di akses oleh admin, karena user dan password hanya admin yang mengetahui. Jika user dan password tidak sesuai dan juga kosong, maka ketika akan muncul peringatan kesalahan user atau kesalahan password. admin tidak dapat masuk ke layar selanjutnya.
69
b. Desaiin Prototype Konfigurasii Sistem
Gambar 4.11. Layarr Simpan Konfigurasi
Layar Koonfigurasi Sistem S adalah layar yyang digun nakan untukk memberi nama padaa jaringan sebagai idenntitas dari server s yang digunakann. Adapun nama jarinngan yang diinputkan akan dimaasukkan dallam tabel PSI P dan dillakukan muultiplex berrsama videoo yang diunduh. c.
Desaain Prototypee Tab Video
Pada Tabb video peenyiar akann menyiarkkan video-v video rekam man dan akaan ditonton oleh klien.
Gambar 4.12. Layar Tab Video
70
Pada tab video ini akan diawali dengan mengisi kotak
kosong sebelum mengunduh file video dari penyimpanan konten dengan mengklik browse. Setelah memilih video maka hasil jumlah video akan tampil maka proses convert dilakukan. Filter hanya dapat dilakukan bila proses convert selesai dan check bitrate hanya bisa dilakukan juga bila proses filter telah selesai. Jumlah video yang akan disiarkan maksimal sebanyak enam video. Hal ini dikarenakan untuk menghindari jumlah bitrate yang terlalu besar sehingga mempengaruhi kualitas layanan (keterbatasan spesifikasi hardware juga mempengaruhi). Setelah semua proses selesai, maka admin akan mengklik tombol muxing. Proses muxing akan dilakukan terhahap file-file video yang telah melewati proses-proses seperti penjelasan di atas. PAT, PMT, SDT, dan NIT yang telah ditetapkan. d. Desain Prototype Tab Play Prototipe yang terakhir adalah Playout. Pada antarmuka ini berfungsi sebagai konfigurasi server untuk dapat melakukan perintah siar melalui jaringan IP.
71
Gambar 4.13. Layar Tab Play
Pada antarmuka ini, admin diminta untuk mengisikan IP server pemancar dan port. Setelah itu dengan mengklik tombol “play”, maka sistem akan menjalankan perintah: tsudpsend [file.ts] [ip] [port] [bitrate]
4.3.4. Evaluate and Refine (Evaluasi dan Perulangan) Tahap ini akan dilakukan analisa kembali terhadap rancangan yang telah disusun sebelumnya, dan akan dilakukan perbaikan terhadap rancangan bila diperlukan. Evaluasi dilakukan pada kasus ini oleh admin, apakah rancangan prototipe sudah sesuai dengan harapan admin. Jika sesuai maka tahap selanjutnya akan dilakukan, jika tidak maka langkah 1,2 dan 3 diperbaiki. Berikut ini evaluasi kembali mengenai proses rancangan seperti yang telah dijelaskan pada tahap prototipe : 1. Proses Download Video Admin dapat memilih video dengan format * mp4, wmv, flv, mpg, asf, mov, avi, mkv dengan mudah dengan menggunakan
72
aplikasi yang dirancang. Sebelum mengunduh video terlebih dahulu admin harus mengisi kolom kosong diatas kolom upload video, dan dapat memilih size resolusi video yang diinginkan serta ratio video yang sesuai dengan video yang diunduh. Fungsi dari ratio sendiri untuk menjaga ukuran dari video tetap proposional sesuai dengan file asli. 2. Proses PID (Paket ID) Admin harus memasukkan PID video pada kolom yang telah tersedia. Adapun informasi tersebut akan dimanfaatkan dalam pembuatan tabel PSI pada saat multiplexing. 3. Proses Chanel Nama channel sesuai dengan nama service provider dan service name pada pengisian form pada tab video. 4. Proses Convert dan Filter Tahap ini dapat terlaksana jika admin telah mengunduh file. Proses ini akan memanfaatkan fungsi-fungsi dari FFMPEG untuk proses convert dan OpenCaster untuk filter. Video yang telah diunduh merupakan file dengan format non transport stream, oleh karena itu perlu dilakukan proses convert video menjadi format .*ts (transport stream). Setelah proses convert maka perlu melakukan proses filter yaitu menghilangkan informasi dari video kecuali PID yang telah ditentukan pada pengisian form PID video.
73
5. Proses Bitrate Proses pengecekan bitrate perlu dilakukan untuk mengetahui berapa besar Bit rate setiap video. Bit rate adalah ukuran tingkat kandungan informasi dalam aliran video. Hal ini diukur dengan menggunakan bit per detik (bit/s atau bps) unit atau Megabits per detik (Mbit/s). Tingkat bit yang lebih tinggi memungkinkan kualitas video yang lebih baik. 6. Proses Multiplexing Multiplexing adalah teknik menggabungkan beberapa sinyal untuk dikirimkan secara bersamaan pada suatu kanal transmisi. Dimana
perangkat
yang
melakukan
Multiplexing
disebut
Multiplexer atau disebut juga dengan istilah Transceiver / Mux. Pada aplikasi ini yang dirancang, admin dapat melakukan proses muxing secara otomatis. 7. Proses Penyiaran Admin dapat melakukan playout siaran secara otomatis dengan mudah tanpa harus direpotkan dengan sintaks-sintaks pada Open Caster serta mampu memancarkan melalui jaringan IP. Menggunakan Default untuk IP adalah 224.0.1.2, port video : 1234. 4.3.5. Complete Detailed Design and Production (Melengkapi detail Rancangan dan Produksi) Pada tahap ini akan dilakukan proses produksi pembuatan aplikasi antarmuka, dimana protyping yang sudah disepakati akan
74
diterjemahkan kedalam bahasa pemograman yang sesuai. Aplikasi ini dibuat menggunakan editor : Netbeans dan multimedia tools : OpenCaster, ffmpeg. Rancangan latar belakang aplikasi dirancang menggunakan Adobe Photoshop CS2. Langkah pertama yang harus dilakukan sebelum melakukan proses produksi adalah konfigurasi server. Untuk dapat menjalankan aplikasi yang dibuat, maka server perlu dikonfigurasi sedemikian sehingga aplikasi dapat berfungsi dengan baik. Adapun konfigurasi yang dapat dilakukan adalah sebagai berikut: 1. Alamat IP $ sudo ifconfig eth0 192.168.0.1 netmask 255.255.255.0
Perintah di atas berguna untuk mengatur IP dari server. 2. Multicast Routing # route add –net 224.0.0.0 netmask 240.0.0.0 dev eth0
Perintah diatas digunakan untuk mengkonfigurasi routing agar dapat menerapkan routing secara multicast. 3. OpenCaster Langkah-langkah
yang
dilakukan
dalam
instalasi
OpenCaster dapat dijabarkan sebagai berikut: a. Download OpenCaster 3.1 di http://www.avalpa.com/ b. Klik kanan pada “OpenCaster 3.1.tar” dan pilih Extract Here.
75
c. Buka file install di dalam folder OpenCaster 3.1 Pada file ini terdapat persyaratan paket (dependency) yang harus terinstal pada Ubuntu sebelum dapat menginstal OpenCaster. d. Menginstal beberapa paket melalui System >> Administration >> Synaptic Package Manager yaitu: binutils; gcc; gcc-4.3; libc6-dev; libgomp; linux-libc-dev; make; python-dev; python2.5-dev; zlib1g-dev kemudian klik Apply. e. Buka terminal kemudian pindah direktori menuju folder OpenCaster 3.1. Kemudian lakukan 2 perintah, yaitu: #
make
#
make install
4. FFMPEG Beberapa package yang perlu diunduh melalui System >> Administration >> Synaptic Package Manager adalah: a. ffmpeg b. libavcodec52 c. libavformat52 5. Netbeans Untuk dapat menggunakan NetBeans, diperlukan dua perangkat lunak yaitu:
76
a. Netbeans IDE Instalasi Netbeans IDE dapat dilakukan melalui System >> Administration >> Synaptic Package Manager. Centang Netbeans kemudian klik Apply. b. Java Development Kit (JDK) Langkah-langkah yang dilakukan dalam instalasi Java Development Kit dapat dijabarkan sebagai berikut: • Download
JDK
pada
website
http://java.sun.com/javase/downloads/ index.jsp • Execute file yang telah di-download dengan perintah # ./[nama_file]
6. External Jar yang Digunakan External jar merupakan class-class tambahan yang digunakan untuk membuat aplikasi. Beberapa External jar yang digunakan adalah: a. commons-vfs-1.0.jar b. commons-logging-1.1.1.jar c. commons-net-ftp-2.0.jar d. VFSJFileChooser-0.0.3.jar Setelah semua perangkat lunak yang diperlukan selesai diinstal, maka kegiatan selanjutnya adalah melakukan perancangan pada perangkat lunak.
77
7. Adobe Photoshop a. Langkah awal, instal program Wine di Linux. b. Lalu klik kanan pada Adobe Photoshop Setup.exe dan klik Open dengan program loader Windows Wine. c. Proses instalasi akan dimulai secara otomatis. Setelah Adobe Photoshop terinstall di Linux, untuk membukanya tinggal klik ke Applications -> Wine -> Programs> Adobe Photoshop. Setelah proses konfigurasi server selesai maka proses produksi aplikasi dapat dilakukan. Proses pembuatan aplikasi menggunakan editor Netbeans dan perancangan latar belakang menggunakan Adobe Photoshop CS 2. 1. Proses pada editor Netbeans Pada proses ini akan dilakukan implementasi dari rancanganrancangan yang telah diuraikan pada subbab sebelumnya. Proses peneranapan
prototype
untuk
antarmuka
dilakukan,
dan
pengkodingan untuk proses convert, filter, check bitrate dan muxing diterapkan. Hasil coding akan terdapat pada lampiran coding. Pengkodingan disini lebih kepada agar fungsi-fungsi dari OpenCaster dan FFMPEG dapat berjalan secara otomatis sesuai dengan tahap perintah yang akan dilaksanakan oleh admin nanti. Pengkodingan juga dilakukan untuk dapat melakukan proses login, konfigurasi sistem dan pembuatan tabel PSI untuk proses muxing
78
bisa berjalan. Aplikasi ini juga akan membuat folder sementara untuk menyimpan hasil video konversi dan filter serta file-file mptssdt.ts, mptsnit.ts, mptspat.ts, fifomuxed.ts, dan fifoloop.ts. Gambar dibawah ini merupakan penerapan perancangan dari layar utama Tab Video.
Gambar 4.14. Layar Utama. Dari gambar di atas terlihat komponen yang digunakan dalam pembuatan aplikasi ini menggunakan, JFrame, JMenuBar, JPanel, JTabbed, JTextField, JButton dan JLabel. JMenuBar untuk membuat menu pada bar aplikasi, terdapat tiga menu yaitu File, Setting dan Help. JTabbed berfungsi untuk membuat dua tabulasi yaitu video dan Play, dimana tab video untuk proses convert dan filter sedangkan tab Play untuk menyiarkan siaran konten TV digital. JTextField memiliki dua fungsi, yaitu untuk memasukan data yang diperlukan dalam proses convert dan fungsi yang satu
79
lagi untuk menampilkan hasil dari proses seperti menampilkan jumlah video dan hasil dari check Bitrate. JButton untuk melaksanakan proses-proses yang ingin dilakukan oleh admin sesuai dengan urutan, fungsi awal dari setiap button atau tombol adalah disable atau tidak aktif, dimana tombol nanti akan aktif setelah melewati proses sesuai dengan flowchart proses yang telah dirancang sebelumnya. JLabel digunakan untuk memberikan informasi pada setiap textfield yang ada. Coding dari setiap fungsi dan proses yang ada akan dilampirkan pada lampiran coding. 2. Proses pada peracangan latar belakang Agar tampilan dari setiap layar lebih menarik maka dibuat sebuat layar belakang yang menarik dan sesuai. Pembuatan layar belakang tersebut dilakukan menggunakan AdobePhotoshop CS 2. Gambar dibawah ini merupakan perancangan latar belakang utama. Terdapat tiga rancangan latar belakang, pertama rancangan latar belakang login, layar utama dan konfigurasi.
Gambar 4.15. Perancangan Latar Belakang
80
4.3.6. Release and Follow Up (Rilis dan tindakan lanjut) Pada tahap akhir ini yang dilakukan adalah merencanakan dan melaksanakan pengenalan produk kepada pengguna, pada kasus ini aplikasi antarmuka akan dikenalkan kepada admin pemancar konten TV digital. Tahap ini juga akan dilakukan evaluasi kegunaan akhir untuk meyakinkan bahwa hasil akhir yang telah dibangun seperti yang telah dirancang pada awal proyek. Berikut ini penjelasan cara kerja dari sisi Pemancar dan sisi Klien. 1. Sisi Pemancar Antarmuka sistem ini dihasilkan sesuai dengan rancangan antarmuka sistem yang sudah diuraikan pada subbab 4.3.3. 1. Halaman Login Tampilan awal dari aplikasi antar muka penyiaran IPTV. Seorang admin harus melewati validasi identitas dengan memasukan nama pengguna username dan password agar bisa mengakses aplikasi ini.
Gambar 4.16. Tampilan Login
81
2. Halaman Konfigurasi
Gambar 4.17. Halaman Konfigurasi Sistem Halaman konfigurasi dapat diakses dengan memilih menu setting dan konfigurasi. Admin harus mengisi dua kolom yang tersedia, pertama “User Name” dan kedua “Network Name”. Tombol “Simpan” berfungsi untuk menyimpan input yang di ketikkan kedalam file “konfigurasi.ini” pada directory user. Tombol close pada konfigurasi akan mengakhiri semua proses, maka jika nama User Name dan Network sudah ada dan tidak ingin melakukan perubahan maka sebaiknya dilakukan saja proses simpan kembali. 3. Halaman Tab Video Setelah melakukan proses login dan konfigurasi sistem maka tahap berikut adalah proses pada tabulasi video. Admin harus memasukan nilai PID Video mulai dari 150, karena jika dibawah dari nilai tersebut maka proses convert akan gagal
82
dilakukan. Kemudian memasukan Service Provider dan Service Name, memilih size video yang dinginkan dan ratio video yang sesuai agar video tetap proposional seperti file awal. Size video terdapat empat pilihan, yaitu vga, 4cif, xga dan hd720. Aspek ratio terdapat dua pilihan, yaitu 16: 9 dan 4 : 3. Tahap selanjutnya adalah memilih video yang akan diunduh untuk melewati proses-proses selanjutnya dengan menggunakan tombol “Browse”.
Gambar 4.18. Halaman Tab Video Tahap berikut adalah melakukan konversi video dengan menggunakan tombol “convert”. Setelah konversi video maka video yang telah dikonversi perlu dilakukan filter. Proses
83
filter dilakukan untuk membuang data-data yang nanti akan diberikan saat proses muxing sehingga tidak terjadi penumpukan data yang menyebabkan data tersebut tumpang tindih. Tahap terakhir dari proses awal adalah pengecekan bitrate. Selesai proses pengecekan bitrate selesai admin dapat melakukan penambahan video atau langsung melakukan proses muxing. Tombol “next” berfungsi untuk menambah video lain, sedangkan tombol “muxing” berfungsi untuk melakukan proses multiplexing atau sering disebut dengan muxing. Tombol-tombol dari aplikasi ini akan aktif sesuai dengan tahapan yang telah dirancang. Setelah menekan tombol “browse” maka tombol “convert” akan aktif, setelah itu tombol “filter” aktif dan jika menekan tombol “check” maka tombol “next” dan “muxing” akan aktif. Dengan tombol “next” maka kolom-kolom “textfield” akan kosong semua seperti awal. Setelah proses muxing tombol “play video” pada tab video akan aktif. 4. Halaman Tab Play Pada tab play ini admin dapat mengatur alamat IP, dan port recorded server yang akan digunakan sebagai sumber penerima pada siaran IPTV. Tombol “Play Video” digunakan untuk memulai penyiaran dan tombol “Stop Video” berfungsi untuk menghentikan penyiaran.
84
Gambar 4.19. Halaman Tab Play 5. Exit. Pilihan exit merupakan submenu dari menu yang terdapat pada menubar. Fungsi dari tombol exit adalah untuk keluar dari aplikasi dan menghapus folder yang sementara yang telah dibuat pada awal aplikasi berjalan. 2. Sisi Klien Pada sisi klien hal yang harus dilakukan untuk dapat menerima konten siaran TV digital adalah sebagai berikut: 1. Install VLC Media Player. 2. Buka VLC Media Player, kemudian klik media>open network stream. Pilih protokol “UDP”, kemudian isikan IP address dan port server penyiar. Klik play.
85
Gambar 4.20. Masukan UDP Protokol 3. Klien menerima siaran TV digita yang telah disiarkan oleh sisi pemancar, dimana klien sudah dapat menonton siaran TV digital dengan kualitas yang dihasilkan untuk siaran video rekaman sudah cukup baik. Hal ini diperlihatkan pada Gambar 4.20 berikut.
Gambar 4.21. Hasil Siaran
86
4. Pemilihan chanel atau program dapat dilakukan melakui menu utama pada VLC media player. Yaitu dengan mengklik playback>program.
Gambar 4.22 Pemilihan Program
BAB V KESIMPULAN DAN SARAN 5.1. Kesimpulan Berdasarkan hasil penelitian dalam pembuatan skripsi ini, penulis mendapatkan beberapa kesimpulan sebagai berikut : 1. Pemancar IPTV digunakan sebagai pemancar konten TV digital yang
disediakan oleh penyedia konten melalui protokol UDP. 2. Untuk menikmati layanan IPTV, klien cukup menggunakan VLC media
player (freeware). 3. Pemancar IPTV telah difungsikan menggunakan software berbasis open
source (Open Caster) pada platform linux. 4. Untuk memudahkan pengoperasian pemancaran video, maka telah aplikasi
antarmuka
dirancangan
dengan
menggunakan
Editor
Netbeans
menggunakan bahasa pemrograman java. 5. Dengan menggunakan aplikasi antarmuka ini pengguna atau dalam hal ini admin lebih mudah menyiarkan siaran TV digital IPTV. Tanpa harus melakukan tahap-tahap penyiaran secara manual dengan menggunakan terminal. 6. Aplikasi ini dirancang agar admin dapat menggunakan file-file video
dengan format * mp4, wmv, flv, mpg, asf, mov, avi, mkv secara langsung untuk disiarkan menjadi konten siaran TV digital IPTV. 7. Aplikasi antarmuka ini juga menyediakan beberapa jenis size video dan
aspek ratio sehingga video yang dipancarkan bisa mendapat hasil yang makasimal dengan ukuran video tidak terlalu besar sehingga proses 87
88
pemancaran video dapat berjalan dengan baik, begitu juga pada sisi klien dapat menerima hasil video dengan baik. 8. Dan proses konversi video dari format video non-transport stream menjadi
video transport stream menggunakan fungsi-fungsi dari ffmpeg. 9. Pengiriman data dari pemancar menuju klien yaitu dengan melakukan
multiplex terhadap konten. Kemudian memecahnya menjadi paket-paket data secara FIFO (first in first out). 5.2. Saran Aplikasi antarmuka ini masih jauh dari sempurna, oleh sebab itu penulis mencoba memberikan saran bagi pihak-pihak yang ingin mengembangkan aplikasi ini ke depan, yaitu : 1. Pada proses konversi video, penulis belum mengetahui cara untuk
mengetahui proses tersebut telah selesai secara otomatis, penulis harus melihat hasil konversi pada folder sementara tempat penyimpanan video, penulis berharap hal ini dapat dikembangkan pada penelitian selanjutnya. 2. Proses admin pada aplikasi ini belum memiliki database, dan diharapkan
pengembang selanjutnya dapat membuatkan database untuk aplikasi ini.
89
DAFTAR PUSTAKA
Hary Budiarto. et al. 2007. Sistem TV Digital dan Prospeknya di Indonesia. Bandung : PT. Multikom Indo Persada.
Febrian, Jack. 2007. Kamus Komputer dan Teknologi Informasi. Bandung : Informatika. Hakim S, Rachmad dan Sutarto.2009. Mastering Java. Jakarta : Elex Media Komputindo . Leroy, Diana. 2003. Soal-Soal dan Pembahasan UAN Bahasa Indonesia SMP. Jakarta : Erlangga. IPTV and Streaming (online). Tersedia : http://www.synergybroadcast.com/video -streaming-and-iptv/iptv-and-streaming- 11 Juni 2011. 10.31 WIB.
MPEG-2 Transport Stream (online). Tersedia : http://www.afterdawn.com/glossary/term.cfm/mpeg2_transport_stream
Palarra, L., & F, A, OpenCaster User Manual 3.0, Open Caster(online), Tersedia : http://www.avalpa.com/assets/freesoft/opencaster/AvalpaBroadcastServerUserMa nual-v3.0.pdf. 11 Juli 2011 09:10 WIB Avalpa, “OpenCaster 3.1: the free digital tv software”, Open Caster(online), Tersedia : http://www.avalpa.com/the-key-values/15-free-software/33-opencaster, 11 Juli 2011 09:14 WIB Arsyeachmad. 2010. Logical User-Centered Interactive Design (LUCID) (online). Tersedia : http://arsyeachmad.wordpress.com/2010/12/24/logical-user-centeredinteractive-design-lucid/. 11 Juli 2011 09:30 WIB
90
Vivek
Bhadra.
2009.
MPEG-2
Transmission(online).
Tersedia
:
http://knol.google.com/k/mpeg-2-transmission# ________. 2011. FFMPEG. (online). Tersedia : http://www.ffmpeg.org/
_______. 2010. How to pad videos using ffmpeg (online). Tersedia : http://linuxers.org/tutorial/how-pad-videos-using-ffmpeg The LUCID Design Framework (Logical User Centered Interaction Design) (online). Tersedia : ftp://ftp.cs.umanitoba.ca/pub/cs371/Readings/Lucid2a-overview.pdf _____.
2006.
An
introduction
to
IPTV
Tersedia : (http://arstechnica.com/business/news/2006/03/iptv.ars).
(online).
91
LAMPIRAN SOURCE CODE-LOGIN /* formlogin.java */ package form; import javax.swing.UIManager; import javax.swing.JOptionPane; public class formlogin extends javax.swing.JFrame { String pass; /** Creates new form formlogin */ public formlogin() { initComponents(); } private void loginButtonActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String host,user,pass; user = userField.getText(); pass = String.valueOf(passField.getPassword()); if(user.equals("")==true||pass.equals("")==true){ JOptionPane.showMessageDialog(null,"User dan pass tidak boleh kosong"); } else{ if(user.equals("admin")){ if(pass.equals("admin")){ videomux app = new videomux(); //app.userActive(user,pass); app.setLocationRelativeTo(this); app.setVisible(true); this.dispose(); } else{ JOptionPane.showMessageDialog(null,"Password admin salah! Silakan masukkan kembali password admin..","Error",JOptionPane.ERROR_MESSAGE); } } else{ JOptionPane.showMessageDialog(null,"Username Anda tidak sesuai. Silakan ulangi kembali..","Error",JOptionPane.ERROR_MESSAGE);
92
} } } } // Variables declaration ‐ do not modify public javax.swing.JLabel jLabel1; public javax.swing.JLabel jLabel2; public javax.swing.JLabel jLabel4; public javax.swing.JLabel jLabel5; public javax.swing.JLabel jLabel6; public javax.swing.JLabel jLabel7; public javax.swing.JLayeredPane jLayeredPane2; public javax.swing.JButton loginButton; public javax.swing.JPasswordField passField; public javax.swing.JTextField userField; // End of variables declaration } LAMPIRAN SOURCE CODE-KONFIGURASI package form; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; public class SimpanKonfig extends javax.swing.JFrame { /** Creates new form SimpanKonfig */ String IDRegion; public String PROP_FILE = "konfigurasi.ini"; public SimpanKonfig() { initComponents();
93
Properties p2 = new Properties(); p2 = loadProperties(PROP_FILE); //Mendapatkan nilai key jUserName.setText(p2.getProperty("Nama Aplikasi")); jNetName.setText(p2.getProperty("Host Server")); } private void btnSimpanKonfigurasiActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try { /** Menyimpan file properties ke file @param Properties p Object Properties* @param String sFile String path file tujuan*/ Properties p = new Properties(); //Menetapkan key dan value draft p.setProperty("Nama Aplikasi", jUserName.getText()); p.setProperty("Host Server", jNetName.getText()); p.setProperty("ID Region", "62"); saveProperties(p, PROP_FILE); } catch (IOException ex) { Logger.getLogger(SimpanKonfig.class.getName()).log(Level.SEVERE, null, ex); JOptionPane.showMessageDialog(null, ex.getMessage()); } dispose(); } public static Properties loadProperties(String sFile) { Properties p = new Properties(); try { FileInputStream in = new FileInputStream(sFile); p.load(in); System.out.println("File konfigurasi '" + sFile + "' berhasil dibuka"); in.close(); } catch (IOException iOException) { //JOptionPane.showMessageDialog(null, "Lakukan konfigurasi pada menu Setting!!!","Error",JOptionPane.ERROR_MESSAGE); } return p; }
94
public static void saveProperties(Properties p, String sFile) throws IOException{FileOutputStream out = null; try { out = new FileOutputStream(sFile); p.store(out, "Data konfigurasi untuk IPTV server V 1.0\[email protected]\[email protected]"); JOptionPane.showMessageDialog(null, "File konfigurasi '"+sFile+"' sudah disimpan"); } catch (FileNotFoundException ex) { Logger.getLogger(SimpanKonfig.class.getName()).log(Level.SEVERE, null, ex); JOptionPane.showMessageDialog(null, ex.getMessage()); } finally { try { out.close(); } catch (IOException ex) {Logger.getLogger(SimpanKonfig.class.getName()).log(Level.SEVERE, null, ex); JOptionPane.showMessageDialog(null, ex.getMessage()); } } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new SimpanKonfig().setVisible(true); } }); } // Variables declaration ‐ do not modify private javax.swing.JButton btnSimpanKonfigurasi; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JTextField jNetName; private javax.swing.JPanel jPanel1; private javax.swing.JTextField jUserName; // End of variables declaration }
95
LAMPIRAN SOURCE CODE-MUXING import javax.swing.SwingUtilities.*; import javax.swing.filechooser.FileFilter; import java.io.*; import java.util.Properties; import javax.swing.*; import logic.RunExternalCommand; public class videomux extends javax.swing.JFrame { String[] hasilvideo = new String[6]; String[] filevideo = new String[6]; String[] hasilbitrate = new String[6]; int [] pidvi=new int[6]; int [] pidau=new int[6]; String [] providername = new String [6]; String [] servisname = new String [6]; int ini = 0; String filename,filedir; String textsum, combine; int sumbitrate; PSIGenerator psi; File file; String folderUser; String userName,networkName,CountryID; public String PROP_FILE = "konfigurasi.ini"; public videomux() { //konstruktor = fungsi yang nama nya sama dengan nama kelas psi = new PSIGenerator(); initComponents(); } private void bootOn(){ //Lihat user yang sedang aktif pada ubuntu BufferedReader stdInput = null; String[] cmd1 = new String[3]; cmd1[0] = "/bin/sh";
96 cmd1[1] = "‐c"; cmd1[2] = "whoami"; try{ Process pa = Runtime.getRuntime().exec(cmd1); stdInput = new BufferedReader(new InputStreamReader(pa.getInputStream())); String eachline = null; while((eachline = stdInput.readLine()) != null){ folderUser = "/home/"+eachline+"/"; //untuk mencari tau nama user komputer System.out.println("User yang aktif adalah: "+eachline); System.out.println("Lokasi folder yang aktif adalah: "+folderUser); } } catch(Exception e){ System.err.println("Ada kesalahan !!!"); } //Buka file properties Properties p2 = new Properties(); p2 = loadProperties(PROP_FILE); //Mendapatkan nilai key networkName = p2.getProperty("Host Server"); System.out.println("Nama jaringan yang aktif: "+networkName); userName = p2.getProperty("Nama Aplikasi"); CountryID = p2.getProperty("ID Region"); //Membuat folder temps jika belum ada // [email protected] String[] cmd = new String[3]; cmd[0] = "/bin/sh"; cmd[1] = "‐c"; cmd[2] = "mkdir "+folderUser+"temps"; System.out.println("Buat folder: "+cmd[2]); try{ Process p = Runtime.getRuntime().exec(cmd); }
97 catch (IOException e) { System.out.println("salah buat folder"); e.printStackTrace(); System.exit(‐1); } } public static Properties loadProperties(String sFile) {
Properties p = new Properties();
try {
FileInputStream in = new FileInputStream(sFile);
p.load(in);
System.out.println("File konfigurasi '" + sFile + "' berhasil dibuka");
in.close();
}
catch (IOException iOException) {
new SimpanKonfig().setVisible(true); JOptionPane.showMessageDialog(null, "Lakukan konfigurasi pada menu Setting \nterlebih dahulu!!!","Error",JOptionPane.ERROR_MESSAGE); }
return p;
} //Sintaks untuk memprediksi bitrate private int predictBitrate(String av){ String predict = "tspcrmeasure "+av+" 4000000"; int bitrateAV = 0; BufferedReader stdInput = null; String[] xi = new String[3]; xi[0] = "/bin/sh"; xi[1] = "‐c"; xi[2] = predict; try{ Process p = Runtime.getRuntime().exec(xi); System.out.println("hasil"+predict);
98 stdInput = new BufferedReader(new InputStreamReader(p.getInputStream())); } catch(Exception e){ System.err.println("Ada kesalahan dalam menghitung bitrate"); } try{ String eachline = null; String hasil=""; while((eachline = stdInput.readLine()) != null){ hasil = eachline; System.out.println(hasil); eachline = stdInput.readLine(); } String[] bitrate = hasil.split(" "); double bitrate2 = Double.parseDouble(bitrate[bitrate.length‐1]); //System.out.println("fungsi bitrate:"+bitrate2); bitrateAV = (int)bitrate2; //System.out.println("fungsi bitrateav:"+bitrateAV); } catch(Exception e){ return 0; //JOptionPane.showMessageDialog(null,"Gagal membuat bitrate","Error",JOptionPane.ERROR_MESSAGE); //e.printStackTrace(); } return bitrateAV; } private void createPSI(int[] pidau, int[] pidvi){ String s = ""; String namaFile = folderUser+"temps/psiconfig.py"; file = new File(namaFile); try{
99 int[] serviceID = {1,2,3,4,5,6,7}; String [] serviceName = new String [servisname.length]; for (int i=0; i<servisname.length;i++){ serviceName [i]= servisname[i]; } int[] valuePMTID = {1031,1032,1033,1034,1035,1036,4095}; //String[] providerName = {"Prog‐1","Prog‐2","Prog‐3","Prog‐4","Prog‐5","Prog‐6","Prog‐ Live"}; String [] providerName = new String [providername.length]; for (int i=0; i<providername.length;i++){ providerName [i]= providername[i]; } FileWriter fw = new FileWriter(namaFile); s = psi.generatePSI(ini,serviceID, serviceName, valuePMTID, networkName, providerName,folderUser, pidau, pidvi); fw.write(s); // Close file writer fw.close(); // Beri hak akses unutuk eksekusi RunExternalCommand xi = new RunExternalCommand(); xi.cmd[0] = "/bin/sh"; xi.cmd[1] = "‐c"; xi.cmd[2] = "chmod +x "+folderUser+"temps/psiconfig.py"; xi.runcommand(); xi.cmd[0] = "/bin/sh"; xi.cmd[1] = "‐c"; xi.cmd[2] = folderUser+"temps/psiconfig.py"; xi.runcommand(); System.out.println("Program berhasil dijalankan"); } catch(Exception e){
100 JOptionPane.showMessageDialog(null,"Gagal membuat file PSI","Error",JOptionPane.ERROR_MESSAGE); e.printStackTrace(); } } private void jMenuExitActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: this.dispose(); //Jalankan pengapusan file temp String[] cmd = new String[3]; cmd[0] = "/bin/sh"; cmd[1] = "‐c"; cmd[2] = "rm ‐r "+folderUser+"temps"; try{ Process p = Runtime.getRuntime().exec(cmd); } catch (IOException e) { System.out.println("[IOException]. Printing Stack Trace"); e.printStackTrace(); System.exit(‐1); } } private void jConfigureActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: new SimpanKonfig().setVisible(true); //this.dispose(); } //Dijalankan ketika form di load private void formWindowActivated(java.awt.event.WindowEvent evt) { // TODO add your handling code here: bootOn(); }
101 //Action tombol untuk check bitrate private void jCheckBitActionPerformed(java.awt.event.ActionEvent evt) { int bitrate = predictBitrate(folderUser+"temps/"+ini+"f.ts");//untuk hasil bitrate hasilbitrate[ini] = (String.valueOf(bitrate)); Jbirate.setText(String.valueOf(hasilbitrate[ini])); jBrowseFile.setEnabled(false); JFilter.setEnabled(false); jconvert.setEnabled(false); nextButton.setEnabled(true); jMuxing.setEnabled(true); } //Action tombol untuk check convert private void jconvertActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String size, aspect; Object ukuran, ratio; ukuran=JsizeVideo.getSelectedItem(); size=String.valueOf(ukuran); ratio=jratio.getSelectedItem(); aspect=String.valueOf(ratio); String convert="ffmpeg ‐i "+jLokasiFile.getText()+ " ‐ar 22050 ‐ab 128k ‐b 2500k" + " ‐r 24 ‐maxrate 5000k ‐bufsize 256k ‐vcodec mpeg2video ‐s "+size+" ‐aspect "+ratio+"" + " ‐acodec mp2 ‐map 0:0 ‐map 0:1 ‐mpegts_start_pid 0x"+jPIDVideo1.getText()+"" + " ‐metadata service_provider="+jServisprovider.getText()+" ‐metadata service_name="+jServisname.getText()+" ‐y "+folderUser+"temps/"+ini+".ts"; String[] cmd = new String[3]; cmd[0] = "/bin/sh"; cmd[1] = "‐c"; cmd[2] = convert;
102 try{ Process p = Runtime.getRuntime().exec(cmd); System.out.println(convert); } catch (IOException e) { System.out.println("salah koding"); e.printStackTrace(); System.exit(‐1); } jBrowseFile.setEnabled(false); jconvert.setEnabled(false); JFilter.setEnabled(true); } //Action tombol untuk check Filter private void JFilterActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String[] fs = new String[3]; fs[0] = "/bin/sh";//fungsi linux untuk buka consul baru fs[1] = "‐c"; fs[2] = "tsfilter "+folderUser+"temps/"+ini+".ts +"+Integer.parseInt(jPIDVideo1.getText(),16)+" +"+(Integer.parseInt(jPIDVideo1.getText(),16)+1)+">"+folderUser+"temps/"+ini+"f.ts"; System.out.println("filter: "+fs[2]); try{ Process p = Runtime.getRuntime().exec(fs); String filelokasi = (folderUser+"temps/"+ini+"f.ts"); filevideo[ini]= filelokasi; FileLokasi.setText(filevideo[ini]); System.out.println(filevideo[ini]); } catch (IOException e) { System.out.println("[IOException]. Printing Stack Trace"); e.printStackTrace(); System.exit(‐1); }
103 jBrowseFile.setEnabled(false); jconvert.setEnabled(false); JFilter.setEnabled(false); jCheckBit.setEnabled(true); nextButton.setEnabled(false); } //Action tombol untuk check menambah Video private void nextButtonActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: jLokasiFile.setText(""); Jbirate.setText(""); jPIDVideo1.setText(""); jServisprovider.setText(""); jServisname.setText(""); jBrowseFile.setEnabled(true); nextButton.setEnabled(false); } private void jBrowseFileActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileFilter(new FileFilter() { public boolean accept(File f) { return f.getName().toLowerCase().endsWith(".avi")||f.getName().toLowerCase().endsWith(".MPEG")|| f.getName().toLowerCase().endsWith(".mkv")||f.getName().toLowerCase().endsWith(".mp4")|| f.getName().toLowerCase().endsWith(".mmv") ||f.getName().toLowerCase().endsWith(".mpg")|| f.getName().toLowerCase().endsWith(".asf")||f.getName().toLowerCase().endsWith(".mov")|| f.isDirectory(); }
104 public String getDescription() { return "Video Files"; } }); int returnVal = fileChooser.showOpenDialog(this); if(returnVal == JFileChooser.APPROVE_OPTION){ String filepath = fileChooser.getSelectedFile().getPath(); jLokasiFile.setText(filepath); filename = fileChooser.getSelectedFile().getName(); filedir = filepath.substring(0,(filepath.length()‐filename.length()‐1)); } //Hitung jumlah video dengan array if (ini > 5 ){ JOptionPane.showMessageDialog(null, "Maaf hanya diperbolehkan sampai 6 video","Error",JOptionPane.ERROR_MESSAGE); } else{ hasilvideo[ini] = jLokasiFile.getText(); System.out.println(hasilvideo[ini]); JmlVideo.setText(String.valueOf(ini+1)+" TS"); jLokasiFile.setText(hasilvideo[ini]); pidvi[ini]=Integer.valueOf(jPIDVideo1.getText()); pidau[ini]=Integer.valueOf(pidvi[ini]+1); servisname[ini]=jServisname.getText(); providername[ini]=jServisprovider.getText(); ini = ini+1; } jBrowseFile.setEnabled(false); jconvert.setEnabled(true); }
105 //Action tombol untuk Play Video/ mengirim video private void PlayIPTVActionPerformed(java.awt.event.ActionEvent evt) { // Jalankan dan konfigurasi untuk TSUDPSEND combine ="tsudpsend "+folderUser+"temps/fifoloop.ts "+jIPServer.getText()+" "+jPortServer.getText()+" "+sumbitrate; String[] cmd = new String[3]; cmd[0] = "/bin/sh"; cmd[1] = "‐c"; cmd[2] = textsum+combine; System.out.println("Proses muxing: "+cmd[2]); try{ Process p = Runtime.getRuntime().exec(cmd); } catch (IOException e) { System.out.println("[IOException]. Printing Stack Trace"); e.printStackTrace(); System.exit(‐1); } jStopIPTV.setEnabled(true); PlayIPTV.setEnabled(false); } //Action tombol untuk STOP Video/ mengirim video private void jStopIPTVActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: //Keluarkan proses tsudpsend dari system String[] cmd = new String[3]; cmd[0] = "/bin/sh"; cmd[1] = "‐c"; cmd[2] = "killall ‐TERM tsudpsend;rm "+folderUser+"temps/fifoloop.ts;rm "+folderUser+"temps/fifomuxed.ts"; try{ Process p = Runtime.getRuntime().exec(cmd); } catch (IOException e) {
106 System.out.println("[IOException]. Printing Stack Trace"); e.printStackTrace(); System.exit(‐1); } jStopIPTV.setEnabled(false); PlayIPTV.setEnabled(true); nextButton.setEnabled(true); } private void jMuxingActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: //buat table PSI createPSI(pidau, pidvi); //Proses Muxing sementara //[email protected] int psibit = 2000; int bit1=0,bit2=0; //Menghitung jumlah birate keseluruhan //[email protected] for(int i = 1 ; i <= (ini) ; ++i){ bit1 = bit1+Integer.valueOf(psibit).intValue(); bit2 = bit2+Integer.valueOf(hasilbitrate[i]).intValue(); } sumbitrate = bit1 + bit2; //Menjalankan proses muxing dengan opencaster textsum = "mkfifo "+folderUser+"temps/fifomuxed.ts;mkfifo "+folderUser+"temps/fifoloop.ts;" + "tscbrmuxer " + lopingpmttable(ini,psibit,hasilbitrate,filevideo) + "b:"+psibit+" "+folderUser+"temps/mptssdt.ts "+ "b:"+psibit+" "+folderUser+"temps/mptsnit.ts "+
107 "b:"+psibit+" "+folderUser+"temps/mptspat.ts "+ "> "+folderUser+"temps/fifomuxed.ts & " + "tsloop "+folderUser+"temps/fifomuxed.ts > "+folderUser+"temps/fifoloop.ts & "; System.out.println("Total hasil bitrate: "+sumbitrate); PlayIPTV.setEnabled(true); jMuxing.setEnabled(false); jBrowseFile.setEnabled(false); nextButton.setEnabled(false); } private String lopingpmttable(int ini,int psibit, String[] hasilbitrate, String[] filevideo) { String hasilengkap = ""; for(int i = 1 ; i <= (ini) ; ++i){
hasilengkap += "b:"+hasilbitrate[i]+" "+filevideo[i]+" b:"+2000+"
"+folderUser+"temps/mptspmt"+(i)+".ts "; } return hasilengkap; } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new videomux().setVisible(true); } }); } // Variables declaration ‐ do not modify private javax.swing.JTextField FileLokasi; private javax.swing.JButton JFilter; private javax.swing.JLabel JIPTV; private javax.swing.JPanel JPanel; private javax.swing.JLabel JUIN; private javax.swing.JTextField Jbirate; private javax.swing.JLabel Jlogouin; private javax.swing.JTextField JmlVideo; private javax.swing.JLabel Jsaintek;
108 private javax.swing.JComboBox JsizeVideo; private javax.swing.JButton PlayIPTV; private javax.swing.JButton jBrowseFile; private javax.swing.JButton jCheckBit; private javax.swing.JMenuItem jConfigure; private javax.swing.JTextField jIPServer; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel16; private javax.swing.JLabel jLabel17; private javax.swing.JLabel jLabel18; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel25; private javax.swing.JLabel jLabel26; private javax.swing.JLabel jLabel27; private javax.swing.JLabel jLabel28; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel30; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JTextField jLokasiFile; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JMenu jMenuClose; private javax.swing.JMenuItem jMenuExit; private javax.swing.JMenu jMenuHelp; private javax.swing.JMenuItem jMenuItem1; private javax.swing.JMenuItem jMenuItem2; private javax.swing.JMenuItem jMenuOpen; private javax.swing.JButton jMuxing; private javax.swing.JTextField jPIDVideo1; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4;
109 private javax.swing.JTextField jPortServer; private javax.swing.JTextField jServisname; private javax.swing.JTextField jServisprovider; private javax.swing.JMenu jSetting; private javax.swing.JButton jStopIPTV; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JButton jconvert; private javax.swing.JComboBox jratio; private javax.swing.JButton nextButton; // End of variables declaration }
110
LAMPIRAN SOURCE CODE-TABEL PSI package form; // @author gregorio public class PSIGenerator { public String getAvalpaServiceID(int jumlahUser,int[] serviceId){ String avalpa_service_id = ""; for(int i = 1 ; i <= jumlahUser‐1 ; ++i){ avalpa_service_id += "avalpa"+(i)+"_service_id = "+serviceId[i‐1]+"\n"; } return avalpa_service_id; } public String getAvalpaPMTID(int jumlahUser,int[] value){ String avalpa_pmt_id = ""; for(int i = 1 ; i <= jumlahUser‐1 ; ++i){ avalpa_pmt_id += "avalpa"+(i)+"_pmt_pid = "+value[i‐1]+"\n"; } return avalpa_pmt_id; } public String getServiceDescriptor(int jumlahUser){ String service_descriptor = ""; for(int i = 1 ; i <= jumlahUser‐1 ; ++i){ service_descriptor += "\t\t\t\t\t\t service_descriptor_loop_item(\n" + "\t\t\t\t\t\t\t service_ID = avalpa"+(i)+"_service_id,\n" + "\t\t\t\t\t\t\t service_type = 1,\n" + "\t\t\t\t\t\t ),\n"; } return service_descriptor; }
111
public String getLogicalChannel(int jumlahUser,int[] serviceId){ String lcn = ""; for(int i = 1 ; i <= jumlahUser‐1 ; ++i){ lcn += "\t\t\t\t\t\t lcn_service_descriptor_loop_item(\n" + "\t\t\t\t\t\t\t service_ID = avalpa"+(i)+"_service_id,\n" + "\t\t\t\t\t\t\t visible_service_flag = 1,\n" + "\t\t\t\t\t\t\t logical_channel_number = " + (100*i)+",\n" + "\t\t\t\t\t\t ),\n"; } return lcn; } public String getProgramLoopPAT(int jumlahUser){ String program_loop = ""; for(int i = 1 ; i <= jumlahUser‐1 ; ++i){ program_loop += "\t\t program_loop_item(\n"+ "\t\t\t program_number = avalpa"+(i)+"_service_id,\n" + "\t\t\t PID = avalpa"+(i)+"_pmt_pid,\n" + "\t\t ),\n"; } return program_loop; } public String getServiceLoopSDT(int jumlahUser, String[] providerName, String[] serviceName){ String service_loop = ""; for(int i = 1 ; i <= jumlahUser‐1 ; ++i){ service_loop += "\t\t service_loop_item(\n" + "\t\t\t service_ID = avalpa"+(i)+"_service_id,\n" + "\t\t\t EIT_schedule_flag = 0,\n" + "\t\t\t EIT_present_following_flag = 0,\n" +
112
"\t\t\t running_status = 4,\n" + "\t\t\t free_CA_mode = 0,\n" + "\t\t\t service_descriptor_loop = [\n" + "\t\t\t\t service_descriptor(\n" + "\t\t\t\t\t service_type = 1,\n" + "\t\t\t\t\t service_provider_name = \""+providerName[i‐1]+"\",\n" + "\t\t\t\t\t service_name = \""+serviceName[i‐1]+"\",\n" + "\t\t\t\t ),\n" + "\t\t\t ],\n" + "\t\t ),\n"; } return service_loop; } public String getPMT(int jumlahUser, int[] pidau, int[] pidvi){ String pmt = ""; for(int i = 1 ; i <= jumlahUser‐1 ; ++i){ pmt += "pmt"+(i)+" = program_map_section(\n" + "\t program_number = avalpa"+(i)+"_service_id,\n" + "\t PCR_PID = 0x"+(pidvi[i‐1])+",\n" + "\t program_info_descriptor_loop = [],\n" + "\t stream_loop = [\n" + "\t\t stream_loop_item(\n" + "\t\t\t stream_type = 2,\n" + "\t\t\t elementary_PID = 0x"+(pidvi[i‐1])+",\n" +//hasil pid input diletak diini "\t\t\t element_info_descriptor_loop = []\n" + "\t\t ),\n" + "\t\t stream_loop_item(\n" + "\t\t\t stream_type = 4,\n" +
113
"\t\t\t elementary_PID = 0x"+(pidau[i‐1])+",\n" + // +1 "\t\t\t element_info_descriptor_loop = []\n" + "\t\t ),\n" + "\t ],\n" + "\t version_number = 1,\n" + "\t section_number = 0,\n" + "\t last_section_number = 0,\n" + ")\n"; } return pmt; } public String generatePMT(int jumlahUser, String folderUser){ String output = ""; for(int i = 1 ; i <= jumlahUser‐1 ; ++i){ output += "out = open('"+folderUser+"temps/pmt"+(i)+".sec', \"wb\")\n" + "out.write(pmt"+(i)+".pack())\n" + "out.close\n" + "out = open('"+folderUser+"temps/pmt"+(i)+".sec', \"wb\")\n" + "out.close\n" + "os.system('sec2ts ' + str(avalpa"+(i)+"_pmt_pid) + ' < "+folderUser+"temps/pmt"+(i)+".sec > "+folderUser+"temps/mptspmt"+(i)+".ts')\n"; } return output; } public String generatePSI(int ini,int[] serviceId,String[] serviceName, int[] valuePMTID,String networkName,String[] providerName, String folderUser, int[] pidau, int[] pidvi) throws Exception{ String s = ""; int jumlahUser = ini+1;
114
s = "#! /usr/bin/env python\n" + "import os \n" + "from dvbobjects.PSI.PAT import *\n" + "from dvbobjects.PSI.NIT import *\n" + "from dvbobjects.PSI.SDT import *\n" + "from dvbobjects.PSI.PMT import *\n" + "from dvbobjects.PSI.TDT import *\n" + "from dvbobjects.DVB.Descriptors import *\n" + "from dvbobjects.MPEG.Descriptors import *\n" + "avalpa_transport_stream_id = 1\n" + "avalpa_original_transport_stream_id = 1\n" + getAvalpaServiceID(jumlahUser,serviceId)+ getAvalpaPMTID(jumlahUser,valuePMTID) + "\n" + "nit = network_information_section(\n" + "\t network_id = 1,\n" + "\t network_descriptor_loop = [\n" + "\t\t network_descriptor(network_name = \""+networkName+"\",),\n" + "\t ],\n" + "\t transport_stream_loop = [\n" + "\t\t transport_stream_loop_item(\n" + "\t\t\t transport_stream_id = avalpa_transport_stream_id,\n" + "\t\t\t original_network_id = avalpa_original_transport_stream_id,\n" + "\t\t\t transport_descriptor_loop = [\n" + "\t\t\t\t service_list_descriptor(\n" + "\t\t\t\t\t dvb_service_descriptor_loop = [\n" + getServiceDescriptor(jumlahUser) + "\t\t\t\t\t ],\n" +
115
"\t\t\t\t ),\n" + "\t\t\t\t logical_channel_descriptor(\n" +
"\t\t\t\t\t lcn_service_descriptor_loop = [\n" +
getLogicalChannel(jumlahUser,serviceId)+ "\t\t\t\t\t ],\n" +
"\t\t\t\t ),\n" +
"\t\t\t ],\n" + "\t\t ),\n" + "\t ],\n" + "\t version_number = 1,\n" + "\t section_number = 0,\n" + "\t last_section_number = 0,\n" + ")\n" + "\n" + "pat = program_association_section(\n" + "\t transport_stream_id = avalpa_transport_stream_id,\n" + "\t program_loop = [\n" + getProgramLoopPAT(jumlahUser) + "\t ],\n" + "\t version_number = 1,\n" + "\t section_number = 0,\n" + "\t last_section_number = 0,\n" + ")\n" + "\n" + "sdt = service_description_section(\n" + "\t transport_stream_id = avalpa_transport_stream_id,\n" + "\t original_network_id = avalpa_original_transport_stream_id,\n" +
116
"\t service_loop = [\n" + getServiceLoopSDT(jumlahUser,providerName,serviceName) + "\t ],\n" + "\t version_number = 1,\n" + "\t section_number = 0,\n" + "\t last_section_number = 0,\n" + ")\n" + "\n" + getPMT(jumlahUser, pidau, pidvi) + "out = open('"+folderUser+"temps/nit.sec\', \"wb\")\n" + "out.write(nit.pack())\n" + "out.close\n" + "out = open('"+folderUser+"temps/nit.sec', \"wb\")\n" + "out.close\n" + "os.system('sec2ts 16 < "+folderUser+"temps/nit.sec > "+folderUser+"temps/mptsnit.ts')\n" + "out = open('"+folderUser+"temps/pat.sec', \"wb\")\n" + "out.write(pat.pack())\n" + "out.close\n" + "out = open('"+folderUser+"temps/pat.sec', \"wb\")\n" + "out.close\n" + "os.system('sec2ts 0 < "+folderUser+"temps/pat.sec > "+folderUser+"temps/mptspat.ts')\n" + "out = open('"+folderUser+"temps/sdt.sec', \"wb\")\n" + "out.write(sdt.pack())\n" + "out.close\n" + "out = open('"+folderUser+"temps/sdt.sec', \"wb\")\n" +
117
"out.close\n" + "os.system('sec2ts 17 < "+folderUser+"temps/sdt.sec > "+folderUser+"temps/mptssdt.ts')\n" + generatePMT(jumlahUser, folderUser) + "os.system('rm "+folderUser+"temps/*.sec') \n" ; return s; } }