إطار عمل جافا للوسائط

إطار عمل جافا للوسائط ( JMF ) هو مكتبة جافا تُمكّن من إضافة الصوت والفيديو والوسائط الأخرى المرتبطة بالوقت إلى تطبيقات جافا وبرامجها المصغّرة. هذه الحزمة الاختيارية، التي تستطيع التقاط وتشغيل وبث وتحويل ترميز تنسيقات وسائط متعددة ، تُوسّع منصة جافا، الإصدار القياسي (Java SE) وتسمح بتطوير تطبيقات وسائط متعددة متعددة المنصات. [ 1 ]

الإصدارات والتراخيص

طُوِّرت نسخة أولية من JMF، مخصصة للتشغيل فقط، من قِبَل شركات صن مايكروسيستمز ، وسيليكون غرافيكس ، وإنتل ، وأُصدرت باسم JMF 1.0 عام 1997. ثم صدرت نسخة JMF 2.0، التي طُوِّرت من قِبَل صن وآي بي إم ، عام 1999، وأضافت ميزات الالتقاط، والبث المباشر، وبرامج الترميز القابلة للتوصيل ، والتحويل الترميزي. يُسوَّق JMF كجزء من تقنية "سطح المكتب" من صن، J2SE، على عكس أُطر تطبيقات جافا من جانب الخادم والعميل. ومن الاستثناءات البارزة تطبيقات جافا المصغَّرة (applets) وجافا ويب ستارت (Java Web Start )، التي تتمتع بإمكانية الوصول إلى JMF الكامل في بيئة تشغيل جافا (JRE) الأساسية لمتصفح الويب أو عارض التطبيقات المصغَّرة. [ 2 ] [ 3 ]

كان برنامج JMF 2.0 يأتي في الأصل مزودًا ببرنامج فك تشفير وتشفير ملفات MP3. وقد أُزيل هذا البرنامج في عام 2002، وتم نشر إضافة جديدة لتشغيل ملفات MP3 فقط في عام 2004.

تتوفر ملفات JMF الثنائية بموجب ترخيص مخصص، ويتوفر المصدر بموجب ترخيص SCSL .

يأتي الإصدار الحالي مزودًا بأربعة ملفات JAR ، ونصوص برمجية لتشغيل أربعة تطبيقات تعتمد على JMF:

  • JMStudio - واجهة مستخدم رسومية بسيطة للمشغل
  • JMFRegistry - واجهة مستخدم رسومية لإدارة "سجل" JMF، الذي يدير التفضيلات والمكونات الإضافية وما إلى ذلك.
  • JMFCustomizer - يستخدم لإنشاء ملف JAR يحتوي فقط على الفئات التي يحتاجها تطبيق JMF معين، مما يسمح للمطورين بإصدار تطبيق أصغر.
  • JMFInit

يتوفر JMF بنسخة مكتوبة بلغة جافا بالكامل، بالإضافة إلى "حزم أداء" خاصة بكل منصة، والتي قد تحتوي على مشغلات برمجية أصلية خاصة بتلك المنصة، و/أو روابط مع محرك وسائط متعددة خاص بها. يوفر JMF 2.0 حزم أداء لأنظمة لينكس، وسولاريس (على معالجات SPARC)، وويندوز. [ 2 ]

في يناير 2011، أصدر تيودور هولتون من مشروع Bentokit حزمة دبيان لبرنامج JMF لتخفيف الصعوبات التي ظهرت مع مرور الوقت عند تثبيت JMF على نظامي دبيان وأوبونتو لينكس . لا تحتوي هذه الحزمة على برنامج JMF نفسه، بل تعرض للمستخدم ترخيص JMF، وتحصل عليه من موقع أوراكل الإلكتروني، ثم تقوم بتثبيته. [ 4 ] كما تم إنشاء مُثبِّت حزمة دبيان مماثل لملحق JMF MP3 في فبراير 2011. [ 5 ]

مفاهيم التصميم

يُجرّد JMF الوسائط التي يتعامل معها إلى نوعين: javax.media.protocol.DataSources (للوسائط التي تُقرأ في JMF) و javax.media.DataSinks (للبيانات التي تُصدّر). ولا يُتيح للمطور إمكانية الوصول إلى تفاصيل أي تنسيق مُحدد؛ بل تُمثّل الوسائط كمصادر (يتم الحصول عليها من عناوين URL) يُمكن قراءتها وتشغيلها ومعالجتها وتصديرها (مع العلم أن بعض برامج الترميز لا تدعم المعالجة والتحويل).

توفر الفئة javax.media.Managerطرقًا ثابتة تمثل نقطة الاتصال الأساسية مع JMF للتطبيقات.

الانتقادات والبدائل

اشتكى العديد من مطوري JMF من أن تطبيق JMF المُضمّن في بيئات تشغيل جافا (JRE) الحديثة يدعم عددًا محدودًا نسبيًا من برامج الترميز والتنسيقات الحديثة. فعلى سبيل المثال، لا يمكن لإصدار جافا بالكامل تشغيل ملفات MPEG-2 و MPEG-4 و Windows Media و RealMedia ومعظم أفلام QuickTime ومحتوى Flash الأحدث من Flash 2، كما يتطلب إضافة لتشغيل تنسيق MP3 الشائع . [ 6 ] ورغم أن حزم تحسين الأداء تُتيح استخدام مكتبة الوسائط الخاصة بالمنصة، إلا أنها متوفرة فقط لأنظمة Linux وSolaris وWindows. وبشكل خاص، غالبًا ما يتوقع مطورو JMF الجدد على نظام Windows دعم بعض التنسيقات الحديثة على جميع المنصات، بينما في الواقع، لا يتم دعم هذه التنسيقات إلا على نظام Windows.

على الرغم من أن JMF يُعتبر إطار عمل مفيدًا للغاية، إلا أن النسخة المجانية التي توفرها أوراكل تعاني من نقص التحديثات والصيانة. لا يحظى JMF باهتمام كبير من أوراكل في مجال الصيانة؛ فلم يتم تحسين واجهة برمجة التطبيقات (API) منذ عام 1999، وكان آخر خبر نُشر على الصفحة الرئيسية لـ JMF في سبتمبر 2008. ورغم أن JMF مصمم ليكون قابلاً للتوسيع، إلا أن هناك عددًا قليلاً من الإضافات الخارجية التي تدعم ذلك. علاوة على ذلك، فإن وظائف تحرير المحتوى في JMF شبه معدومة. يمكنك تسجيل وتشغيل ملفات الصوت والفيديو بشكل بسيط، لكن النسخة التي توفرها أوراكل لا تقدم سوى القليل من الإمكانيات الأخرى. [ 7 ]

تُترك المنصات التي لا تدعمها أوراكل لموردي بيئة تشغيل جافا (JRE) التابعين لها. [ 8 ] وبينما لا تزال صن توفر منتدىً لمناقشة تطبيقها، فقد بُذلت عدة جهود لتطبيق بدائل مفتوحة المصدر. [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ]

البدائل

بحسب احتياجات المطور، قد تكون هناك مكتبات أخرى أكثر ملاءمة من JMF. وتشمل هذه المكتبات ما يلي:

  • حرية الوسائط في جافا (FMJ): واجهة برمجة تطبيقات متوافقة مع بديل مفتوح المصدر لـ JMF
  • QuickTime لجافا
  • مجموعة أدوات IBM لـ MPEG-4
  • Jffmpeg
  • vlcj
  • gstreamer-java
  • كورتادو ، مشغل كامل لملفات Ogg Vorbis و Theora في تطبيق جافا صغير
  • DirectShow <> غلاف جافا
  • مكتبة JLayer MP3
  • Video4Linux4Java
  • محلل ملفات MP4 جافا

مثال على الكود

يوضح المثال التالي مربع حوار اختيار ملف AWT ، ويحاول تحميل وتشغيل ملف الوسائط الذي اختاره المستخدم.

package org.wikipedia.examples ;استيراد java.awt.Component ؛ استيراد java.awt.FileDialog ؛ استيراد java.awt.Frame ؛ استيراد java.io.File ؛ استيراد java.io.IOException ؛ استيراد java.net.MalformedURLException ؛استيراد javax.media.Manager ؛ استيراد javax.media.Player ؛ استيراد javax.media.MediaException ؛public class TrivialJMFPlayer extends Frame { public TrivialJMFPlayer ( ) throws IOException , MalformedURLException , MediaException { FileDialog fd = new FileDialog ( this , "TrivialJMFPlayer" , FileDialog.LOAD ) ; fd.setVisible ( true ) ; File f = new File ( fd.getDirectory ( ), fd.getFile ( ) ) ; Player p = Manager.createRealizedPlayer ( f.toURI ( ). toURL ( ) ) ; Component c = p.getVisualComponent ( ) ; add ( c ) ; p.start ( ) ; }public static void main ( String [] args ) { try { Frame f = new TrivialJMFPlayer (); f . pack (); f . setVisible ( true ); } catch ( Exception e ) { e . printStackTrace (); } } }

يركز جزء كبير من هذا المثال على بناء واجهة المستخدم الرسومية لـ AWT. لا يتدخل سوى سطران في JMF. Manager.createRealizedPlayer()يقوم الأول بإنشاء كائن javax.media.protocol.DataSourceمن تمثيل URL للملف، ثم يُنشئ كائنًا آخر Player، ويُفعّله ، مما يعني تخصيص جميع الموارد اللازمة للتشغيل وتهيئتها. getVisualComponent()يطلب الكائن من JMF javax.media.Playerكائنًا java.awt.Componentمناسبًا للاستخدام في واجهة المستخدم الرسومية. في حال الرغبة في إضافة عنصر تحكم، يتم الحصول عليه من خلال getControlPanelComponent()JMF وإضافته إلى واجهة المستخدم الرسومية بشكل منفصل. تجدر الإشارة إلى أن المطور لا يهتم بتنسيق الوسائط - يعمل هذا الكود بكفاءة مع أي تنسيق وسائط يمكن لـ JMF استيراده وقراءته.

مراجع

  1. صن مايكروسيستمز (10 مارس 2001). "واجهة برمجة تطبيقات JMF 2.0" . docs.oracle.com . صن مايكروسيستمز.
  2. 1 2 أسئلة وأجوبة حول JMF
  3. واجهة برمجة تطبيقات إطار عمل الوسائط في جافا
  4. "مثبت Ubuntu لـ JMF" . لوحة الإطلاق . 5 يناير 2011 . تم الاسترجاع 4 مارس 2011 .
  5. "مثبت إضافات JMF لنظام Debian" . 23 فبراير 2011. تم الاطلاع عليه في 4 مارس 2011 .
  6. JMF 2.1.1 - التنسيقات المدعومة
  7. JMF: خطأ يستدعي إعادة صنعه، بقلم كريس أدامسون، 13 ديسمبر 2005
  8. تعليمات تثبيت JMF على نظام التشغيل Mac OS X
  9. JMF-Interest، قائمة المناقشة الرسمية. مؤرشفة بتاريخ 27 أبريل 2006 في Wayback Machine
  10. Jffmpeg: إضافة مفتوحة المصدر لـ JMF لدعم برامج الترميز الإضافية
  11. Fobs4JMF: إضافة أخرى مفتوحة المصدر لـ JMF لدعم برامج الترميز الإضافية
  12. FMJ: بديل مفتوح المصدر لـ/بديل لـ/تنفيذ JMF
  13. Xuggler : إضافة جافا مفتوحة المصدر تدعم برامج ترميز إضافية ويتم تحديثها تلقائيًا مع FFMPEG