Javafx Media Player (2) – Simple Playlist

Terima kasih buat mas pemula yang telah merequest di buatkan contoh media player dengan playlist pada javafx :).

ini dia contohnya:

/*
 * MPlayer.fx
 *
 * Created on 17 Mei 09, 7:12:19
 */

package mymediaplayer;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.media.MediaView;

/**
 * @author Hakim
 */

def mediaURLs = ["file:///F:/Movies/video6.flv","file:///F:/Harmony.flv",
"file:///F:/TEDtalk.flv"];
var slide = Media { source: mediaURLs[0] }
var counter = 0;

function getMedia(idx:Integer):Media{
 return Media{source: mediaURLs[idx]};
}

// play media repeatedly
def mediaplayer:MediaPlayer = MediaPlayer {
 media : slide
 onEndOfMedia: function():Void{
 // stop current media
 mediaplayer.stop();
 // play next media
 def x = counter + 1;
 if (x> sizeof mediaURLs - 1 )
 counter = 0
 else
 counter = x;
 mediaplayer.media = getMedia(counter);
 mediaplayer.play();
 }
};

mediaplayer.play();

def mediaview = MediaView {
 preserveRatio: true
 mediaPlayer : mediaplayer
 x: 30
 y: 30
}

Stage {
 title : "Media Player"
 scene: Scene {
 width: 500
 height: 500
 content: mediaview
 }
}

dalam contoh ini, saya menyimpan daftar alamat file multimedia dalam array of string, file – file ini nantinya akan dimainkan, secara bergantian.  yang perlu diperhatikan hanyalah event onEndOfMedia, yang merupakan salah satu properti mediaplayer, dari sini kita bisa mendeteksi kapan player memainkan media. dengan mengetahui waktu media telah memainkan satu file multimedia (video), kita bisa mengganti media dengan media file selanjutnya, dan seterusnya.

untuk membuat aplikasi yang lebih serius tentu tidak seperti ini. ini hanya sebuah contoh yang sederhana saja.

happy coding mas pemula atau dhev atau vebry, wish u luck :)

10 thoughts on “Javafx Media Player (2) – Simple Playlist

  1. Assalamualaikum Wr Wb…

    Terima kasih mas hakim contoh media playlist diatas…

    setelah saya coba program mas hakim diatas saat berganti dari satu video ke video selanjutnya kok tidak bisa muncul gambarnya ya mas???yang bisa looping hanya suaranya saja…

    kira-kira kenapa ya mas??

    Terima kasih atas bantuannya… :)

    • wa’alaikumsalaamwarahmatullah wabarakaatuh,
      kemarin saya coba bisa, hari ini saya coba lagi sempat spt itu, hanya muncul suaranya saja.
      sepertinya ini memang bugs, dan kalau gak salah pernah di bahas di milis javafx. biasanya ini terjadi jika streaming, karena proses bufferingnya yang gak sempurna, atau karena bandwidth yang tidak cukup.

      sekarang di coba gunakan file – file multimedia/ video yang ukurannya relatif kecil (kurang dari 10 MB), dan coba tambahkan pengecekan event error seperti ini:

      onError: function(e:MediaError){
      println(“error!: {e.message}”);
      }

      coba juga di debug counternya lompat2 nya ke index berapa saja (bener gak urutannya), jadi media playernya di buat seperti ini:

      def mediaplayer:MediaPlayer = MediaPlayer {
      media : slide
      onEndOfMedia: function():Void{
      // stop current media
      mediaplayer.stop();
      // play next media
      def x = counter + 1;
      if (x> sizeof mediaURLs – 1 )
      counter = 0
      else
      counter = x;
      println(“counter: {counter}”);
      mediaplayer.media.source = null;
      mediaplayer.media = null;
      mediaplayer.media = getMedia(counter);
      mediaplayer.play();
      }

      onError: function(e:MediaError){
      println(“error!: {e.message}”);
      }
      };

      coba juga kasus lain, misalkan pada saat test, aplikasi yang jalan di komputer hanya netbeans saja (plus aplikasi ini). sehingga kebutuhan memori untuk proses ini benar2 terpenuhi, dsb.

      silahkan di coba2 dulu deh, nanti kalau ada masalah lagi kita diskusikan lagi ya :)
      terimakasih koreksinya ya

      • Assalamualaikum..

        Dari link2 tentang javafx yang telah saya baca..hampir semua artikel membahas tentang pembuatan GUI dan animasi menggunakan javafx..

        yang saya ingin tau, tolong dipostingkan artikel javafx yang membahas tentang operasi file misalnya : handling file,membaca isi file(.txt) ato pengecekkan isi direktori..

        makasih sebelumnya…

      • wa’alaikum salaamwarahmatullah,

        karena javafx sebenarnya utamanya untuk RIA, semacam flash atau silverlight, jadi normal pembahasan GUI dan animasi jadi perhatian utama. kalau tentang operasi file, saat ini mungkin bisa di mix dengan java. saya sendiri juga masih belum bermain dengan operasi file text, kalau xml webservice (RESTful) anda bisa menemukan contohnya di javafx.com/samples

  2. asslmualaikum wr. wb.
    salam kenal mas Hakim.. hehe

    saya baca2 di internet dan ud saya coba juga, file jmc.jar yang di javaFX bisa diimport ke Java. Setelah baca2, tadinya saya mau bikin semacam mp3 player dengan menggunakan JMediaPlayer, tapi ternyata sudah tidak ada di jmc.jar versi 1.2.. Saya tidak menggunakan langsung JavaFX krn masih pengen fokus belajar Java dulu. Menurut Anda gimana nih solusi masalah saya? Adakah trik lain untuk mengimport library JavaFX ke Java?

    Sebelumnya saya sudah mencoba buat mp3 player dengan menggunakan JMF (tanpa tampilan GUI), tapi dari artikel2 yang saya baca, tidak ada keterangan tentang cara mengetahui apakah sebuah file mp3 sedang diputar atau tidak. Padahal saya ingin menambahkan perintah while (mp3.isPlaying()){} untuk menunggu satu lagu selesai diputar sebelum memutar lagu lainnya [kalo langsung saya tulis lagu1.play() dan lagu2.play() nanti langsung diputar bersamaan..]. Apakah saya terpaksa harus menggunakan Thread.wait(durasi_lagu) ? tapi Saya juga masih belum tau cara untuk menentukan durasi lagu di JMF..

    makasih ya untuk waktunya dan jawabannya. mungkin saya bakal nanya2 lagi nih. saya pengen banget belajar. mehehe..

    Kavin Yudhitia

  3. assalammu’alaikum ..
    salam kenal mass… artikelnya sangat membantu :D/

    saya mau tanya, kalau kita udah buat kaya player seperti di atas, trs kita mau panggil dari aplikasi yang pake swing trs di simpen di jPanel apa bisa??
    atau di panggil/triger nya dari button di swing??

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s