7 remote win media player 18

21
REMOTE WINDOWS MEDIA PLAYER 1. APLIKASI REMOTE CLIENT-SERVER MEDIA PLAYER (UDP) 1.1 LATAR BELAKANG Project adalah remote windows media player, untuk memahami aplikasi ini sebelumnya sudah membaca dan mencoba modul tcp dan udp server.

Upload: kasih-eko-susilo

Post on 22-Dec-2015

240 views

Category:

Documents


2 download

DESCRIPTION

facilitated application specification techniques (FAST),

TRANSCRIPT

REMOTE WINDOWS MEDIA PLAYER

1. APLIKASI REMOTE CLIENT-SERVER MEDIA PLAYER (UDP)

1.1LATAR BELAKANG

Project adalah remote windows media player, untuk memahami aplikasi ini

sebelumnya sudah membaca dan mencoba modul tcp dan udp server.

Latar belakang pembuatan Aplikasi Remote client-server ini adalah dapat

melakukan remote dan memutar music/video yang tersimpan di playlist.

1.2FUNGSI

Fungsi dari aplikasi ini adalah dengan menyalakan aplikasi media player dari

remote dan play music/video dari playlist berupa text. Asumsi playlist dan

mp3/video disimpan di directory tertentu. Terdapat dua aplikasi, Aplikasi Client

dan Aplikasi Server

1.3DESAIN TAMPILAN

Berikut ini desain tampilan :

Aplikasi form client

Komponen Yang digunakan:

No Nama Komponen Properti

1 Label Untuk Media Palyer host, remote Host,

pesan

2 Button Name: Send

2

3 Combobox1 Items:

Play

Next

Previous

Stop

Mute

Volume Up

Volume Down

4 Textbox1

5 Check Box1

Kode Program Pada Button yaitu:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim pesan As String Dim udpclient200 As New UdpClient udpclient200.Connect(TextBox1.Text, 8080) Dim sendBytes As Byte()

'Validasi message yang akan dikirim If (Me.ComboBox1.Text = "Previous") Then pesan = "prev" ElseIf (Me.ComboBox1.Text = "Volume Up") Then pesan = "voup" ElseIf (Me.ComboBox1.Text = "Volume Down") Then pesan = "vodw" End If

'status shuffle atau tidak If CheckBox1.CheckState = CheckState.Checked Then pesan = Me.ComboBox1.Text + "1" Else pesan = Me.ComboBox1.Text + "0" End If

3

sendBytes = Encoding.ASCII.GetBytes(pesan) udpclient200.Send(sendBytes, sendBytes.Length)

End Sub

Penjelasan:Button akan mengirimkan pesan ke server berdasarkan comboox yang di pilih yaitu: previous,

volume up, volume down dan status shuffle . nantinya aplikasi server akan menerima dan

merespon dari permintaan cient. Aplikasi ini harus dijalankan server dan client untuk

berfungsi.

Untuk koneksi ke server, aplikasi client memasukan nama ip server dan port yang sudah

ditentukan. Port nya adalah 8080, dan protokol yang digunakan adalah UDP.

Aplikasi ini ditulis menggukan visual basic versi 2005, untuk versi 2008 dan 2010 tidak terlalu

jauh bedanya.

Selanjutnya aplikasi server

4

Komponen Yang digunakan:

No Nama Komponen Properti

1 Label Untuk Text: Remote Media Player

2 List Box

3 Button Text: Hide

4 Axwindows Media Player

5 Notify Icon Untuk sembunyi form:

Tips menambahkan komponen windows media player:

Dari toolboxm klik kanan pilih choose item

5

Pada tab component pilih windows media player

6

Hasilnya ada di toolbox:

Nama form ini adalah udpserver, berikut kode lengkapnya

Imports System.ThreadingImports System.NetImports System.Net.SocketsImports System.Text 'Buat Encoding'Imports SystemImports System.ioImports AxWMPLibImports WMPLib

Public Class udpserver Private Delegate Sub updateLBlStatus_dlgt(ByVal tempStr As String)

Private Sub udpserver_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim thdUDPServer = New Thread(New ThreadStart(AddressOf serverThread)) thdUDPServer.Start() End Sub

7

Public Sub serverThread() Dim udpClient100 As New UdpClient(8080) Dim a, banding, c, status As String Dim bnds As Rectangle = My.Computer.Screen.Bounds Me.AxWindowsMediaPlayer1.enableContextMenu = False

While True Me.AxWindowsMediaPlayer1.enableContextMenu = False Dim remoteIpEndPoint As New IPEndPoint(IPAddress.Any, 0) Dim receiveBytes As Byte() Dim item_obj As updateLBlStatus_dlgt receiveBytes = udpClient100.Receive(remoteIpEndPoint) Dim returnData As String = Encoding.ASCII.GetString(receiveBytes) a = remoteIpEndPoint.Address.ToString() + "Pesan: " + returnData.ToString 'Mendapatkan Flag shuffle atau tidak banding = (returnData.ToString).ToLower 'status = status apakah musik dijalankan shuffle atau tidak status = banding.Substring(4) 'menjalankan command yang harus dilakukan banding = banding.Substring(0, 4) If (banding = "play") Then Using sr As New StreamReader("D:\PlayList.txt") Dim item As String = sr.ReadLine While item <> Nothing If ListBox1.InvokeRequired Then item_obj = New updateLBlStatus_dlgt(AddressOf UpdateLblStatusThreadSafe) If Not item_obj Is Nothing Then ListBox1.Invoke(item_obj, item) End If End If item = sr.ReadLine End While

'menjalankan shuffle If (status = 1) Then AxWindowsMediaPlayer1.settings.setMode("shuffle", True) End If

End Using

' Buat Playlist Dim Playlist As IWMPPlaylist = AxWindowsMediaPlayer1.playlistCollection.newPlaylist("thePlaylist") For Each FilePath As String In ListBox1.Items Dim VideoFile As WMPLib.IWMPMedia3 = AxWindowsMediaPlayer1.newMedia(FilePath) Playlist.appendItem(VideoFile) Next

8

AxWindowsMediaPlayer1.currentPlaylist = Playlist

'c = "Play Music" 'UpdateLblStatusThreadSafe(c) End If

If (banding = "stop") Then AxWindowsMediaPlayer1.Ctlcontrols.stop() c = "Stop Music" 'UpdateLblStatusThreadSafe(c) End If

If (banding = "next") Then AxWindowsMediaPlayer1.Ctlcontrols.next() c = "Next Music" 'UpdateLblStatusThreadSafe(c) End If

If (banding = "prev") Then AxWindowsMediaPlayer1.Ctlcontrols.previous() c = "Previous Music" 'UpdateLblStatusThreadSafe(c) End If If (banding = "volume up") Then If AxWindowsMediaPlayer1.settings.volume < 100 Then AxWindowsMediaPlayer1.settings.volume += 1 End If End If

If (banding = "volume down") Then If AxWindowsMediaPlayer1.settings.volume > 0 Then AxWindowsMediaPlayer1.settings.volume -= 1 End If End If

If (banding = "mute") Then AxWindowsMediaPlayer1.settings.mute = Not AxWindowsMediaPlayer1.settings.mute End If

End While End Sub

Private Sub UpdateLblStatusThreadSafe(ByVal tempStr As String) Dim updateLBlStatus_obj As updateLblStatus_dlgt

If ListBox1.InvokeRequired Then updateLBlStatus_obj = New updateLblStatus_dlgt(AddressOf UpdateLblStatusThreadSafe) If Not updateLBlStatus_obj Is Nothing Then ListBox1.Invoke(updateLBlStatus_obj, tempStr) End If

9

Else Call UpdateLblStatus(tempStr) End If

End Sub

Private Sub UpdateLblStatus(ByVal tempStr As String) ListBox1.Items.Add(tempStr) End Sub

Private Sub AxWindowsMediaPlayer1_CurrentItemChange(ByVal sender As System.Object, ByVal e As AxWMPLib._WMPOCXEvents_CurrentItemChangeEvent) Handles AxWindowsMediaPlayer1.CurrentItemChange For i As Integer = 0 To ListBox1.Items.Count - 1 ListBox1.SelectedIndex = i Next End Sub

Private Sub player_PlayStateChange(ByVal sender As Object, ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles AxWindowsMediaPlayer1.PlayStateChange If Me.AxWindowsMediaPlayer1.playState = WMPLib.WMPPlayState.wmppsMediaEnded Or Me.AxWindowsMediaPlayer1.playState = WMPLib.WMPPlayState.wmppsStopped Then Me.AxWindowsMediaPlayer1.currentMedia = Nothing End If End Sub 'Minimize Window dan menjadikan icon tran Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Me.WindowState = FormWindowState.Minimized Me.Visible = False nfi.Visible = True End Sub 'Jika Icon tray diklik akan kembali ke mode normal Private Sub nfi_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles nfi.MouseDoubleClick Me.Visible = True Me.WindowState = FormWindowState.Normal nfi.Visible = False End SubEnd Class

Pada aplikasi server ini kita set sebuah playlist di windows media player, dari sebuah file txt, yang kita set namanya adalah: Playlist.txtIsi file tersebut:D:\mp3\1.mp3D:\mp3\2.mp3D:\mp3\3.mp3D:\mp3\4.mp4

10

File 1,2,3,4.mp3 adalah benar file lagu yang kita set, sesuaikan dengan lagu di komputer masing masing.

Sehingga aplikasi client akan menjalankan lagu yang diset dari playlist server.Library yang ditambahkan jangan lupa yaitu:Imports AxWMPLibImports WMPLib

Fungsi yang diterima oleh client: akan direspon oleh server yaitu: If (banding = "stop") Then AxWindowsMediaPlayer1.Ctlcontrols.stop() c = "Stop Music" 'UpdateLblStatusThreadSafe(c) End If

If (banding = "next") Then AxWindowsMediaPlayer1.Ctlcontrols.next() c = "Next Music" 'UpdateLblStatusThreadSafe(c) End If

If (banding = "prev") Then AxWindowsMediaPlayer1.Ctlcontrols.previous() c = "Previous Music" 'UpdateLblStatusThreadSafe(c) End If If (banding = "volume up") Then If AxWindowsMediaPlayer1.settings.volume < 100 Then AxWindowsMediaPlayer1.settings.volume += 1 End If End If

If (banding = "volume down") Then If AxWindowsMediaPlayer1.settings.volume > 0 Then AxWindowsMediaPlayer1.settings.volume -= 1 End If End If

If (banding = "mute") Then AxWindowsMediaPlayer1.settings.mute = Not AxWindowsMediaPlayer1.settings.mute End If

Keterangan Prosedur lainnya:

Penjelasan :

Private Delegate Sub updateLBlStatus_dlgt(ByVal tempStr As String) deklarasi delegate

updateLBlStatus_dlgt dengan parameter string.

Private Sub udpserver_Load berisi call method untuk start UDP server.

11

banding = (returnData.ToString).ToLower artinya bahwa variable banding akan

menerima pesan dan diubah ke dalam string dan diubah menjadi huruf kecil.

status = banding.Substring(4)artinya digunakan untuk mendapatkan status apakah

diputar secara shuffle atau tidak.

banding = banding.Substring(0, 4) artinya variable banding dipotong dari huruf paling

awal sampai dengan huruf ke-4.

If (banding = "play") Then

Using sr As New StreamReader("D:\PlayList.txt")

o Dim item As String = sr.ReadLine

o While item <> Nothing

If ListBox1.InvokeRequired Then

item_obj = New updateLBlStatus_dlgt(AddressOf UpdateLblStatusThreadSafe)

Jika client mengirimkan pesan berupa play, maka baca PlayList.txt yang terdapat pada

direktory D:\ perbaris akan ditulis ke dalam listbox1.

Dim Playlist As IWMPPlaylist =

AxWindowsMediaPlayer1.playlistCollection.newPlaylist("thePlaylist")

For Each FilePath As String In ListBox1.Items

Dim VideoFile As WMPLib.IWMPMedia3 =

AxWindowsMediaPlayer1.newMedia(FilePath)

Playlist.appendItem(VideoFile)

Next

AxWindowsMediaPlayer1.currentPlaylist = Playlist

12

Menyimpan isi playlist ke dalam listbox1 berdasarkan url yang terdapat pada

Playlist.txt dan memutarnya.

c = "Start Play"

UpdateLblStatusThreadSafe(c)

Mengirimkan pesan bahwa Musik sudah diputar.

If (banding = "stop") Then

o AxWindowsMediaPlayer1.Ctlcontrols.stop()

o c = "Stop"

o UpdateLblStatusThreadSafe(c)

End If

Jika pesan yang dikirim “stop”, maka musik akan distop dan akan dikirimkan pesan

ke listbox1 bahwa musik di stop. Hal ini juga berlaku pada pesan yang lainnya

seperti “Next” dan “Previous”.

Private Sub AxWindowsMediaPlayer1_CurrentItemChange berfungsi untuk

menhighlight musik yang dijalankan di media player.

Private Sub player_PlayStateChange berfungsi untuk menghandle musik yang

diputar agar jika musik di stop akan stop, tidak bersifat pause.

13

If (status = 1) Then

AxWindowsMediaPlayer1.settings.setMode("shuffle", True)

End If

Artinya jika statusnya shuffle akan diputar secara shuffle.

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button3.Click digunakan agar icon muncul di tray icon.

Private Sub nfi_MouseDoubleClick(ByVal sender As System.Object, ByVal e As

System.Windows.Forms.MouseEventArgs) Handles nfi.MouseDoubleClick

digunakan jika icon diklik akan kembali maximaze dan dalam kondisi normal.

O IMPLEMENTASI

Beriku ini implementasi dari Remote Media Player :

- Aplikasi Server Dijalankan untuk mengaktifkan layanan, terdapat list lagu

mp3

14

Kemudian aplikasi client dijalankan, jika percobaan hanya satu komputer

dapat menggunakan ip : 127.0.0.1 tapi jika beda komputer, isi remote host

dengan alamat ip komputer server. Gambar aplikasi client dijalanan.

15

Remote Host diisi dengan IP yang akan diremote.

Pesan diisi dengan Play untuk memutar, Next untuk lagu berikutnya, Previous

untuk lagu sebelumnya, Stop untuk berhenti, mute untuk menghilangkan

suara, volume up untuk menaikkan volume, dan volume down untuk

menurunkan volume.

Shuffle digunakan untuk merandom lagu/video yang akan diputar

- Jalankan di IP yang diremote

- Pada saat dikirimkan pesan berupa play, akan tampil list lagu/video yang

sudah disimpan dalam Playlist.txt dan diputar serta pesan “Play”.

16

Contoh ketika dijalankan keraskan volume suara komputer, maka aplikasi

server akan memutar lagu berdasarkan list.

- Begitu juga dengan command lainnya.

17

- Pada saat diklik tombol hide, akan tampil di ujung kanan bawah.

18