تشغيل ملفات الفيديوا المختلفة فى تطبيقات الجافا باستخدام المكتبة VLCJ
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: واجهة المستخدم الرسومية Java Swing
صفحة 1 من اصل 1 • شاطر
تشغيل ملفات الفيديوا المختلفة فى تطبيقات الجافا باستخدام المكتبة VLCJ
VLC Media Player هو مشغل وسائط مفتوحة المصدر مشهور جدًا تم تطويره بواسطة مشروع VideoLAN . VLCJ هو مشروع يسمح لك بالعمل مع مثيل VLC في تطبيقات الجافا.

في هذا المقال التعليمي ، سنقوم بإنشاء مشغل فيديو باستخدام مكتبة VLCJ ومكتبات VLC مع Netbeans IDE ، وسيكون بإمكان مشغلنا فتح ملف فيديو (MP4 ، 3GP ، Dat ، webm) ، سيكون لديه عناصر التحكم الأساسية (PLAY ، PAUSE سيتم استخدام شريط التمرير ، STOP ، MUTE) لإظهار التقدم المحرز في تشغيل الفيديو وكذلك تعديل نقطة التشغيل عن طريق تحريك شريط التمرير ، وأخيراً يمكن التقاط مقاطع الفيديو في أي نقطة تشغيل.
قبل البدء نحن بحاجة تحميل المكتبات التالية :
مكتبة VLCJ-2.4.1.jar (تحميل)
مكتبة JNA-3.5.1.jar (تحميل)
Libvlc.dll ومكتبات libvlccore.dll
الخطوة 1: VLCJ / JNA
تتطلب مكتبة VLCJ مكتبة JNA (Java Native Access) ، تسمح لنا مكتبة JNA بالوصول إلى المكتبات المشتركة الأصلية لنظام التشغيل دون استخدام واجهة Java الأصلية. في هذا البرنامج التعليمي ، سوف نستخدم إصدار VLC 2.4.1 و JNA 3.5.1 ، كل إصدار من VLCJ يتطلب إصدارًا مختلفًا من JNA ، لتجنب المشكلات ، يوصى بمراجعة وثائق VLCJ .
قم بتنزيل هذه المكتبات وتثبيتها على Netbeans
الخطوة 2. ملفات DLL
نحتاج إلى المكتبات libvlc.dll و libvlccore.dll من VLC ، فهذه الإعدادات موجودة افتراضيًا في «C: \ Program Files \ VideoLAN \ VLC \» ، لذلك إذا لم يكن لديك المشغل ، فيجب عليك تنزيله وتثبيته على جهاز الكمبيوتر الخاص بك.[/l]
الخطوة 3. مشروع جافا
افتح netbeans وقم بإنشاء مشروع جديد يسمى " DemoVLCJ " واعطها البنية التالية ، أضف JFrame يسمى " Player " ، أضف مكتبات JNA و VLCJ
[rtl]الخطوة 4. افتح jframe " المشغل " في وضع التصميم وخذ وقتك في إنشاء الواجهة مثل الصورة التالية:[/rtl]
[rtl]
[/rtl]
هام: يجب كتابة أسماء كل عنصر تحكم كما في الصورة.
الخطوة 4. الترميز
افتح jframe في وضع الكود " المصدر ".يجب عليك إضافة الاستيراد التالي:
يتم تعريف المتغيرات التالية قبل مُنشئ الفئة:
يمكننا أن نرى أننا نشير إلى مسار ملفات DLL بحيث يتم تحميلها في المشروع ، إذا كان لديك VLC مثبتة في اتجاه آخر ، يجب عليك تعديل هذا المتغير.
لدينا حاليًا مُنشئ الفئة الفارغ ، وهو:
في هذا المنشئ سنكتب كل الكود الضروري لتشغيل المشغل
أولاً نعلن بعض خصائص المشروع ونضيف PLAYER إلى الحاوية
أخيرًا نضيف الأحداث لكل عنصر تحكم على النحو التالى :
إذا لم تقم بوضع علامة على أي خطأ ، فقم بتشغيل المشغل والاستمتاع بـ contrario ، وإلا تحقق من أن أسماء عناصر التحكم هي نفس أسماء هذا المشروع ، وتأكد أيضًا من أن مكتبات jar هي نفسها الموجودة في هذا المشروع

في هذا المقال التعليمي ، سنقوم بإنشاء مشغل فيديو باستخدام مكتبة VLCJ ومكتبات VLC مع Netbeans IDE ، وسيكون بإمكان مشغلنا فتح ملف فيديو (MP4 ، 3GP ، Dat ، webm) ، سيكون لديه عناصر التحكم الأساسية (PLAY ، PAUSE سيتم استخدام شريط التمرير ، STOP ، MUTE) لإظهار التقدم المحرز في تشغيل الفيديو وكذلك تعديل نقطة التشغيل عن طريق تحريك شريط التمرير ، وأخيراً يمكن التقاط مقاطع الفيديو في أي نقطة تشغيل.
قبل البدء نحن بحاجة تحميل المكتبات التالية :
مكتبة VLCJ-2.4.1.jar (تحميل)
مكتبة JNA-3.5.1.jar (تحميل)
Libvlc.dll ومكتبات libvlccore.dll
الخطوة 1: VLCJ / JNA
تتطلب مكتبة VLCJ مكتبة JNA (Java Native Access) ، تسمح لنا مكتبة JNA بالوصول إلى المكتبات المشتركة الأصلية لنظام التشغيل دون استخدام واجهة Java الأصلية. في هذا البرنامج التعليمي ، سوف نستخدم إصدار VLC 2.4.1 و JNA 3.5.1 ، كل إصدار من VLCJ يتطلب إصدارًا مختلفًا من JNA ، لتجنب المشكلات ، يوصى بمراجعة وثائق VLCJ .
قم بتنزيل هذه المكتبات وتثبيتها على Netbeans
الخطوة 2. ملفات DLL
نحتاج إلى المكتبات libvlc.dll و libvlccore.dll من VLC ، فهذه الإعدادات موجودة افتراضيًا في «C: \ Program Files \ VideoLAN \ VLC \» ، لذلك إذا لم يكن لديك المشغل ، فيجب عليك تنزيله وتثبيته على جهاز الكمبيوتر الخاص بك.[/l]
الخطوة 3. مشروع جافا
افتح netbeans وقم بإنشاء مشروع جديد يسمى " DemoVLCJ " واعطها البنية التالية ، أضف JFrame يسمى " Player " ، أضف مكتبات JNA و VLCJ
[rtl]الخطوة 4. افتح jframe " المشغل " في وضع التصميم وخذ وقتك في إنشاء الواجهة مثل الصورة التالية:[/rtl]
[rtl]

هام: يجب كتابة أسماء كل عنصر تحكم كما في الصورة.
الخطوة 4. الترميز
افتح jframe في وضع الكود " المصدر ".يجب عليك إضافة الاستيراد التالي:
- الكود:
import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import javax.swing.AbstractButton;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.filechooser.FileNameExtensionFilter;
import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.player.MediaPlayer;
import uk.co.caprica.vlcj.player.MediaPlayerEventAdapter;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;
يتم تعريف المتغيرات التالية قبل مُنشئ الفئة:
- الكود:
private EmbeddedMediaPlayerComponent player;
private File file;
static{
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files\\VideoLAN\\VLC\");
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
}
//bandera para controlar la reproduccion de video y el cambio en el avance de video
private boolean band = true;
يمكننا أن نرى أننا نشير إلى مسار ملفات DLL بحيث يتم تحميلها في المشروع ، إذا كان لديك VLC مثبتة في اتجاه آخر ، يجب عليك تعديل هذا المتغير.
لدينا حاليًا مُنشئ الفئة الفارغ ، وهو:
- الكود:
public Reproductor() {
initComponents();
// سنقوم بكتابة الاكواد المطلوبة هنا
}
في هذا المنشئ سنكتب كل الكود الضروري لتشغيل المشغل
أولاً نعلن بعض خصائص المشروع ونضيف PLAYER إلى الحاوية
- الكود:
setTitle("VLCJ Player");//nombre de reproductor
setLocationRelativeTo(null);//centrar en pantalla
player = new EmbeddedMediaPlayerComponent();
//se añade reproductor
jPanel2.add(player);
player.setSize(jPanel2.getSize());
player.setVisible(true);
//slider control de volumen
sldVolumen.setMinimum(0);
sldVolumen.setMaximum(100);
//slider control progreso
sldProgress.setMinimum(0);
sldProgress.setMaximum(100);
sldProgress.setValue(0);
sldProgress.setEnabled(false);
أخيرًا نضيف الأحداث لكل عنصر تحكم على النحو التالى :
- الكود:
//إنشاء مربع حوار لاختيار ملفات التشغيل
btnOpenFile.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("Videos", "mp4","flv","webm","3gp","dat");
fileChooser.addChoosableFileFilter(filter);
//fileChooser.setCurrentDirectory(new java.io.File("C:\\videos\\tmp\"));
if ( fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION ){
file = fileChooser.getSelectedFile();
btnPlay.doClick();
}
}
});
//Control captura de ventana
btnSnapshot.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(file!=null){
String absolutePath = file.getAbsolutePath();
String newPath = absolutePath .substring(0, absolutePath .length()-4) + "_" + System.currentTimeMillis() + ".png";
if( player.getMediaPlayer().saveSnapshot(new File(newPath)) )
JOptionPane.showMessageDialog(null, "Snapshot: " + newPath );
}
}
});
//كود زر التشغيل
btnPlay.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
if (file!=null){
player.getMediaPlayer().playMedia(file.getAbsolutePath());
sldVolumen.setValue( player.getMediaPlayer().getVolume() );
sldProgress.setEnabled(true);
setTitle( file.getName() + " - VLCJ Player");
}
}
});
//كود زر الايقاف الموقت
btnPause.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
player.getMediaPlayer().setPause( player.getMediaPlayer().isPlaying()?true:false );
}
});
//إيقاف التحكم في التشغيل
btnStop.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
player.getMediaPlayer().stop();
sldProgress.setValue(0);
sldProgress.setEnabled(false);
setTitle("VLCJ Player");
}
});
//كتم الصوت
btnMute.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
AbstractButton abstractButton = (AbstractButton) actionEvent.getSource();
player.getMediaPlayer().mute( abstractButton.getModel().isSelected() );
}
});
//التحكم فى شريط الصوت
sldVolumen.addChangeListener(new ChangeListener(){
@Override
public void stateChanged(ChangeEvent e) {
Object source = e.getSource();
player.getMediaPlayer().setVolume( ((JSlider) source).getValue() );
}
});
//قائمة المشغل لإظهار التقدم في تشغيل الفيديو
player.getMediaPlayer().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void positionChanged(MediaPlayer mp, float pos)
{
if(band){
int value = Math.min(100, Math.round(pos * 100.0f));
sldProgress.setValue(value);
}
}
@Override
public void finished(MediaPlayer mediaPlayer){
}
});
//Listener para el slider progress
sldProgress.addMouseListener(new MouseListener(){
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {
band= false;
}
@Override
public void mouseReleased(MouseEvent e) {
band = true;
}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
//// التحكم للتبديل إلى وضع التشغيل
sldProgress.addChangeListener(new ChangeListener(){
@Override
public synchronized void stateChanged(ChangeEvent e) {
if( !band ){
Object source = e.getSource();
float np = ((JSlider) source).getValue() / 100f;
player.getMediaPlayer().setPosition(np);
}
}
});
إذا لم تقم بوضع علامة على أي خطأ ، فقم بتشغيل المشغل والاستمتاع بـ contrario ، وإلا تحقق من أن أسماء عناصر التحكم هي نفس أسماء هذا المشروع ، وتأكد أيضًا من أن مكتبات jar هي نفسها الموجودة في هذا المشروع
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ

NEXT- الادارة
- تاريخ التسجيل : 18/02/2011
المساهمات : 446
النقاط : 200660
التقيم : 28
الدولة :
الجنس :
| |
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: واجهة المستخدم الرسومية Java Swing
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
» شركة تنظيف مسابح بالرياض
» "بروتين بعد التكميم فوائد البروتين بعد التكميم بروتين بودر بعد التكميم"
» اشهر نسخ واتساب بلس 2023 whatsapp plus
» متجر مجوهرات دير: إشراقة الذهب الخالص
» صراف صينى مقاس57*40
» فلاي تورز: اكتشف عالمًا من السفر والسياحة المثيرة
» متجر yallaa kids : مصدر الإبداع والتعلم للأطفال
» افضل تمويل
» "اقوي عروض المساج "