Pembuatan Aplikasi Peer-to-peer Multimedia Sharing Berbasis Gstreamer, Python, dan GTK+
Kurniawan Haikal 5106100172 Dosen Pembimbing: Wahyu Suadi, S.Kom., M.M., M.Kom.
Pendahuluan
Latar Belakang ●
Multimedia streaming
●
Gstreamer for streaming
●
Peer-to-peer
●
Sharing
Tujuan ●
Menyediakan aplikasi multimedia sharing dengan konsep peer-to-peer menggunakan Gstreamer framework sebagai server dan player tanpa tergantung dengan aplikasi tertentu
Rumusan Masalah ●
●
●
Bagaimana sebuah file multimedia (audio/video) dapat di-stream ke komputer lain di dalam sebuah jaringan komputer dengan menggunakan Gstreamer. Bagaimana sebuah komputer menampilkan daftar file yang di-share di komputer tersebut untuk kemudian dapat dimainkan oleh pengguna di komputer lain Bagaimana sebuah komputer melakukan request ke komputer lain untuk memainkan sebuah file multimedia (audio/video) yang masuk dalam daftar share.
Batasan Masalah ●
Membangun aplikasi multimedia sharing untuk komputer-komputer yang berada di dalam satu jaringan atau komputer dengan IP public dengan konsep peerto-peer menggunakan Gstreamer sebagai server dan player.
Manfaat ●
Akses file multimedia pada komputer lain tanpa harus menyalin fisik file ke dalam hard disk lokal
●
Meminimalisir pelanggaran hak cipta
●
Berbagi
Tinjauan Pustaka
Gstreamer ●
Framework multimedia berbasis pipeline
●
Play
●
Stream
●
Edit
Gstreamer Package ●
●
●
●
●
gstreamer: paket inti dari Gstreamer gst-plugins-base: element utama dari Gstreamer gst-plugins-good: kumpulan plugin dengan kualitas baik di bawah lisensi LGPL (Lesser General Public License) gst-plugins-ugly: kumpulan plugin berkualitas baik yang mungkin dapat menimbulkan masalah distribusi terkain lisensi gst-plugins-bad: kumpulan plugin yang kualitasnya masih perlu ditingkatkan
Gstreamer Element ●
●
●
Gstreamer Element atau GstElement adalah bagian terpenting dari Gstreamer. Setiap decoder, encoder, demuxer, audio/video output pada dasarnya adalah sebuah element. Kumpulan dari beberapa element yang digabung akan membentuk sebuah media pipeline. Element dapat dianalogikan sebagai sebuah black box yang memiliki dua buah sisi INPUT → Element → OUTPUT
Gstreamer Element (2) ●
Source Element
●
Filter
Gstreamer Element (3) ●
Sink Element
Pipeline ●
Gabungan dari beberapa element
Peer-to-peer
Peer-to-peer
Client-server
Gstreamer Python ●
Menyediakan Application Programming Interface (API) untuk bahasa pemrograman Python yang memungkinkan fungsi-fungsi dari Gstreamer dapat diakses menggunakan bahasa pemrograman Python
PyGTK ●
Sekumpulan wrappers untuk library graphical user interface GTK+. PyGTK adalah perangkat lunak bebas dengan lisensi LGPL
Webpy ●
Sebuah web framework untuk bahasa pemrograman Python yang memiliki fungsi yang cukup powerful tapi dengan arsitektur yang sederhana
Metodologi
Desain Aplikasi
Profile, Playlist, dan Shared Files ●
●
●
Profile: berisi informasi mengenai nama komputer yang akan ditampilkan pada pengguna lain, alamat IP (internet protocol) komputer, dan nomor port di mana servis HTTP server dijalankan. Playlist: berisi daftar komputer yang menjalankan aplikasi yang sama pada jaringan komputer yang sama. Komputer-komputer yang terdapat pada playlist memiliki daftar file multimedia yang dapat dimainkan. Shared files: berisi daftar berkas multimedia (audio/video) yang dapat dimainkan oleh komputer lain dengan aplikasi yang sama.
Use Case Diagram
Arsitektur Aplikasi
Arsitektur Peer-to-peer Streaming
Komunikasi Receiver dan Sender
Graphical User Interface ●
●
●
●
Window: top-level window yang menampung sebuah child widget. Button: sebuah pushbutton widget yang memunculkan sinyal ketika di-klik. TreeView: sebuah widget yang dapat menampilkan bentuk tree dan list. IconView: sebuah widget yang menampilkan daftar ikon di dalam sebuah grid.
Modul Receiver
Modul Receiver (2)
Modul Sender
Modul Sender (2)
Http Server ●
/ (root) Request terhadap path ini akan mengembalikan response berupa string tuple yang berisi data profile dari host tersebut. Contoh:
●
- Request: http://192.168.56.1:10001/
●
- Response: (u'Belinjo', u'192.168.56.1', 10001)
Http Server ●
/getlist Request pada path ini akan mengembalikan response berupa string array (atau pada bahasa pemrograman Python disebut dengan list) yang berisi daftar nama file yang di-share oleh host tersebut. Contoh:
●
- Request: http://192.168.56.1:10001/getlist
●
- Response: [u'Cangkruan 25-07-2011.flv', u'01 Borneo I-Borneo II.mp3', u'crunched.flv', u'lagu.mp3', u'Wordpress-budi.ogv', u'Nyanyian kode.flv']
Http Server ●
●
●
/play Request path ini harus disertai dengan tiga buah parameter, yakni alamat IP dari client, nomor port di mana service Gstreamer tcpserversrc dijalankan, dan nomor ID dari file yang hendak dimainkan. Contoh: - Request: http://192.168.56.1:10001/play? host=192.168.56.21&port=5000&id=3
●
- Response: Response dari pemanggilan path /play adalah HTTP server akan memanggil modul Sender dengan parameter sesuai dengan request yang dikirimkan client
Hasil dan Pembahasan
Fungsi-fungsi ●
Create profile
●
Edit profile
●
Add file
●
Delete file
●
Add host
●
Remove host
●
Play
Analisis Sumber Daya
Komputer Sebagai Client ●
Sebelum
●
●
●
Setelah
Komputer Sebagai Server ●
Sebelum
●
●
●
●
●
Setelah
Komputer Sebagai Client dan Server ●
Sebelum
●
●
●
●
●
Setelah
Kesimpulan ●
●
●
Telah dikembangkan apliakasi peer-to-peer multimedia streaming berbasis Gstreamer dengan fitur-fitur: ●
Manajemen profile
●
Manajemen playlist
●
Manajemen shared files
Tidak terdapat perbedaan sumber daya, khususnya CPU dan memory yang cukup signifikan pada multimedia streaming antara model peer-to-peer dengan model client-server. Model komunikasi peer-to-peer dapat dijadikan alternatif untuk berbagi pakai file multimedia pada sebuah jaringan komputer.
Saran ●
●
●
Pengguna tidak perlu menambahkan host secara manual, tetapi program melakukan scanning terhadap host-host yang berada pada jaringan yang menjalankan servis yang sama. Tipe file yang dapat di-share tidak hanya terbatas pada file audio dan video, tetapi bisa ditambahkan dengan sharing webcam maupun file presentasi. Ditambahkannya fitur "chat" yang memungkinkan antar pengguna dapat saling berkomunikasi melalui chatting.
Daftar Pustaka ●
●
●
●
●
Wim Taymans , Steve Baker , Andy Wingo , Ronald S. Bultje , Stefan Kost. GStreamer Application Development Manual (0.10.32.3). Persson, Jens. Feb. 2009. Python GStreamer Tutorial,
Tagliaretti, G.M, Persson, Jens. Oct. 2007. Python GStreamer Reference Manual,
Finlay, John. 2005. PyGTK 2.0 Tutorial. Gill, Peter. 2010. PyGTK Notebook A Journey Through Python Gnome Technologies.
Terima Kasih