تشغيل ملفات wav مع FreePascal/Lazarus عن طريق openal
#11
شكرا a.atalla و B.M.AbdelAziz

قمت بتنزيل المكتبة ALut لكل من لينكس وويندوز
أما في لينكس فعند بدء تشغيل البرنامج ظهرت رسالة الخطأ مرة أخرى ولم يتم تشغيل الصوت وهذة رسالة الخطأ:
TApplication.HandleException Access violation
أما في ويندوز مع الاصدار الحديث من لازاراس كما ذكرت فظهرت هذة الرسالة عند بدء التشغيل ولم يتم تشغيل الصوت
Could not find OpenAL Device
Access Violation
علما بأنه عند الضغط على مفتاح play في التطبيق تظهر هذة الرسالة على كل من ويندوز ولينكس :
Access violation
أتسائل ان كانت هناك طريقة أخرى مزودة بمثال عملي وواضح ﻷي مكتبة أخرى مثل:
portaudio
fpsound
ffmpeg
جربت ِ مكون ACS ولم ينجح معي لذا أردت التعامل مع مكتبة للصوت لا يلزم تثبيت مكون لها داخل لازاراس
الرد
#12
جربت المثال اللذي أرفقته علي أوبنتو 12.04 وتم تشغيل الصوت دون أخطاء
سأحاول أن أجد لك مثال علي FPsound
حمل المكون من هنا
كود :
lazarus-ccr.svn.sourceforge.net/viewvc/lazarus-ccr/components/fpsound/?view=tar
لتثبيت المكون
Package >>> Open Package File (.lpk)
بعد تثبيت المكون واعادة تشغيل Lazarus جرب المثال المرفق


الملفات المرفقة
.rar   fpsound-example.rar (الحجم : 158.38 ك ب / التحميلات : 11)
الرد
#13

إقتباس :أتسائل ان كانت هناك طريقة أخرى مزودة بمثال عملي وواضح ﻷي مكتبة أخرى مثل
أولا دعنا نحل مشكل OpenAL ثم بعدها ننتقل لغيره

إقتباس :أما في ويندوز مع الاصدار الحديث من لازاراس كما ذكرت فظهرت هذة الرسالة عند بدء التشغيل ولم يتم تشغيل الصوت
Could not find OpenAL Device
Access Violation
OpenAL غير مثبت بهازك
احذف كل ما عندك من ملقات dll سابقة متعلقة بOpenAL وثبت هذا
كود :
http://connect.creativelabs.com/openal/Downloads/oalinst.zip
اعد تنفيذ نفس البرنامج السابق الذي اظهر Access Violation واخبرنا بالنتيجة
الرد
#14
السلام عليكم ورحمة الله

قمت بتجربة ارشاداتكم على نسخة ويندوز والتي تحمل نسخة لازاراس 1.1

بالنسبة للمثال الخاص ب OpenAL فقد نجحت بفضل الله في تنفيذ التطبيق وتشغيل الصوت بلا مشاكل بعدما قمت بتنزيل وتثبيت البرنامج الذي أشار اليه الأخ B.M.AbdelAziz
والسؤال هو كيف يمكن تضمين مكتبة OpenAL مع البرنامج الى جهاز المستخدم دون أن يضطر لتركيبها بنفسه وضمان عمل البرنامج على جهاز المستخدم
شكرا جزيلا أخي B.M.AbdelAziz

أما بخصوص مكون FPSound الذي تفضل اﻷخ a.atalla بتقديمه فقد قمت بتركيبه على lazarus 1.1 في بيئة ويندوز xp و تم التركيب بنجاح ولكني لا أرى رمزا خاصا بالمكون وعندما قمت بتصنيف المثال المرفق
FPSound_Example لم يكتمل التصنيف ليظهر الخطأ التالي في شاشة المصنف
ERROR: Identifier not found "SoundPlayer

واضح من رسالة الخطأ أن المثال ينقصه تعريف الصنف الذي يمثله الكائن SoundPlayer
فياليت اﻷخ a.atalla يراجع لنا هذة الجزئية مع جزيل الشكر

المثال الخاص ب OpenAL نجحت في تشغيله كذلك على نسخة اللينكس بعد تركيب هذة الحزمة:
libopenAL-dev
الرد
#15
المكون FPSound ليس له رمز في الباليت ولكن تقوم باضافة الوحدات إلي uses
fpsound,fpsound_wav,fpsound_openal

جرب
Project >>>> Project Inspector >>>>>> Add >>> New Requirement

وفي خانة Package Name اختر fpsound_pkg ثم اعمل Create New Requirement وجرب المثال مرة أخري
الرد
#16
كان واضح من البداية ان لديك مشكلة تثبيت OpenAL لكن اختلطت الأمور عندما قلت Windows و Linux Mint فلم يكن واضح ايهما لم يعمل.
إقتباس :كيف يمكن تضمين مكتبة OpenAL مع البرنامج الى جهاز المستخدم دون أن يضطر لتركيبها بنفسه وضمان عمل البرنامج على جهاز المستخدم
يكفي نسخ المكتبتين OpenAL32.dll و wrap_oal.dll مع ملفك التنفيذي exe
الرد
#17
المثال الخاص ب OpenAL نجحت في تشغيله كذلك على نسخة اللينكس وكانت المشكلة في عدم تشغيل المثال على لينكس أن مصنف بسكال قام بربط البرنامج بهذة المكتبة libopenal.so ولكن المكتبة موجودة على نسختي باسم
1.libopenal.so وبالتالي لم يستطع البرنامج العثور على المكتبة لاختلاف الاسم وعندما قمت بعمل نسخة من المكتبة بالاسم libopenal.so تم تشغيل التطبيق

جزيل الشكر جزاكما الله خيرا a.atalla و B.M.abdelAziz

بالنسبة للمثال الخاص ب FPSound سأعيد المحاولة أخي a.atalla و أوافيك بالرد
الرد
#18
السلام عليكم
أخي a.atalla جربت الطريقة التي أشرت اليها fpsound_pkg موجودة بالفعل في قائمة اعتماديات المشروع
والوحدات الثلاثة موجودة في uses

fpsound,fpsound_wav,fpsound_openal

ولازالت رسالة المصنف كما هي : لم يتم تعريف الكائن SoundPlayer في أماكن وضع المتغيرات

شكرا أخي a.atalla
الرد
#19
إقتباس : لم يتم تعريف الكائن soundplayer في أماكن وضع المتغيرات
لم تقم بتثبيت المكون جيدا. أعد التثبيت
الرد
#20
أخي B.M.AbdelAziz

هل قمت بتنفيذ هذا المثال لديك ؟
المكون موجود في قائمة المكونات المثبّتة

في الوحدة الرئيسية في الحدث formcreate

procedure TForm1.FormCreate(Sender: TObject);
begin
soundplayer.Create;
end;

هذا الكائن الذي يتم انشائه لم يتم تعريفه:


type

{ TForm1 }

TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public

{ public declarations }
end;

var
Form1: TForm1;

وهذة رسالة الخطأ التي أرجعها المصنف عند التصنيف:

ERROR:Identifier not found "SoundPlayer"

وهذة الوحدة الرئيسية للبرنامج في المرفقات تفضل مشكورا بمراجعتها


الملفات المرفقة
.7z   unit1.pas.7z (الحجم : 502 بايت / التحميلات : 1)
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم