Skripsi
i
Pengembangan Aplikasi Pembelajaran
Skripsi
Oleh :
103093029716
Menyetujui,
Pembimbing I Pembimbing II
Mengetahui,
Ketua Program Studi Sistem Informasi
ii
PENGESAHAN UJIAN
Menyetujui :
Penguji 1 Penguji 2
Pembimbing 1 Pembimbing 2
Mengetahui :
Dekan Fakultas Sains dan Teknologi Ketua Program Studi Sistem Informasi
iii
PERNYATAAN
iv
ABSTRAK
v
KATA PENGANTAR
Bismillahirrahmanirahim
Puji dan syukur kita panjatkan kepada Allah SWT atas limpahan Rahmat
dan Karunia yang telah diberikan sehingga penulis dapat menyelesaikan laporan
skripsi ini dengan sebaik-baiknya. Shalawat dan salam senantiasa tercurah kepada
insan yang paling sempurna sepanjang masa, Nabi Muhammad SAW yang dengan
jasanya telah membawa kita dari zaman kebodohan menuju zaman yang berilmu
pengetahuan.
tugas wajib mahasiswa sebagai persyaratan untuk memperoleh gelar Strata Satu
(S1) pada Program Studi Sistem Informasi Fakultas Sains dan Teknologi Syarif
Hidayatullah Jakarta.
dengan baik tanpa bantuan dan bimbingan dari semua pihak. Pada kesempatan ini,
1. Ayahanda Drs. Supiyan dan Ibunda Dra. Susilahati, M.Sc tercinta yang
vi
2. Bapak DR. Eko Syamsuddin H, M.Eng dan Bapak Zainuddin Bey F,
atas kemurahan hati Bapak telah meluangkan segenap waktu, tenaga dan
3. Ibu Yasni Djamain, M.Kom dan Bapak Ditdit N. Utama, MMSI. Selaku
dosen penguji skripsi, atas masukan dan sarannya bagi perbaikan skripsi
penulis.
4. Bapak DR. Syopiansyah Jaya Putra, M.Sis selaku Dekan Fakultas Sains
dan Teknologi.
5. Bapak Ir. M. Qomarul Huda, M.Kom dan Ibu Nur Aeni Hidayah, MMSI
selaku Ketua dan Sekretaris Program Studi Sistem Informasi. Juga Ibu Nia
Katjong, Bapak Adil Siregar, Bapak Ade Chandra, Bapak Rudi Otomona,
Ibu Haniah, Ibu Bintan, Ibu Khodijah, dan semua dosen yang tanpa
mengurangi rasa hormat penulis, tidak dapat disebutkan satu per satu.
vii
Luthfi, Irvan, Andi, Abdurahman, Arif, Fahmi, Umar, Sarifah, Fitri, Puji,
Kiki, Cindy, Achie, Ika,, Efi, Yuli, Eghi, Rohilahima, dan Dede.
Maskoy, Arul, Risma, Iyah, Rina, Sarah, Heru, Pipit, Ana, Ubet, Adit dan
11. Rekan-rekan di Dapur Seni : Ical, Irfan, Ezy, Epot, Ano, Pandu, Hafizh,
Uwin, Doddy, Santo, Fetty, Endang, Yuni, Rian, Evan, Lia, Farah, dan
14. Semua rekan mahasiswa yang secara langsung maupun tidak langsung
Penulis menyadari laporan ini masih banyak kekurangan. Oleh karena itu,
masukkan berupa saran dan kritik yang membangun sangat penulis harapkan demi
terimakasih kepada semua pihak yang telah membantu penyelesaian laporan ini.
Wassalam
viii
DAFTAR ISI
Halaman Judul................................................................................................. i
Halaman Pengesahan...................................................................................... iv v
Halaman Pernyataan....................................................................................... vi
ABSTRAK...................................................................................................... ix
DAFTAR GAMBAR......................................................................................
DAFTAR TABEL...........................................................................................
BAB I PENDAHULUAN
ix
BAB II LANDASAN TEORI
2.1.5 Normalisasi............................................................................. 17
Pembelajaran........................................................................... 28
2.4.3 FFmpeg................................................................................... 37
x
2.4.4 Mplayer / Mencoder................................................................ 38
3.1.1 Observasi................................................................................. 45
3.2.1 Analysis................................................................................... 49
3.2.2 Design..................................................................................... 50
3.2.3 Code........................................................................................ 50
3.2.4 Test.......................................................................................... 51
BAB IV PEMBAHASAN
4.1 Persiapan............................................................................................. 52
xi
4.2 Analysis............................................................................................... 58
4.2.2 Identify.................................................................................... 60
4.3 Design................................................................................................. 69
xii
BAB IV PENUTUP
LAMPIRAN A : Interview
xiii
DAFTAR GAMBAR
xiv
Gambar 4.15 : STD Upload Video.................................................................. 81
Gambar 4.18 : File yang telah dikonversi tersimpan pada folder flvfiles........ 84
Gambar 4.19 : Thumbnail image dari video yang di-upload disimpan pada
folder thumb.................................................................................................... 84
95
Gambar 4.27 : STD Search.............................................................................
96
Gambar 4.28 : Desain halaman Index.............................................................
97
Gambar 4.29 : Desain halaman Login.............................................................
98
Gambar 4.30 : Desain halaman Admin...........................................................
99
Gambar 4.31 : Desain halaman Add User.......................................................
99
Gambar 4.32 : Desain halaman Add Sub Category.........................................
100
Gambar 4.33 : Desain halaman View All User................................................
101
Gambar 4.34 : Desain halaman View All Categories......................................
101
Gambar 4.35 : Desain halaman User..............................................................
102
Gambar 4.36 : Desain halaman My Videos.....................................................
xv
Gambar 4.37 : Desain halaman Change Password......................................... 103
xvi
DAFTAR TABEL
Tabel 4.5 : Atribut yang di-inject ke dalam database oleh FLV Tool............. 85
xvii
Tabel 4.19 : Hasil kuesioner mahasiswa tentang fasilitas...............................
PENDAHULUAN
Jakarta (UIN Syahid) yang paling diminati calon mahasiswa. Hal ini tak lepas
slogan tersebut. Misalnya membuat inovasi dalam hal belajar mengajar seperti
Hal itu didukung penelitian yang menyebut bahwa efektifitas belajar sangat
DePorter (1999) mengatakan 10% informasi diserap dari apa yang kita baca,
20% dari apa yang kita dengar, 30% dari apa yang kita lihat, 50% dari apa
yang kita lihat dan dengar, 70% dari apa yang kita katakan, 90% dari apa yang
pada FST.
1
2
Atas dasar teori yang dipaparkan pada latar belakang, maka perumusan
kebutuhan pengguna.
navigasi sistem.
Teknologi.
1. Bagi Penulis.
b. Untuk memenuhi salah satu syarat kelulusan strata satu (S1) Program
2. Bagi Akademik
3. Bagi Pengguna
video.
1. Observasi.
pembelajaran di FST.
2. Wawancara / Interview
3. Studi Pustaka
maupun elektronik
1. Analisis (Analysis)
tersebut.
2. Perancangan (Design)
pengertian yang lebih baik terhadap aliran data dan kontrol, proses-
3. Pengkodean (Code)
4. Ujicoba (Test)
pemastian bahwa semua perintah yang ada telah dicoba, dan fungsi
dikehendaki.
Dalam skripsi ini, pembahasan yang penulis sajikan terbagi dalam lima
BAB I PENDAHULUAN
BAB IV PEMBAHASAN
BAB V PENUTUP
BAB II
LANDASAN TEORI
lunak (software engineer) yang mencakup program yang dapat dieksekusi oleh
pengaruh yang cukup dekat akan berbagai aspek dalam kehidupan dan telah
8
9
yang secara keseluruhan atau memperbaiki sistem yang telah ada. Namun
dikembangkan.
1. Adanya Masalah.
teknologi informasi.
Dalam Pressman (2001 : 78), metode ini bisa juga disebut dengan
1. Analysis (Analisis)
2. Design (Perancangan)
dalamnya.
3. Code (Pengkodean)
program.
4. Test (Ujicoba)
aplikasi harus diuji coba. Proses uji coba di fokuskan terhadap tiga
1. Process (Proses)
yang mengalir disimpan dalam data store dan aliran data di-update
Selain itu, menurut Ladjamudin (2005 : 64), DFD juga terdiri dari
1. Diagram Konteks
ruang lingkup suatu sistem. Dalam diagram konteks hanya ada satu
2. Diagram Nol
3. Diagram Rinci
Proses
Penyimpanan
Data Data Process Data Process
15
(ERD) adalah suatu model jaringan yang menggunakan susunan data yang
1. Entity
dengan kata benda dan dapat berupa orang, benda, lokasi, kejadian
2. Relationship
3. Relationship Degree
4. Atribut
dan relationship.
16
5. Cardinality
kardinalitas relasi, yaitu : one to one, one to many atau many to one
Notasi yang biasa digunakan dalam ERD dapat dilihat pada tabel di
bawah ini :
Notasi Keterangan
Entitas, adalah suatu objek yang dapat
Entitas
diidentifikasi dalam lingkungan pemakai.
2.1.5 Normalisasi
lengkap).
menghadirkan model dari suatu kejadian yang disebut dengan state. Dalam
yaitu :
sistem.
perilaku atau potensi perilaku sebagai hasil dari pengalaman atau latihan
yang diperkuat.
Adapun input dari proses belajar itu sendiri sangat beragam. Baik
dari subjek tertentu seperti guru dan dosen, maupun dari objek seperti
adalah proses interaksi peserta didik dengan pendidik dan sumber belajar
20
adalah proses untuk membantu peserta didik agar dapat belajar dengan
baik.
kepada mahasiswa.
adalah suatu upaya bersama antara dosen dan mahasiswa untuk berbagi
diserap dari apa yang kita baca, 20% dari apa yang kita dengar, 30% dari
21
apa yang kita lihat, 50% dari apa yang kita lihat dan dengar, 70% dari apa
yang kita katakan, 90% dari apa yang kita katakan dan lakukan.
seorang pembelajar.
dari kata multi yang berarti banyak dan media berarti bentuk atau sarana
informasi.
pada informasi verbal berbasis teks dan juga informasi visual yang
visual.
2. Contiguity Principle.
5. Coherence Principles.
1. Frame Rate
satu detik. Format PAL yang digunakan Eropa, Asia dan Australia
2. Resolusi
3. Aspect Ratio
4. Kompresi
Seperti yang telah dijelaskan pada sub bab 2.3.1, video merupakan
salah satu elemen dalam multimedia dan di dalamnya terdapat dua atau
yang diinginkannya. Untuk itu diperlukan suatu sistem dan jaringan yang
adalah suatu sistem yang mengijinkan para user untuk memilih dan
menonton materi video atau klip melalui jaringan sebagai bagian dari
(http://www.ece.ubc.ca/~irenek/techpaps/vod/)
server berbasis web sehingga dapat diakses siapa saja selama terhubung ke
sendiri file video mereka untuk disimpan pada server YouTube. Selain itu
user dapat menjelajah berbagai video yang tersimpan di sana lalu memilih
video untuk ditontonnya yang berlangsung secara real time karena video
YouTube melakukan kompresi pada video dengan format FLV dan MP4
dengan tujuan agar user dengan bandwidth rendah sekalipun tetap dapat
menikmati video, tetapi hal ini berakibat pada rendahnya kualitas video
yang ditampilkan.
dalam pembelajaran karena teknologi video adalah suatu hal yang cukup
memainkan file video atau audio secara langsung ataupun dengan pre-
teknologi untuk memainkan atau menjalankan file (audio maupun video) dari
sebuah server streaming baik secara langsung maupun rekaman, dimana file
31
data rate tertentu yang cocok untuk ditransmisikan melalui internet atau
akses datanya. User dapat melihat file audio maupun video dari server
dalam satuan detik ketika melintasi jaringan. Ketika audio atau video digital
user yang mengakses file tersebut akan mengalami delay yang sangat lama
antara me-request data file tersebut dengan melihat tampilan audio atau video
tersebut. Hal ini disebabkan data yang besar itu membutuhkan waktu untuk
streaming :
1. Internet Radio
adalah WowTV.
3. Video Conference
user yang satu dengan yang lain berada pada tempat yang
file-file video.
aplikasi teknologi streaming. Dalam hal ini media nya adalah video. Pada
video sehingga user tak perlu menyimpannya. Pada sisi user, ketika
kecil pada komputer user dan data file mulai di-download kedalamnya.
Segera setelah buffer ini penuh (dalam satu satuan waktu), maka file
tersebut dapat mulai dijalankan. Selama file dijalankan, data yang diambil
adalah yang berasal dari buffer, namun secara bersamaan data yang
streaming ini. Yang pertama adalah data dari file video tersebut tidak
penah benar-benar eksis dalam komputer user. Setelah data yang ada di
Jadi user tidak pernah meng-copy file tersebut secara komplit ke dalam
komputernya. Hal ini menyebabkan setiap kali ingin melihat file tersebut,
maka user harus melakukan hubungan dengan server streaming lagi agar
atau jaringan streaming dapat diatur dalam beberapa cara yang berbeda.
1. Broadcast
Kelebihan :
Kelemahan :
berkesinambungan.
2. Unicast
yang berbeda.
Kelebihan :
Kelemahan :
berkesinambungan.
3. Multicast
Kelebihan :
multicast.
37
Kelemahan :
mengontrolnya.
Kelebihan :
mengontrolnya sendiri.
jaringan.
Kelemahan :
2.4.3 FFmpeg
video serta audio digital dalam banyak format. FFmpeg bekerja melalui
38
command line dan merupakan komposisi dari berbagai codec open source.
(http://en.wikipedia.org/wiki/Image:FFmpeg.svg)
Mplayer adalah sebuah multi platform media player yang bersifat open
file. Dengan fungsinya itu Mplayer juga dapat melakukan streaming pada
yang berfungsi untuk encoding, decoding dan filtering file. Dalam hal ini,
Flash Video adalah sebuah format file yang biasa digunakan untuk
jaringan internet. Flash Video memiliki ekstensi FLV yang bisa diplay
macam sistem operasi melalui beberapa web browser yang dilengkapi plug
in Adobe Flash Player dan beberapa aplikasi pihak ketiga seperti MPlayer,
ditampilkan pada aplikasi berbasis web, namun saat ini pilihan terbaik
40
(http://www.jeroenwijering.com/?item=FLV_Video_Compression)
Local Area Network (LAN) atau jaringan lokal adalah sekumpulan dua
atau lebih komputer yang berada dalam batasan jarak lokasi satu dengan yang
lain yang saling terhubung baik langsung atau tidak langsung. Menurut
Syafrizal (2005 : 16) LAN dibatasi oleh area yang relatif kecil, umumnya
dibatasi oleh area lingkungan. Biasanya jarak antar node tidak lebih jauh dari
bagian yaitu jaringan peer to peer dan jaringan server base. Peer-to-peer
sederhana, semua node bisa bertindak sebagai server maupun workstation dan
41
yang memberikan layanan. Server yang dimaksud di sini bukanlah benda fisik
server dan node yang mengakses layanan tersebut dinamakan klien. Secara
yang berfungsi hanya sebagai server namun ada juga yang mempunyai dua
workstation.
TCP terdiri dari beberapa layer atau lapisan yang memiliki fungsi
tertentu dalam komunikasi data. Setiap fungsi dari layer selain dapat
42
bekerjasama dengan layer pada tingkat lebih rendah atau lebih tinggi, juga
(http://www.mironov.com/articles/osi_layers/)
ditulis dalam bilangan desimal dari 0 sampai 255. Data yang mengalir
antar layer atau antar host dienkapsulasi dan diberi header agar tiap layer
lain, tetapi data mengalir ke host tujuan di network lain melalui gateway
lainnya. Jika bahasa yang digunakan ini berbeda, maka komunikasi pun
tidak dapat dilakukan. Berawal dari konsep itulah, maka dikenal istilah
Wireless local area network (WLAN) adalah sistem komunikasi data yang
informasi tanpa mencari tempat untuk plug in dan Network Manager dapat
beberapa diantaranya.
44
1. Mobility.
3. Installation Flexibility.
4. Reduced Cost-of-Ownership.
5. Scalability.
yang cocok untk jumlah pengguna yang sedikit sampai pada full
METODOLOGI PENELITIAN
3.1.1 Observasi
45
46
penelitian penulis.
untuk mengumpulkan data secara tatap muka langsung dengan orang yang
diwawancarai (interviewee).
1. Dosen
2. Mahasiswa
3. Staff Fakultas
elektronik.
dan sekuensial.
hingga definisi proyek. Semua aktivitas pada tahap ini akan dijelaskan
pembelajaran tersebut.
proses dengan DFD, pemodelan data dengan ERD dan beberapa diagram
secara nyata. Pada tahap ini dilakukan dua hal yaitu membuat kode
51
1. Kode program ditulis menggunakan bahasa pemrograman PHP 5
BAB IV
PEMBAHASAN
4.1 Persiapan
penulis memilih Fakultas Sains dan Teknologi (FST) antara lain karena
pengembangan.
Hidayatullah Jakarta.
ADIA (Akademi Dinas Ilmu Agama) tahun 1957 - 1960, sebagai fakultas
52
53
sebagai IAIN Syarif Hidayatullah Jakarta dari tahun 1963 sampai resmi
dan program studi tersebut berubah menjadi Fakultas Sains dan Teknologi
(FST) dan Fakultas Ekonomi dan Ilmu Sosial. FST terdiri dari beberapa
4.1.2.1 Visi
4.1.2.2 Misi
takwa (imtak).
teknologi.
1. Ruang Kelas
tulis, jaringan listrik dan jaringan LAN (port RJ 45). Nantinya FST
LAN).
a. ICT Lab
b. Matematika
and Equipment.
57
c. Fisika
d. Biologi
Laboratory.
e. Kimia
Chemistry.
f. Agribisnis
binaan.
g. Studio
analisis yang terdiri dari beberapa aktivitas yaitu data gathering, identify,
pengaruh gaya belajar dan bagaimana cara pembelajar itu belajar terhadap
literatur makalah, buku atau menulis di papan tulis serta penggunaan OHP
biasanya memutarkan file video yang tersimpan di storage pribadi, baik itu
hardisk, flashdisk maupun cd / dvd. Selain itu ada beberapa dosen yang
mahasiswanya.
diantaranya :
menampungnya.
2. Butuh lebih dari satu media player untuk memutar file-file video
penjabarannya :
sedikit hal itu belum menjadi masalah, namun ketika jumlah video
ukuran file maka dibutuhkan storage yang lebih besar lagi. Hal itu
mengunduh dari internet, copy dari optical disc seperti VCD atau
2. Fast Delivery.
4. Multi platform.
tujuan aplikasi.
1. Project Name
2. Project Overview
yang berjalan pada intranet / LAN dan memiliki fitur video player
pembelajaran.
64
3. Project Objectives
1. In Scope
time.
2. Out of scope
c. Keamanan data.
sebagai berikut :
65
1. Aktor :
a. Administrator (Admin)
menghapus user.
halaman user.
sekunder :
streaming.
2. Video
1) Judul
2) Deskripsi
3) Tag
4) Kategori
5) Sub Kategori
c. Fullscreen.
d. Pengaturan volume
4. Kategori
a. Teknologi Informasi
b. MIPA
c. Agribisnis
5. Sub Kategori
merupakan bidang ilmu yang lebih spesifik yang terdapat pada tiap
kategori. Sub kategori ini dapat dibuat, ditambah atau dihapus hanya
a. Teknologi Informasi :
3) Database
4) Multimedia
5) Jaringan
b. MIPA :
1) Kimia Polimer
2) Reproduksi
c. Agribisnis :
1) Agrikultur
2) Teknologi Pertanian
69
aplikasi yang telah didefinisikan sebelumnya. Pada tahap perancangan ini ini
1. Diagram Konteks
input data dosen dan upload video. Dari dua proses tersebut
diperinci menjadi dua proses, yaitu proses input data video dan
proses upload file video. Dalam level ini juga didapatkan dua
video dan folder file video untuk menyimpan file video yang di-
upload.
71
dosen Video
Data V ideo
2.1 2.2
Input Data Upload File
Video Video
File Video
Tb Video
yang diupload
lebih diperinci lagi menjadi tiga proses, yaitu proses upload video,
format file baku pada sistem yaitu flv, sedangkan konversi video
4.3.2.1 Normalisasi
1. Unnormalized Form
bersifat tunggal).
74
masing-masing :
1. Tabel User
2. Tabel Video
3. Tabel Kategori
4. Tabel Subkategori
halaman index. Yaitu halaman home, video, upload, login , dan help.
Home, Video, Upload dan Login serta link Help sebagai petunjuk
aplikasi yaitu Add User, View All User, Add Sub Category, View
dalam aplikasi, sedangkan pada menu View All User admin dapat
78
tersebut.
Upload Video dan selain itu admin dapat memanipulasi semua data
video pada aplikasi, mulai dari melihat semua video yang telah di-
79
upload oleh semua user pada menu Video dan juga mengedit atau
Hanya saja, user cuma bisa mengatur video yang diupload oleh
user itu sendiri, misalnya user hanya bisa mengedit dan menghapus
HOME / USER
CHOOSE S UB
PLAY VIDEO
CATEGORY
DELETE VIDEO
yang merupakan keadaan aplikasi yang dipicu oleh adanya aksi yang
STD.
81
video yang hanya dapat dilakukan oleh admin dan user / dosen.
Home
Klik “Upload”
___
Form Upload 1
Play Video
tampilan video.
folder flvfiles
database.
85
FLV Tool
edit serta delete video yang dilakukan oleh dosen. Tentu proses ini
edit serta delete video yang dilakukan oleh admin. Berbeda dengan
87
dosen yang hanya bisa mengedit dan menghapus video yang telah
diupload oleh dosen itu sendiri, admin memiliki hak penuh untuk
kondisi dimana pada sistem sudah terdapat file video yang telah
diupload .
dosen. Setelah itu klik tombol Add lalu data dosen masuk
admin
89
edit serta delete user yang dilakukan oleh admin. Admin memiliki
hak penuh untuk mengedit dan menghapus semua data user yang
telah dibuat oleh admin sebelumnya. Proses ini juga hanya dapat
data user.
user.
mengeksekusinya.
admin.
Home
User Page
Kembali k e halaman
user
Change Password
proses edit serta delete sub kategori yang dilakukan oleh admin.
sub kategori.
mengeksekusinya.
9. STD Search
upload video.
Help
LOGO
Search
Link Menu
Content
url atau ip address dimana sistem ini berada. Pada bagian atas
sistem ini.
97
halaman user.
Help
LOGO
Search
Link Menu
LOG IN
Username
Password
Login
lainnya.
Help
LOGO
Search
Content
dengan fungsi admin. Link-link tersebut adalah Add User, View All
User, Add Sub Category, View All Category dan View Admin
Video.
Help
LOGO
Search
Link Menu
ADD USER
Username
Password
Add
Help
LOGO
Search
Link Menu
Category
ADD
Help
LOGO
Search
Link Menu
Daftar User
Form ini tampil ketika admin ingin melihat user yang sudah
Help
LOGO
Search
Link Menu
VIEW CATEGORY
Kategori 1
Daftar Subkategori
Kategori 2
Daftar Subkategori
Kategori 3
Daftar Subkategori
Help
LOGO
Search
Content
yang telah diupload oleh user tersebut. Selain itu terdapat juga link
sendiri.
Help
LOGO
Search
Link Menu
MY VIDEOS
thumbnail image video serta data dari video tersebut seperti judul,
103
deskripsi dan tags video. Selain itu user atau admin juga dapat
Help
LOGO
Search
CHANGE PASSWORD
Password
New Password
Update
pada kolom Tags (kata kunci dipisahkan dengan spasi atau tanda
koma).
Help
LOGO
Search
Link Menu
UPLOAD VIDEO
Title
Description
Tags
Categories
Sub Categories
Next
Help
LOGO
Search
Link Menu
UPLOAD VIDEO
Browse Video
Browse
Upload
Pada halaman Video ini semua user baik itu admin, dosen,
Help
LOGO
Search
Link Menu
Nama Subkategori
Kategori
1
Thumbnail Judul Video
Image Deskripsi Video
Tags
Kategori
2
Thumbnail Judul Video
Image Deskripsi Video
Tags
Kategori
3 Thumbnail Judul Video
Image Deskripsi Video
Tags
Help
LOGO
Search
Link Menu
VIDEO PLAYER
Judul Video
Deskripsi Video
free media player yang bernama JW FLV Media Player versi 3.16
(http://www.jeroenwijering.com/?item=JW_FLV_Player).
video dimana user dapat melakukan fast forward dan rewind video,
PLAY VIDEO
menjalankan sistem.
Help
LOGO
Search
Link Menu
Help Content
(tampilan) untuk navigasi aplikasi dari desain yang telah dibuat. Berikut
yaitu sistem diinstal pada server lalu kemudian dapat diakses oleh client
1. Server
Spesifikasi Hardware :
Spesifikasi Software :
2. Client 1
Spesifikasi Hardware :
Spesifikasi Software :
3. Client 2
Spesifikasi Hardware :
e. LAN : Integrated
Spesifikasi Software :
4. Client 3
Spesifikasi Hardware :
e. LAN : Integrated
Spesifikasi Software :
Access Point .
seperti di atas, didapatkan hasil yang sama pada tiap client terkait dengan
calon user untuk mencoba sendiri sistem yang telah dirancang. Karena
sistem ini terdiri dari 3 aktor utama yaitu admin, dosen dan mahasiswa
dapat dimengerti dan diaplikasikan oleh calon user. Pada ujicoba lapangan
ini penulis meminta 1 orang sebagai admin, 8 orang dosen dan 16 orang
Dari sisi admin, sesuai dari kuesioner yang diisi oleh staff fakultas
navigasi juga sangat jelas dengan fasilitas yang cukup memadai sebagai
perangkat ajar dengan media video dan secara umum dapat membatu
Dari sisi dosen sebagai user primer ScienceTech VOD System ini
1. Antarmuka
2. Struktur Navigasi
3. Prosedur Pengoperasian
4. Fasilitas
5. Kesimpulan
1. Antarmuka
2. Struktur Navigasi
3. Prosedur Pengoperasian
pengoperasian
4. Fasilitas
5. Kesimpulan
hasilnya.
123
1. Video :
2. Sistem Operasi
a. Microsoft Windows.
b. Linux.
c. Macintosh.
operasi berikut :
a. Microsoft Windows.
b. Linux.
3. Web Browser
Flash Player 9 :
e. Camino (Mac)
125
memberi rekomendasi kebutuhan server dan client baik dari segi hardware
maupun softwarenya.
1. Server Side
a. Hardware
1) Processor
dengan jenis dual core atau lebih baik lagi quad core.
2) Memory
3) Storage
4) Graphic Display
b. Software
1) Operating System
Windows.
127
2) Web server.
4) Video codec.
user.
2. Client Side
a. Hardware.
1) Processor
2) Memory
3) Storage
aplikasi ini.
4) Graphic Display
b. Software
2) Web browser.
baik.
browser.
BAB V
PENUTUP
5.1 Kesimpulan
simpulkan, yaitu :
video dosen.
130
131
5.2 Saran
juga ingin menyampaikan beberapa saran guna manambah nilai dan manfaat
data.
untuk diimplementasikan.
yang hanya dapat menangani satu jenis media saja yaitu video.
Untuk itu ada baiknya jika aplikasi ini diintegrasikan dengan aplikasi
tentu ada baiknya jika setiap ruang kelas pada FST dilengkapi
133
5. Memberdayakan Studio Multimedia FST.
banyak perangkat yang tak bisa dioperasikan lagi karena rusak atau
Austerberry, David, 2005, The Technology of Video & Audio Streaming Second
Edition, USA, Focal Press.
Azikin, Azkari, Yudha Purwanto, 2005, Video / TV Streaming dengan Video LAN
Project, Yogyakarta, Andi.
Hasil Interview :
Dengan adanya webserver itu, apakah berarti FST akan memiliki IP Public
sendiri?
Ya, nantinya FST akan mendapat IP Public dari ISP sehingga website FST akan
dihosting pada server sendiri. Tidak dengan perusahaan penyedia hosting lagi.
Selain itu webserver juga akan digunakan untuk menaruh sistem informasi
akademik sehingga mahasiswa dapat mengaksesnya lewat internet.
INTERVIEW
Mahasiswa Fakultas Sains dan Teknologi
Hasil Interview :
Hasil Interview :
Metode apa saja yang bapak lakukan dalam mengajar? Apakah verbal
(berbicara dan menjelaskan) menulis di papan tulis, presentasi dengan
powerpoint, dengan video atau bagaimana?
Saya menggunakan berbagai media dan alat untuk mengajar; baik oral, papan
tulis, LCD projector, OHP bahkan pernah dicoba dengan distance learning yaitu
via Internet (web based) tahun 2003-2004. Namun karena keterbatasan server
waktu itu tidak bisa sempurna. Metode pembelajaranpun beragam; baik yang
menjelaskan, diskusi, latihan mandiri maupun studi lapangan.
Kesulitan lain dalam operasional adalah UIN belum menyediakan support untuk
pengajaran model ini.Perangkat audio misalnya, belum disediakan. Kalau harus di
auditoium atau lab multimedia, apa bisa setiap saat?
Kalau kapasitas dan format video, saya kira tidak masalah; kecuali kalau harus
melalui network. Saat ini media storage sudah tidak masalah. Mau flash disk yang
10 GB sudah banyak. Player juga banyak tersedia. Codec juga demikian. Apalagi
selama ini dosen yang mau mengajar menggunakan multimedia membawa sendiri
laptop dari rumah karena UIN belum menyediakannya. Jadi, no problem.
Nama :
Jabatan :
Silakan dijawab sesuai dengan pendapat anda setelah mencoba ScienceTech VOD
System dengan melingkari salah satu jawaban.
4. Sebagai perangkat ajar dengan media video, apakah fasilitas yang tersedia
pada ScienceTech VOD System ini sudah cukup memadai?
a. Kurang memadai b. Cukup memadai c. Memadai d.Sangat memadai
5. Apakah menu admin pada ScienceTech VOD System ini dapat membantu
anda mengelola sistem?
a. Ya b. Tidak
Jakarta,..................... 2008
( )
KUESIONER UJICOBA DOSEN
Sistem Informasi Pembelajaran
Berbasiskan Teknologi Video On Demand
(ScienceTech VOD System)
Nama :
Mata Kuliah :
4. Sebagai perangkat ajar dengan media video, apakah fasilitas yang tersedia
pada ScienceTech VOD System ini sudah cukup memadai?
a. Kurang memadai b. Cukup memadai c. Memadai d.Sangat memadai
( )
KUESIONER UJICOBA MAHASISWA
Sistem Informasi Pembelajaran
Berbasiskan Teknologi Video On Demand
(ScienceTech VOD System)
Nama :
Jurusan :
Semester :
Silakan dijawab sesuai dengan pendapat anda setelah mencoba ScienceTech VOD
System dengan melingkari salah satu jawaban.
4. Sebagai perangkat ajar dengan media video, apakah fasilitas yang tersedia
pada ScienceTech VOD System ini sudah cukup memadai?
a. Kurang memadai b. Cukup memadai c. Memadai d.Sangat memadai
Jakarta,....................2008
( )
LAMPIRAN C
HASIL PERANCANGAN ANTARMUKA
1. Halaman Play
2. Video Player
3. Halaman Video
4. Halaman Login
5. Halaman Upload 1
6. Halaman Upload 2
7. Halaman My Videos
<? <?
session_start(); include ('lib/db.php');
include ('lib/config.php'); session_start();
include ('lib/db.php'); $session=session_id();
removeSession($session);
$myusername=$_POST['myusername']; session_destroy();
$mypassword=$_POST['mypassword']; header("location:index.php");
$group = "MBR"; ?>
$result = getGroup($myusername,$mypassword);
while ($row=mysql_fetch_array($result))
{ ADD_USER.PHP
$group = $row[3];
} <?
if( checkLogin($myusername,$mypassword) == true ) include('./lib/config.php');
{ include('./lib/db.php');
if(checkMultipleLogin($myusername) == false) session_start();
{ $username =$_POST['username'];
session_register("myusername"); $password =$_POST['password'];
session_register("mypassword"); if(!session_is_registered(myusername)){
header("location:login.php");
session_register("group"); }
$session=session_id(); $session=session_id();
if(checkSession($session) == false){
insertSession($session,$myusername); session_destroy();
header("location:index.php"); header("location:login.php");
} }
else if(checkUser($username) == true){
{ insertUser($username,$password);
header("location:index.php");
header("location:forcelogin.php?user=$myusername&pass=$ }
mypassword"); else
} {
} header("location:index.php?error=1");
else }
{ ?>
header("location:login.php?error=1");
}
DEL_USER.PHP
?>
<?
include('./lib/config.php');
include('./lib/db.php');
session_start(); include('./lib/db.php');
$id = $_GET['id']; session_start();
if(!session_is_registered(myusername)){ $subkate =$_POST['subkategory'];
header("location:login.php"); $kate =$_POST['kategory'];
} if(!session_is_registered(myusername)){
$session=session_id(); header("location:login.php");
if(checkSession($session) == false){ }
session_destroy(); $session=session_id();
header("location:login.php"); if(checkSession($session) == false){
} session_destroy();
removeUser($id); header("location:login.php");
header("location:index.php?act=A1"); }
?> if(checkSub($subkate) == true){
insertSubkategory($subkate,$kate);
EDIT_USER.PHP header("location:index.php");
}
<? else
include('./lib/config.php'); {
include('./lib/db.php'); header("location:index.php?error=1");
session_start(); }
$id = $_GET['id']; ?>
if(!session_is_registered(myusername)){
header("location:login.php");
} DEL_SUBCATEGORY.PHP
$session=session_id();
if(checkSession($session) == false){ <?
session_destroy(); include('./lib/config.php');
header("location:login.php"); include('./lib/db.php');
} session_start();
$result = getUserDesc($id); $id = $_GET['id'];
$user = ""; if(!session_is_registered(myusername)){
$pass= ""; header("location:login.php");
while ($row=mysql_fetch_array($result)) }
{ $session=session_id();
$user = $row[0]; if(checkSession($session) == false){
$pass = $row[1]; session_destroy();
} header("location:login.php");
?> }
removeSubkate($id);
ADD_SUBCATEGORY.PHP header("location:index.php?act=A3");
?>
<?
include('./lib/config.php');
EDIT_SUBCATEGORY.PHP $desc= "";
$tag = "";
<? $kate ="";
include('./lib/config.php'); $subkate ="";
include('./lib/db.php'); while ($row=mysql_fetch_array($result))
session_start(); {
$id = $_GET['id']; $title = $row[0];
if(!session_is_registered(myusername)){ $desc = $row[1];
header("location:login.php"); $tag = $row[6];
} $kate = $row[7];
$session=session_id(); $subkate = $row[8];
if(checkSession($session) == false){ }
session_destroy(); ?>
header("location:login.php");
}
$result = getSubDesc($id); UPLOAD_AC.PHP
$sub = "";
$kate= ""; <?php
while ($row=mysql_fetch_array($result)) include('./lib/config.php');
{ include('./lib/db.php');
$sub =$row[1]; session_start();
$kate =$row[2]; $title=$_POST['title'];
} $description=$_POST['description'];
?> $tag=$_POST['tag'];
$kategory=$_POST['kategory'];
$subkategory=$_POST['subkategory'];
EDIT_VIDEO.PHP $fileName=$HTTP_POST_FILES['ufile']['name'];
$filesize = $HTTP_POST_FILES['ufile']['size'];
<? $fileName = str_replace(" ", "_", $fileName);
include('./lib/config.php');
include('./lib/db.php'); $path= "upload/".$fileName;
session_start(); list($file_name_no_extension,$extension) =
$video = $_GET['v']; split('\.',$fileName);
if(!session_is_registered(myusername)){ $path2 ="upload/$file_name_no_extension.avi";
header("location:login.php"); $play= "'./flvfiles/$file_name_no_extension.flv'";
} if($ufile !=none)
$session=session_id(); {
if(checkSession($session) == false){ if($extension == 'wmv' || $extension =='mov' ||
session_destroy(); $extension == 'avi' || $extension == 'mpeg' || $extension ==
header("location:login.php"); 'mpg' || $extension =='flv')
} {
$result = getVidDesc($video); if(copy($HTTP_POST_FILES['ufile']['tmp_name'],
$title = ""; $path))
{ $username = $_SESSION['myusername'];
if($extension == 'wmv')
{ insertVideo($title,$description,$tag,$kategory,$subkate
$mencoder_cmd = "mencoder.exe gory,$file_name_no_extension,$username,$duration);
$path -oac mp3lame -ovc xvid -xvidencopts pass=1 -o $path2"; ?>
//echo "comand = $mencoder_cmd";
exec("$mencoder_cmd");
$path = $path2; PLAY.PHP
//echo "path = $path";
} <?
$path_to_ffmpeg = "ffmpeg.exe"; include('./lib/config.php');
$avi_file = $path; include('./lib/db.php');
$new_flv = session_start();
"./flvfiles/$file_name_no_extension.flv"; $videoid = ((isset($_GET['v'])) ? strval($_GET['v']) : '0');
$ffmpeg_cmd = "$path_to_ffmpeg -i $session=session_id();
$avi_file -acodec mp3 -ar 22050 -ab 32 -f flv $new_flv";
//echo $ffmpeg_cmd; $fileName="'./flvfiles/filename.flv'";
exec("$ffmpeg_cmd"); $title = "Title";
$flv_cmd = "flvtool2.exe -U $new_flv"; $desc = "Description ";
exec("$flv_cmd"); $duration = "00:00:00";
//$video_info = new $uploadtime = "Waktu upload";
ffmpeg_movie("$new_flv");//duration of new flv file. $uploadby ="member";
//$sec = $video_info->getDuration();// $result = getVidDesc($videoid);
Gets the duration in secs. while ($row=mysql_fetch_array($result))
//$duration = sec2hms($sec);//covert to {
00:00:00 i.e. hrs:min:sec $title = $row[0];
$desc = $row[1];
//get the middle of the movie (time; $uploadby = $row[2];
00:00:00 format) for thumbnail $duration = $row[3];
//$sec2 = $sec / 2; $uploadtime = $row[4];
//$sec2 = round($sec2); $fileName="'./flvfiles/$row[5].flv'";
//$thumb_position = sec2hms($sec2); }
$output_file = ?>
"./thumb/$file_name_no_extension.jpg";
$ffmpeg_cmd2 = "$path_to_ffmpeg -i
$avi_file -f image2 -t 0.001 -ss 3 $output_file";
SEARCH.PHP
exec("$ffmpeg_cmd2");
//echo $ffmpeg_cmd2;
<?php
$flvtool2_cmd = "flvtool2.exe -U
$host = 'localhost';
$new_flv $new_flv";
$user = 'root';
exec("$flvtool2_cmd");
$pass = '';
$dbname = 'vod';
$duration =$filesize;
global $link; /* Get data. */
$link = mysql_connect( $host, $user, $pass ); $sql = "select title, description, duration,
if ( ! $link ) upload_time,file_name,id from video where title like '%$key' or
die( "Couldn't connect to MySQL" ); title like '$key%' or title like '%$key%' or description like
mysql_select_db( $dbname , $link ) '%$key' or description like '$key%' or description like
or die ( "Couldn't open your Database: ".mysql_error() '%$key%' or tag like '%$key' or tag like '$key%' or tag like
); '%$key%' or member_id like '%$key' or member_id like '$key%' or
member_id like '%$key%' order by upload_time desc LIMIT $start,
$tbl_name="video"; //your table name $limit";
// How many adjacent pages should be shown on each
side? $result = mysql_query($sql);
$adjacents =2;
/* Setup page vars for display. */
/* if ($page == 0) $page = 1;
First get total number of rows in data table. //if no page var is given, default to 1.
If you have a WHERE clause in your query, make sure $prev = $page - 1;
you mirror it here. //previous page is page - 1
*/ $next = $page + 1;
//next page is page + 1
$query = "SELECT COUNT(*) as num from video where title $lastpage = ceil($total_pages/$limit);
like '%$key' or title like '$key%' or title like '%$key%' or //lastpage is = total pages / items per page, rounded
description like '%$key' or description like '$key%' or up.
description like '%$key%' or tag like '%$key' or tag like $lpm1 = $lastpage - 1;
'$key%' or tag like '%$key%' or member_id like '%$key' or //last page minus 1
member_id like '$key%' or member_id like '%$key%'";
/*
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num];
VIDEO.PHP
/* Setup vars for query. */
$targetpage = "search.php"; //your file name (the <?php
name of this file) $host = 'localhost';
$limit = 5; $user = 'root';
//how many items to show per page $pass = '';
$page = $_GET['page']; $dbname = 'vod';
if($page)
$start = ($page - 1) * $limit; global $link;
//first item to display on this page $link = mysql_connect( $host, $user, $pass );
else if ( ! $link )
$start = 0; die( "Couldn't connect to MySQL" );
//if no page var is given, set start to mysql_select_db( $dbname , $link )
0 or die ( "Couldn't open your Database: ".mysql_error()
);
{
$tbl_name="video"; //your table name $sql = "select a.title, a.description, a.duration,
// How many adjacent pages should be shown on each a.upload_time,a.file_name,a.id from video a join subkategory b
side? on a.subkategory = b.subkategory where a.subkategory
$adjacents =2; ='$headline' order by upload_time desc LIMIT $start, $limit";
}
/* $result = mysql_query($sql);
First get total number of rows in data table.
If you have a WHERE clause in your query, make sure /* Setup page vars for display. */
you mirror it here. if ($page == 0) $page = 1;
*/ //if no page var is given, default to 1.
$prev = $page - 1;
$query = "SELECT COUNT(*) as num from video a join //previous page is page - 1
subkategory b on a.subkategory = b.subkategory"; $next = $page + 1;
if($headline != $default) //next page is page + 1
{ $lastpage = ceil($total_pages/$limit);
$query = "SELECT COUNT(*) as num from video a join //lastpage is = total pages / items per page, rounded
subkategory b on a.subkategory = b.subkategory where up.
a.subkategory ='$headline'"; $lpm1 = $lastpage - 1;
} //last page minus 1
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num]; /*
Now we apply our rules and draw the pagination
/* Setup vars for query. */ object.
$targetpage = "video.php"; //your file name (the We're actually saving the code to a variable in
name of this file) case we want to draw it more than once.
$limit = 5; */
//how many items to show per page $pagination = "";
$page = $_GET['page']; if($lastpage > 1)
if($page) {
$start = ($page - 1) * $limit; $pagination .= "<div class=\"pagination\">";
//first item to display on this page //previous button
else if ($page > 1)
$start = 0; $pagination.= "<a
//if no page var is given, set start to href=\"$targetpage?page=$prev&headline=$headline\">«
0 previous</a>";
else
/* Get data. */ $pagination.= "<span
$sql = "select a.title, a.description, a.duration, class=\"disabled\">« previous</span>";
a.upload_time,a.file_name,a.id from video a join subkategory b
on a.subkategory = b.subkategory order by upload_time desc //pages
LIMIT $start, $limit"; if ($lastpage < 7 + ($adjacents * 2)) //not
if($headline != $default) enough pages to bother breaking it up
{ {
for ($counter = 1; $counter <= $pagination.= "<a
$lastpage; $counter++) href=\"$targetpage?page=1&headline=$headline\">1</a>";
{ $pagination.= "<a
if ($counter == $page) href=\"$targetpage?page=2&headline=$headline\">2</a>";
$pagination.= "<span $pagination.= "...";
class=\"current\">$counter</span>"; for ($counter = $page -
else $adjacents; $counter <= $page + $adjacents; $counter++)
$pagination.= "<a {
href=\"$targetpage?page=$counter&headline=$headline\">$counter< if ($counter == $page)
/a>"; $pagination.=
} "<span class=\"current\">$counter</span>";
} else
elseif($lastpage > 5 + ($adjacents * 2)) $pagination.= "<a
//enough pages to hide some href=\"$targetpage?page=$counter&headline=$headline\">$counter<
{ /a>";
//close to beginning; only hide later }
pages $pagination.= "...";
if($page < 1 + ($adjacents * 2)) $pagination.= "<a
href=\"$targetpage?page=$lpm1&headline=$headline\">$lpm1</a>";
{ $pagination.= "<a
for ($counter = 1; $counter < 4 + href=\"$targetpage?page=$lastpage&headline=$headline\">$lastpag
($adjacents * 2); $counter++) e</a>";
{ }
if ($counter == $page) //close to end; only hide early pages
$pagination.= else
"<span class=\"current\">$counter</span>"; {
else $pagination.= "<a
$pagination.= "<a href=\"$targetpage?page=1&headline=$headline\">1</a>";
href=\"$targetpage?page=$counter&headline=$headline\">$counter< $pagination.= "<a
/a>"; href=\"$targetpage?page=2&headline=$headline\">2</a>";
} $pagination.= "...";
$pagination.= "..."; for ($counter = $lastpage - (2 +
$pagination.= "<a ($adjacents * 2)); $counter <= $lastpage; $counter++)
href=\"$targetpage?page=$lpm1&headline=$headline\">$lpm1</a>"; {
$pagination.= "<a if ($counter == $page)
href=\"$targetpage?page=$lastpage&headline=$headline\">$lastpag $pagination.=
e</a>"; "<span class=\"current\">$counter</span>";
} else
//in middle; hide some front and some $pagination.= "<a
back href=\"$targetpage?page=$counter&headline=$headline\">$counter<
elseif($lastpage - ($adjacents * 2) > /a>";
$page && $page > ($adjacents * 2)) }
} if(swf) { this.setAttribute('swf', swf); }
} if(id) { this.setAttribute('id', id); }
if(w) { this.setAttribute('width', w); }
//next button if(h) { this.setAttribute('height', h); }
if ($page < $counter - 1) if(ver) { this.setAttribute('version', new
$pagination.= "<a deconcept.PlayerVersion(ver.toString().split("."))); }
href=\"$targetpage?page=$next&headline=$headline\">next »</a>"; this.installedVer =
else deconcept.SWFObjectUtil.getPlayerVersion();
$pagination.= "<span if (!window.opera && document.all &&
class=\"disabled\">next »</span>"; this.installedVer.major > 7) {
$pagination.= "</div>\n"; // only add the onunload cleanup if the Flash
} Player version supports External Interface and we are in IE
?> deconcept.SWFObject.doPrepUnload = true;
}
if(c) { this.addParam('bgcolor', c); }
var q = quality ? quality : 'high';
SWFOBJECT.JS this.addParam('quality', q);
this.setAttribute('useExpressInstall', false);
/** this.setAttribute('doExpressInstall', false);
* SWFObject v2.0: Flash Player detection and embed - var xir = (xiRedirectUrl) ? xiRedirectUrl :
http://blog.deconcept.com/swfobject/ window.location;
* this.setAttribute('xiRedirectUrl', xir);
* SWFObject is (c) 2006 Geoff Stearns and is released under this.setAttribute('redirectUrl', '');
the MIT License: if(redirectUrl) { this.setAttribute('redirectUrl',
* http://www.opensource.org/licenses/mit-license.php redirectUrl); }
* }
*/ deconcept.SWFObject.prototype = {
if(typeof deconcept == "undefined") var deconcept = new useExpressInstall: function(path) {
Object(); this.xiSWFPath = !path ? "expressinstall.swf" :
if(typeof deconcept.util == "undefined") deconcept.util = new path;
Object(); this.setAttribute('useExpressInstall', true);
if(typeof deconcept.SWFObjectUtil == "undefined") },
deconcept.SWFObjectUtil = new Object(); setAttribute: function(name, value){
deconcept.SWFObject = function(swf, id, w, h, ver, c, quality, this.attributes[name] = value;
xiRedirectUrl, redirectUrl, detectKey) { },
if (!document.getElementById) { return; } getAttribute: function(name){
this.DETECT_KEY = detectKey ? detectKey : return this.attributes[name];
'detectflash'; },
this.skipDetect = addParam: function(name, value){
deconcept.util.getRequestParameter(this.DETECT_KEY); this.params[name] = value;
this.params = new Object(); },
this.variables = new Object(); getParams: function(){
this.attributes = new Array(); return this.params;
}, if (pairs.length > 0){ swfNode +=
addVariable: function(name, value){ 'flashvars="'+ pairs +'"'; }
this.variables[name] = value; swfNode += '/>';
}, } else { // PC IE
getVariable: function(name){ if
return this.variables[name]; (this.getAttribute("doExpressInstall")) {
}, this.addVariable("MMplayerType",
getVariables: function(){ "ActiveX");
return this.variables; this.setAttribute('swf',
}, this.xiSWFPath);
getVariablePairs: function(){ }
var variablePairs = new Array(); swfNode = '<object id="'+
var key; this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-
var variables = this.getVariables(); 96B8-444553540000" width="'+ this.getAttribute('width') +'"
for(key in variables){ height="'+ this.getAttribute('height') +'">';
variablePairs.push(key +"="+ swfNode += '<param name="movie"
variables[key]); value="'+ this.getAttribute('swf') +'" />';
} var params = this.getParams();
return variablePairs; for(var key in params) {
}, swfNode += '<param name="'+ key +'"
getSWFHTML: function() { value="'+ params[key] +'" />';
var swfNode = ""; }
if (navigator.plugins && navigator.mimeTypes && var pairs =
navigator.mimeTypes.length) { // netscape plugin architecture this.getVariablePairs().join("&");
if if(pairs.length > 0) {swfNode += '<param
(this.getAttribute("doExpressInstall")) { name="flashvars" value="'+ pairs +'" />';}
this.addVariable("MMplayerType", swfNode += "</object>";
"PlugIn"); }
this.setAttribute('swf', return swfNode;
this.xiSWFPath); },
} write: function(elementId){
swfNode = '<embed type="application/x- if(this.getAttribute('useExpressInstall')) {
shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ // check to see if we need to do an
this.getAttribute('width') +'" height="'+ express install
this.getAttribute('height') +'"'; var expressInstallReqVer = new
swfNode += ' id="'+ deconcept.PlayerVersion([6,0,65]);
this.getAttribute('id') +'" name="'+ this.getAttribute('id') if
+'" '; (this.installedVer.versionIsValid(expressInstallReqVer) &&
var params = this.getParams(); !this.installedVer.versionIsValid(this.getAttribute('version'))
for(var key in params){ swfNode += ) {
[key] +'="'+ params[key] +'" '; }
var pairs = this.setAttribute('doExpressInstall', true);
this.getVariablePairs().join("&");
this.addVariable("MMredirectURL", // see http://blog.deconcept.com/2006/01/11/getvariable-
escape(this.getAttribute('xiRedirectUrl'))); setvariable-crash-internet-explorer-flash-6/
document.title = try{
document.title.slice(0, 47) + " - Flash Player Installation"; var axo = new
this.addVariable("MMdoctitle", ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
document.title); }catch(e){
} try {
} var axo = new
if(this.skipDetect || ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
this.getAttribute('doExpressInstall') || PlayerVersion = new
this.installedVer.versionIsValid(this.getAttribute('version'))) deconcept.PlayerVersion([6,0,21]);
{ axo.AllowScriptAccess = "always";
var n = (typeof elementId == 'string') ? // throws if player version < 6.0.47 (thanks to Michael
document.getElementById(elementId) : elementId; Williams @ Adobe for this code)
n.innerHTML = this.getSWFHTML(); } catch(e) {
return true; if (PlayerVersion.major == 6) {
}else{ return PlayerVersion;
if(this.getAttribute('redirectUrl') != } }
"") { try {
axo = new
document.location.replace(this.getAttribute('redirectUr ActiveXObject("ShockwaveFlash.ShockwaveFlash");
l')); } catch(e) {}
} }
} if (axo != null) {
return false; PlayerVersion = new
} deconcept.PlayerVersion(axo.GetVariable("$version").split("
} ")[1].split(","));
}
/* ---- detection functions ---- */ }
deconcept.SWFObjectUtil.getPlayerVersion = function(){ return PlayerVersion;
var PlayerVersion = new }
deconcept.PlayerVersion([0,0,0]); deconcept.PlayerVersion = function(arrVersion){
if(navigator.plugins && navigator.mimeTypes.length){ this.major = arrVersion[0] != null ?
var x = navigator.plugins["Shockwave Flash"]; parseInt(arrVersion[0]) : 0;
if(x && x.description) { this.minor = arrVersion[1] != null ?
PlayerVersion = new parseInt(arrVersion[1]) : 0;
deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, this.rev = arrVersion[2] != null ?
"").replace(/(\s+r|\s+b[0-9]+)/, ".").split(".")); parseInt(arrVersion[2]) : 0;
} }
}else{ deconcept.PlayerVersion.prototype.versionIsValid =
// do minor version lookup in IE, but avoid fp6 function(fv){
crashing issues if(this.major < fv.major) return false;
if(this.major > fv.major) return true;
if(this.minor < fv.minor) return false; if (typeof objects[i][x] == 'function')
if(this.minor > fv.minor) return true; {
if(this.rev < fv.rev) return false; objects[i][x] = function(){};
return true; }
} }
/* ---- get value of query string param ---- */ }
deconcept.util = { }
getRequestParameter: function(param) { // fixes bug in fp9 see
var q = document.location.search || http://blog.deconcept.com/2006/07/28/swfobject-143-released/
document.location.hash; if (deconcept.SWFObject.doPrepUnload) {
if(q) { deconcept.SWFObjectUtil.prepUnload = function() {
var pairs = q.substring(1).split("&"); __flash_unloadHandler = function(){};
for (var i=0; i < pairs.length; i++) { __flash_savedUnloadHandler = function(){};
if (pairs[i].substring(0, window.attachEvent("onunload",
pairs[i].indexOf("=")) == param) { deconcept.SWFObjectUtil.cleanupSWFs);
return }
pairs[i].substring((pairs[i].indexOf("=")+1)); window.attachEvent("onbeforeunload",
} deconc
} ept.SW
} FObjec
return ""; } tUtil.
} prepUn
/* fix for video streaming bug */ load);
deconcept.SWFObjectUtil.cleanupSWFs = function() { }
var objects = document.getElementsByTagName("OBJECT"); /* add
for (var i=0; i < objects.length; i++) { Array.
objects[i].style.display = 'none'; push
for (var x in objects[i]) { if
needed
(ie5)
*/
if
(Array
.proto
type.p
ush ==
null)
{
Array.
protot
ype.pu
sh =
functi
on(ite
m) {
this[t
his.le
ngth]
=
item;
return
this.l
ength;
}}
/* add
some
aliase
s for
ease
of
use/ba
ckward
s
compat
ibilit
y */
var
getQue
ryPara
mValue
=
deconc
ept.ut
il.get
Reques
tParam
eter;
var
FlashO
bject
=
deconc
ept.SW
FObjec
t; //
for
legacy
suppor
t
var
SWFObj
ect =
deconc
ept.SW
FObjec
t;