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.
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
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