الخلفية
(يمكنك تخطي على الفور والانتقال إلى العنصر التالي)
عند تعلم Java ، بعد أن أتقنت Swing مباشرة ، أصبح الأمر ممتعًا ، "لكن كيف يمكنني تشغيل الصوت أو الفيديو؟". لقد بحثت حول Google لفترة طويلة ، وحفرت العديد من المكتبات هناك والتي ، من الناحية النظرية ، ينبغي أن تعطيني بالضبط ما أريد. ولكن كما أظهرت الممارسة ، فإن معظم هذه المكتبات تقرأ عددًا صغيرًا جدًا من التنسيقات وهي غير ملائمة للاستخدام. ما زلت أفتش لمدة يومين ، وأخيراً وجدت شيئًا كان من المفترض أنه من الناحية النظرية أن يساعدني في حل المشكلة. تأخذ مكتبة VLCj برامج الترميز من مشغل وسائط VLC وتقوم بتشغيل الملفات معهم. يوم آخر من المعاناة مع برنامج تعليمي على الموقع الرسمي وتمكنت أخيرًا من بدء تشغيل ملف الفيديو في JFrame.
هيا بنا إلى العمل:
1. قم بتنزيل المكتبة نفسها (من الأفضل أن تأخذ أحدث إصدار ، حيث إنها تعاني من مشاكل التوافق)
2. إذا لم تكن قد قمت بعد بتثبيت مشغل وسائط VLC ، فسيتعين عليك تنزيله وتثبيته. يمكنك تنزيله على موقع VideoLan الرسمي (من الأفضل أن تأخذ أحدث إصدار ، ويحتوي على المزيد من برامج الترميز).
3. بيئة تطوير متكاملة ، وأنا استخدم الكسوف.
أولاً ، قم بإنشاء مشروع جديد وتسميته ، على سبيل المثال ، "MediaPlayer".
الآن افتح مجلد MediaPlayer في مساحة عمل الكسوف ، وقم بفك ضغط الأرشيف الذي تم تنزيله مع المكتبة في هذا المجلد.
كذلك في Eclipse ، في إعدادات مشروعك ، انقر فوق "إضافة JARs الخارجية" وفي النافذة التي تفتح ، ابحث عن وحدد الملف vlcj-3.0.1.jar. اختيار له وله فقط .
لذلك ، كانت المكتبة متصلة بالمشروع. بعد ذلك نحتاج إلى إنشاء مثيل للفئة. على سبيل المثال ، قم بإنشاء Test.java (آمل ألا تحتاج هذه العملية إلى شرحها لأي شخص).
حصلنا على فصل فارغ مع المحتوى التالي تقريبًا:
public class Test { public static void main(String[] args) { } }
بعد ذلك ، نحتاج إلى إنشاء إطار JFrame نريد عرض الفيديو الخاص بنا فيه. نقوم أيضًا بإنشاء JPanel ووضع لوحة Canvas فيه ، والتي نستخدمها كسطح لمشغل الفيديو الخاص بنا.
public class Test { public static void main(String[] args) { JFrame f=new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); f.setBounds(100,100,1000,600); Canvas c=new Canvas(); c.setBackground(Color.black); JPanel p=new JPanel(); p.setLayout(new BorderLayout()); p.add(c); f.add(p); } }
لذلك ، الجزء البصري جاهز. بعد ذلك ، ننتقل مباشرة إلى المكتبة ومشغل VLC. وفي الواقع خلق اللاعب نفسه في إطارنا.
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files\VideoLAN\VLC"); Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); MediaPlayerFactory mpf= new MediaPlayerFactory(); EmbeddedMediaPlayer emp= mpf.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(f)); emp.setVideoSurface(mpf.newVideoSurface(c)); emp.setEnableMouseInputHandling(false); emp.setEnableKeyInputHandling(false); String file="C:\\Users\Admin\eclipse-workspace\MediaPlayer/video.avi"; emp.prepareMedia(file); emp.play();
أشرنا هنا إلى المسار إلى مشغل VLC (بشكل أكثر تحديدًا ، ملفات libvlc.dll و libvlccore.dll ومجلد الإضافات). لقد أنشأنا مشغل وسائط متقدم (به مجموعة أكبر من القدرات من مجرد "مشغل وسائط") ، وقمنا بتعيينه على السطح ، وأشار إلى المسار إلى ملف الفيديو ، وأعدنا الملف للتشغيل ، وقمنا بالفعل بتشغيله.
نتيجة لذلك ، سيبدو الرمز الخاص بك كما يلي:
import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JPanel; import com.sun.jna.Native; import com.sun.jna.NativeLibrary; import uk.co.caprica.vlcj.binding.LibVlc; import uk.co.caprica.vlcj.player.MediaPlayerFactory; import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer; import uk.co.caprica.vlcj.player.embedded.windows.Win32FullScreenStrategy; import uk.co.caprica.vlcj.runtime.RuntimeUtil; public class Test { public static void main(String[] args) { JFrame f=new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); f.setBounds(100,100,1000,600); Canvas c=new Canvas(); c.setBackground(Color.black); JPanel p=new JPanel(); p.setLayout(new BorderLayout()); p.add(c); f.add(p); NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files/VideoLAN/VLC"); Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); MediaPlayerFactory mpf= new MediaPlayerFactory(); EmbeddedMediaPlayer emp= mpf.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(f)); emp.setVideoSurface(mpf.newVideoSurface(c)); emp.setEnableMouseInputHandling(false); emp.setEnableKeyInputHandling(false); String file="C:\\Users\Admin\eclipse-workspace\MediaPlayer/video.avi"; emp.prepareMedia(file); emp.play(); } }
ضع في اعتبارك أن:
- قد يختلف طريقك إلى مشغل وسائط VLC.
- قد يختلف المسار إلى الفيديو الخاص بك.
للراحة ، يمكنك نسخ الملفات الضرورية من مشغل وسائط VLC إلى مشروعك. هذا يلغي الحاجة إلى تثبيت VLC على أجهزة الكمبيوتر حيث سيعمل البرنامج.
في البداية ، واجهت صعوبة في تشغيل الملفات التي تحتوي على السيريلية بالاسم أو المسار. إذا واجهت نفس الصعوبات ، فانقر بزر الماوس الأيمن على مثيل صفك وانتقل إلى إعداداته وقم بتغيير ترميزه إلى UTF-8