View
264
Download
6
Category
Preview:
Citation preview
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,
Victor Amrizal, M.Kom NIP. 150411288
Pembimbing II,
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
Victor Amrizal, M.Kom NIP. 150411288
Nenny Anggraini,MT NIP. -
Mengetahui :
Dekan Fakultas Sains dan Teknologi
DR. Syopiansyah Jaya Putra, M.Sis NIP. 19680117 200112 1001
Ketua Program Studi Teknik Informatika
Yusuf Durrachman, MIT, M.Sc NIP. 19710 522 200 604 1 002
iii
HALAMAN PERNYATAAN
DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR-
BENAR 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 , non-
transport 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
ix
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
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
1.3 Tujuan dan Manfaat 5
1.3.1 Tujuan 5
1.3.2 Manfaat 6
x
1.4 Metode penelitian 7
1.4.1 Metode Pengumpulan Data 7
1.4.2 Metode Pengembangan Sistem 7
1.5 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
2.5 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
BAB III METODELOGI PENELITIAN 38
3.1 Metode Pengumpulan Data 38
3.1.1 Studi Pustaka 38
3.1.2 Studi Literatur 39
3.1.3 Observasi 39
xi
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 46
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
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
xvi
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
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 per-
sentimeter 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 Broadcasting-
Handheld), 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. Untuk-
aspek 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 standar-
definition (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 Digital-
Terresterial 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 DVB-
H, 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. Sebuah-
implementasi 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 ke-
sejumlah 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. MPEG-
4/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 masing-
masing 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, elemen-
elemen 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
Fungsi
Deskripsi
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 128x96 qcif 176x144 cif 352x288 4cif 704x576 qqvga 160x120 qvga 320x240 vga 640x480 svga 800x600 xga 1024x768 uxga 1600x1200 qxga 2048x1536 sxga 1280x1024 qsxga 2560x2048 hsxga 5120x4096 wvga 852x480 wxga 1366x768 wsxga 1600x1024 wuxga 1920x1200 woxga 2560x1600 wqsxga 3200x2048 wquxga 3840x2400
whsxga 6400x4096 whuxga 7680x4800 cga 320x200
hd480 852x480 hd720 1280x720 hd1080 1920x1080
35
2. Menagutur bitrate dari Video
-b <value> 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 <value> 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 <value> untuk mengatur frekuensi audio audio untuk output file.
Nilai comman yang digunakan adalah 22050, 44100, 48000 Hz.
-ac <value> Mengatur jumlah saluran audio.
-ab <value> 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 Rancangan Baru
1. OpenCaster menggunakan
terminal.
2. Format video yang digunakan
adalah *.ts (transport stream)
1. Membuat rancangan antar muka
agar pengguna lebih mudah
dalam menyiarkan konten
program TV Digital.
2. Aplikasi 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 ke
1. Prof.
2. Prof.
3. Prof.
4. Dr. A
5. Ir. M.
6.Dr. Ku
7. Prof.
8. Dr. Ir
epala-kepala
Dr.Ing. B.J
Dr. Rahard
Dr. Zuhal M
A.S. Hikam
. Hatta Raja
usmayanto
Ir. Said Dja
r. Marzan A
a BPPT dar
J. Habibie 1
di Ramelan 1
MSEE 1998
1999-2001
asa 2001-20
Kadiman 20
auharsyah J
A. Iskandar 2
i awal berdi
974-1998
1998-1998
8-1999
004
004-2006
enie, Sc.D 2
2008-Sekara
iri sampai s
2006-2008
ang
sekarang:
4.1.2. Struktur O
Organisasi
Gam
BPPT
mbar. 4.1. SStruktur Orgganisasi BPPPT
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 Rancangan Baru
1. OpenCaster menggunakan
terminal.
2. Format video yang digunakan
adalah *.ts (transport stream)
1. Membuat rancangan antar
muka agar pengguna lebih
mudah dalam menyiarkan
konten program TV Digital.
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 file-
file 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 parameter-
parameter 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 proses-
proses 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).
Ya
Tidak
Gambar 4.9. Flowchart proses Video
Mulai
Masukan Data
Konversi file video jadi .*ts
Filter file .*ts
Hasil video.*ts
Tambah Video
Muxing Video
Broadcast Video
Check bitrate
Selesai
66
Berikut ini merupakan potongan program berdasarkan
flowchart proses. Dibawah ini merupakan coding untuk proses
konversi video.
Dan dibawah ini adalah coding untuk proses filter video.
Sehingga data video yang tertinggal hanya PID video dan PID audio.
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
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[] 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";
67
maka, tombol browse akan aktif dan tombol next tidak dapat
difungsikan.
Coding untuk langkah selanjutnya adalah memprediksi bitrate,
hasil prediksi ini akan berfungsi dalam proses muxing. Dibawah ini
merupakan inti untuk memproses prediksi birate.
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.
private void
nextButtonActionPerformed(java.awt.event.ActionEvent evt)
{
jLokasiFile.setText("");
Jbirate.setText("");
jPIDVideo1.setText("");
jServisprovider.setText("");
jServisname.setText("");
jBrowseFile.setEnabled(true);
nextButton.setEnabled(false);
}
String predict = "tspcrmeasure "+av+" 4000000";
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.
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.
Welcome To IPTV
User :
Pass :
Login
69
b. Desai
untuk
yang
dima
video
c. Desa
rekam
in Prototype
Layar Ko
k memberi
digunakan
asukkan dal
o yang diun
Konfigurasi
Gamba
onfigurasi S
nama pada
n. Adapun
lam tabel P
duh.
ain Prototype
Pada Tab
man dan aka
e Tab Video
b video pe
an ditonton
i Sistem
r 4.11. Layar
Sistem ada
a jaringan s
nama jarin
PSI dan dil
enyiar akan
oleh klien.
Gambar 4.1
r Simpan Ko
lah layar y
ebagai iden
ngan yang
lakukan mu
n menyiark
2. Layar Tab
nfigurasi
yang digun
ntitas dari s
diinputkan
ultiplex ber
kan video-v
Video
nakan
server
akan
rsama
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 rancangan-
rancangan 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-centered-
interactive-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 (online).
Tersedia : (http://arstechnica.com/business/news/2006/03/iptv.ars).
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\ntriedepok@gmail.com\nagungstt@gmail.com"); 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
// triedepok@gmail.com
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
//triedepok@gmail.com
int psibit = 2000;
int bit1=0,bit2=0;
//Menghitung jumlah birate keseluruhan
//triedepok@gmail.com
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;
}
}
Recommended