الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في إدراج الصور و الملفات الصوتية

بدأه khaled_prg في 24 أكتوبر 2012 · 32 رد · 1,915 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#26
khaled_prg كتب:

قمت بتجربة البرنامج و عمل معي بشكل أكثر من ممتاز :happy:

أشكرك من أعماق قلبي, أستاذي محمود :wub:

بارك الله فيك :)

أشكر أيضا الأستاذ mental الذي ساعدني كثيراً في فهم كيفية عمل فئة الصوت ..

كل الشكر لكم أحبتي و كل عام و أنتم بألف خير ..

بقي لدي سؤال واحد, لو سمحتم :

ملفات الــ wav حجمها كبير جداً مقارنة مع بقية الصيغ (mp3 على سبيل المثال).

ملف الجار أصبح حجمه كبير جداً (قرابة 30 Mb) !!

هل بالإمكان تصغير حجم الملف الصوتي ؟

مع العلم أنني قمت بتحويل صيغة الملف إلى mp3 لكنه لم يعمل !

بالنسبه لملف الـصوت ان يكون mp3 ف تحتاج الى مكتبه للتعامل مع ملفات الـ mp3

ولكن اعتقد ان يكون حجم البرنامج 30 ميجا بالنسبه للبرامج الاخرى فهو بسيط :)

Software Developer
Mahmoudkelany.com


 

#27

تم ترشيح المشاركة رقم 20 و المشاركة رقم 24.

+1 لكل من المشاركتين.

اقتباس
بالنسبه لملف الـصوت ان يكون mp3 ف تحتاج الى مكتبه للتعامل مع ملفات الـ mp3

نعم, كنت أبحث عن هذا الموضوع قبل قليل ووجدت بعض الحلول أبرزها العمل على JMF و تثبيت الــ Plugin الخاص بــ mp3 أو العمل على مكتبة Javazoom.

أيهما تنصحني به ؟ :)

اقتباس
ولكن اعتقد ان يكون حجم البرنامج 30 ميجا بالنسبه للبرامج الاخرى فهو بسيط

البرنامج (تدريبي فقط) لا يحتوي إلا على "صورتين" و "ملف صوتي" و لولا الملف الصوتي لكان حجم البرنامج = 46 Kb :)

و بالتالي الملف الصوتي هو صاحب البلاوي و المشاكل :D

#28

قمت بتحميل الفئة JLayer التابعة لمكتبة JZOOM و استعملت الفئة التالية لتشغيل الصوت :

import javazoom.jl.player.advanced.AdvancedPlayer;
import javazoom.jl.player.advanced.PlaybackEvent;
import javazoom.jl.player.advanced.PlaybackListener;

public class SoundJLayer extends PlaybackListener implements Runnable {

    private String filePath;
    private AdvancedPlayer player;
    private Thread playerThread;

    public SoundJLayer(String filePath) {
        this.filePath = filePath;
    }

    public void play() {
        try {
            String urlAsString =
                    "file:///"
                    + new java.io.File(".").getCanonicalPath()
                    + "/"
                    + this.filePath;

            this.player = new AdvancedPlayer(
                    new java.net.URL(urlAsString).openStream(),
                    javazoom.jl.player.FactoryRegistry.systemRegistry().createAudioDevice());

            this.player.setPlayBackListener(this);

            this.playerThread = new Thread(this, "AudioPlayerThread");

            this.playerThread.start();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    // PlaybackListener members
    public void playbackStarted(PlaybackEvent playbackEvent) {
        //System.out.println("playbackStarted()");
    }

    public void playbackFinished(PlaybackEvent playbackEvent) {
        //System.out.println("playbackEnded()");
    }

    // Runnable members
    public void run() {
        try {
            this.player.play();
        } catch (javazoom.jl.decoder.JavaLayerException ex) {
            ex.printStackTrace();
        }

    }
}

و كتبت في الــ main :

String DEFAULT_SOUND = "test.mp3";
SoundJLayer soundToPlay = new SoundJLayer(DEFAULT_SOUND);
soundToPlay.play();

و الصوت اشتغل و الحمد لله :)

لكن في نفس الوقت وقعتُ في المشكلة السابقة و هي أن دالة بناء فئة الصوت تستقبل String و ليس URL !

كيف أغير String إلى URL دون التسبب في حدوث مشاكل ؟ مع العلم أنني حاولت من قبل .. لكن لم أصل إلى شيء يُذكر.

شكراً مقدما.

#29

ماهي المشكله بالضبط؟ البرنامج لا يعمل؟ ام انك لا تعجبك مسألة انك الفئة باستخدام String ؟

بما انك تستخدم مكتبه خاصه JZoom الاهم هو التقيد بقواعد هذه المكتبه وتطويع معرفتك بالجافا حتى تمرر لفئات هذه المكتبه الانواع والقيم المناسبة.

تحياتي

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#30

البرنامج يعمل من النت بينز و لكن عند تشغيل ملف الجار مباشرة لا يتم تشغيل الصوت !

لذا أريد أن أرسل الــ URL الحقيقي لملف الصوت و ليس مجرد الــ filePath. لأن هذا الأخير قد يختلف من جهاز إلى آخر.

تم تعديل هذه المشاركة بواسطة khaled_prg في 27 أكتوبر 2012 في 22:08

#31
khaled_prg كتب:

قمت بتحميل الفئة JLayer التابعة لمكتبة JZOOM و استعملت الفئة التالية لتشغيل الصوت :

و الصوت اشتغل و الحمد لله :)

لكن في نفس الوقت وقعتُ في المشكلة السابقة و هي أن دالة بناء فئة الصوت تستقبل String و ليس URL !

كيف أغير String إلى URL دون التسبب في حدوث مشاكل ؟ مع العلم أنني حاولت من قبل .. لكن لم أصل إلى شيء يُذكر.

شكراً مقدما.

انا عدلت الكود بتاعك وعملته ف شكل مشروع

اتفضل

TestJavaZoom Mp3 Lib.zip

بالتوفيق

1

Software Developer
Mahmoudkelany.com


 

#32

هل ستقوم بجعل ملف الصوت داخل البرنامج؟ الحالة الوحيده التي تجعل فيها ملفات الميديا داخل البرنامج هي لاصوات الضغطات و الموسيقى التي تريد ان تعمل مع البرنامج ، يعني الاشياء الخاصه بالبرنامج، اما اذا اردت ان تشغل البرنامج كــ player في هذه الحاله يجب ان تعطي المستخدم JFileChooser dialog ليختار اسم الملف ومنه تقوم ببناء مسار الملف كما انك قد تريد تفعيل الحدثين Drag and Drop ليتمكن المستخدم من سحب الملف مباشره الى داخل المشغل، في الحاله الاولى التي قد تريد فيها الاشارة الى الملف من داخل ملف الجار ، فعليك بالاشاره اليه بطريقه Relative من راس المسار Root.

اذا كنت تستخدم جافا 7 انصحك باستخدام NIO2 حيث ان فيها فئات تقوم بالتحويل من والى ملفات ، URL ، Strings و ليس تعلمها صعب ابدا سوف تقوم باستخدام فئتين اساسيتين هما Path, Paths ، هناك الكثير من الدروس التعليميه لهذه المكتبه منها موقع اوراكل ، والكتاب المفضل عندي The Well-grounded Java developer متوفر للتحميل من عدة مواقع ، و اذا لم تستطع ان تجده يمكنك مراسلتي على الخاص لاعطيك الرابط.

بالتوفيق

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#33
اقتباس
انا عدلت الكود بتاعك وعملته ف شكل مشروع

اتفضل

+1

تم حل المشكلة و لله الحمد.

تم ترشيح الإجابة.

شُكراً لك :)

اقتباس
هل ستقوم بجعل ملف الصوت داخل البرنامج؟ الحالة الوحيده التي تجعل فيها ملفات الميديا داخل البرنامج هي لاصوات الضغطات و الموسيقى التي تريد ان تعمل مع البرنامج ، يعني الاشياء الخاصه بالبرنامج، اما اذا اردت ان تشغل البرنامج كــ player في هذه الحاله يجب ان تعطي المستخدم JFileChooser dialog ليختار اسم الملف ومنه تقوم ببناء مسار الملف كما انك قد تريد تفعيل الحدثين Drag and Drop ليتمكن المستخدم من سحب الملف مباشره الى داخل المشغل، في الحاله الاولى التي قد تريد فيها الاشارة الى الملف من داخل ملف الجار ، فعليك بالاشاره اليه بطريقه Relative من راس المسار Root.

اذا كنت تستخدم جافا 7 انصحك باستخدام NIO2 حيث ان فيها فئات تقوم بالتحويل من والى ملفات ، URL ، Strings و ليس تعلمها صعب ابدا سوف تقوم باستخدام فئتين اساسيتين هما Path, Paths ، هناك الكثير من الدروس التعليميه لهذه المكتبه منها موقع اوراكل ، والكتاب المفضل عندي The Well-grounded Java developer متوفر للتحميل من عدة مواقع ، و اذا لم تستطع ان تجده يمكنك مراسلتي على الخاص لاعطيك الرابط.

لا, ما أريده أبسط بكثير مما تتصوره حضرتك :blush:

فقط : تشغيل ملف صوتي من نوع mp3 و يكون ملف الجار يعمل على أي جهاز :happy:

جزاكم الله خيراً اخوتي على المساعدة.

تم تعديل هذه المشاركة بواسطة khaled_prg في 28 أكتوبر 2012 في 00:36

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…