إدارة الصوت في العروض التقديمية باستخدام PHP
إنشاء إطارات صوتية
يتيح لك Aspose.Slides for PHP عبر Java إضافة ملفات صوتية إلى الشرائح. يتم تضمين ملفات الصوت في الشرائح كإطارات صوتية.
- إنشاء مثيل من الفئة Presentation.
- احصل على مرجع الشريحة من خلال فهرستها.
- حمّل تدفق ملف الصوت الذي تريد تضمينه في الشريحة.
- أضف إطار الصوت المضمّن (الذي يحتوي على ملف الصوت) إلى الشريحة.
- عيّن PlayMode و
Volumeالمعروضين من قبل كائن AudioFrame . - احفظ العرض المعدّل.
يعرض هذا الكود PHP كيفية إضافة إطار صوت مضمّن إلى شريحة:
// ينشئ كائن من فئة Presentation يمثل ملف عرض تقديمي
$pres = new Presentation();
try {
# يحصل على الشريحة الأولى
$sld = $pres->getSlides()->get_Item(0);
# يحمل ملف الصوت wav إلى تدفق
$fstr = new Java("java.io.FileInputStream", new Java("java.io.File", "audio.wav"));
# يضيف إطار الصوت
$audioFrame = $sld->getShapes()->addAudioFrameEmbedded(50, 150, 100, 100, $fstr);
$fstr->close();
# يحدد وضع التشغيل ومستوى الصوت
$audioFrame->setPlayMode(AudioPlayModePreset->Auto);
$audioFrame->setVolume(AudioVolumeMode->Loud);
# يكتب ملف PowerPoint إلى القرص
$pres->save("AudioFrameEmbed_out.pptx", SaveFormat::Pptx);
} catch(JavaException e) {
} finally {
if (!java_is_null($pres)) $pres.dispose();
}
تغيير الصورة المصغرة لإطار الصوت
عند إضافة ملف صوتي إلى عرض تقديمي، يظهر الصوت كإطار مع صورة افتراضية قياسية (انظر الصورة في القسم أدناه). يمكنك تغيير صورة معاينة إطار الصوت (تعيين الصورة المفضلة لديك).
يعرض هذا الكود PHP كيفية تغيير صورة مصغرة أو صورة معاينة لإطار الصوت:
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
# يضيف إطار صوت إلى الشريحة بموقع وحجم محددين.
$audioStream = new Java("java.io.FileInputStream", "sample2.mp3");
$audioFrame = $slide->getShapes()->addAudioFrameEmbedded(150, 100, 50, 50, $audioStream);
$audioStream->close();
# يضيف صورة إلى موارد العرض التقديمي.
$picture;
$image = Images->fromFile("eagle.jpeg");
try {
$picture = $presentation->getImages()->addImage($image);
} finally {
if (!java_is_null($image)) {
$image->dispose();
}
}
# يحدد الصورة لإطار الصوت.
$audioFrame->getPictureFormat()->getPicture()->setImage($picture);// <-----
# يحفظ العرض التقديمي المعدل إلى القرص
$presentation->save("example_out.pptx", SaveFormat::Pptx);
} catch (JavaException $e) {
} finally {
if (!java_is_null($presentation)) {
$presentation->dispose();
}
}
تغيير خيارات تشغيل الصوت
يتيح لك Aspose.Slides for PHP عبر Java تغيير الخيارات التي تتحكم في تشغيل الصوت أو خصائصه. على سبيل المثال، يمكنك تعديل مستوى صوت الصوت، تعيين تشغيل الصوت بشكل متكرر، أو حتى إخفاء أيقونة الصوت.
لوحة خيارات الصوت في Microsoft PowerPoint:

PowerPoint خيارات الصوت التي تتطابق مع خصائص Aspose.Slides AudioFrame :
- Start قائمة منسدلة تتطابق مع طريقة AudioFrame::setPlayMode .
- Volume تتطابق مع طريقة AudioFrame::setVolume .
- Play Across Slides تتطابق مع طريقة AudioFrame::setPlayAcrossSlides .
- Loop until Stopped تتطابق مع طريقة AudioFrame::setPlayLoopMode .
- Hide During Show تتطابق مع طريقة AudioFrame::setHideAtShowing .
- Rewind after Playing تتطابق مع طريقة AudioFrame::setRewindAudio .
PowerPoint تحرير التي تتطابق مع خصائص Aspose.Slides AudioFrame :
- Fade In تتطابق مع طريقة AudioFrame::setFadeInDuration .
- Fade Out تتطابق مع طريقة AudioFrame::setFadeOutDuration .
- Trim Audio Start Time تتطابق مع طريقة AudioFrame::setTrimFromStart .
- Trim Audio End Time قيمة تساوي مدة الصوت مطروحًا منها قيمة طريقة AudioFrame::setTrimFromEnd .
تحكم التحكم في مستوى الصوت في PowerPoint على لوحة التحكم الصوتية يتطابق مع طريقة AudioFrame::setVolumeValue . يتيح لك تعديل مستوى الصوت كنسبة مئوية.
هذه هي الطريقة التي يمكنك من خلالها تغيير خيارات تشغيل الصوت:
- إنشاء أو الحصول على إطار الصوت.
- عيّن قيمًا جديدة للخصائص التي تريد تعديلها في إطار الصوت.
- احفظ ملف PowerPoint المعدل.
هذا الكود PHP يوضح عملية تعديل خيارات الصوت:
$pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
# يحصل على شكل AudioFrame
$audioFrame = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
# يحدد وضع التشغيل لتشغيل عند النقر
$audioFrame->setPlayMode(AudioPlayModePreset->OnClick);
# يحدد مستوى الصوت إلى منخفض
$audioFrame->setVolume(AudioVolumeMode->Low);
# يحدد تشغيل الصوت عبر الشرائح
$audioFrame->setPlayAcrossSlides(true);
# يعطل التكرار للصوت
$audioFrame->setPlayLoopMode(false);
# يخفِ إطار الصوت أثناء عرض الشرائح
$audioFrame->setHideAtShowing(true);
# يُعيد تشغيل الصوت من البداية بعد الانتهاء
$audioFrame->setRewindAudio(true);
# يحفظ ملف PowerPoint إلى القرص
$pres->save("AudioFrameEmbed_changed.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
هذا مثال PHP يوضح كيفية إضافة إطار صوت جديد مع صوت مضمّن، قصه، وتعيين مدة التلاشي:
$pres = new Presentation();
try {
$slide = $pres->getSlides()->get_Item(0);
$audioData = file_get_contents("sampleaudio.mp3");
$audio = $pres->getAudios()->addAudio($audioData);
$audioFrame = $slide->getShapes()->addAudioFrameEmbedded(50, 50, 100, 100, $audio);
// يحدد إزاحة بداية القص إلى 1.5 ثانية
$audioFrame->setTrimFromStart(1500);
// يحدد إزاحة نهاية القص إلى ثانيتين
$audioFrame->setTrimFromEnd(2000);
// يحدد مدة التلاشي التدريجي في البداية إلى 200 مللي ثانية
$audioFrame->setFadeInDuration(200);
// يحدد مدة التلاشي التدريجي في النهاية إلى 500 مللي ثانية
$audioFrame->setFadeOutDuration(500);
$pres->save("AudioFrameTrimFade_out.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
العينة التالية من الشيفرة توضح كيفية استرجاع إطار صوت مضمّن وتعيين مستوى صوته إلى 85٪:
$pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
$slide = $pres->getSlides()->get_Item(0);
// يحصل على شكل إطار صوتي
$audioFrame = $slide->getShapes()->get_Item(0);
// يحدد مستوى صوت الإطار إلى 85%
$audioFrame->setVolumeValue(85);
$pres->save("AudioFrameValue_out.pptx", SaveFormat::Pptx);
}
finally {
$pres->dispose();
}
إدارة تسميات الصوت
يتيح لك Aspose.Slides إضافة تسميات توضيحية مغلقة إلى إطار الصوت عبر الطريقة getCaptionTracks . تُعيد هذه الطريقة كائن CaptionsCollection، الذي يتيح لك إضافة مسارات تسميات WebVTT، والتجول عبر المسارات الموجودة، وإزالتها عند الحاجة.
إضافة تسميات صوتية
استخدم الطريقة getCaptionTracks لإرفاق مسار أو أكثر من مسارات التسميات إلى إطار الصوت. في المثال التالي، يُضاف ملف صوت إلى شريحة، ثم يُحمَّل مسار تسمية جديد من ملف .vtt .
$presentation = new Presentation();
try {
$audioData = file_get_contents("audio.mp3");
$audio = $presentation->getAudios()->addAudio($audioData);
$slide = $presentation->getSlides()->get_Item(0);
$audioFrame = $slide->getShapes()->addAudioFrameEmbedded(10, 10, 50, 50, $audio);
// أضف مسار تسمية توضيحية جديد من ملف WebVTT.
$audioFrame->getCaptionTracks()->add("New track", "track.vtt");
$presentation->save("audio_with_captions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
استخراج تسميات الصوت
يمكنك التجول عبر مسارات التسميات المرتبطة بإطار الصوت وحفظها كملفات .vtt . كل مسار تسمية يكشف عن بياناته الثنائية والمعرف الفريد الخاص به، ويمكن استخدامهما عند تصدير التسميات.
$presentation = new Presentation("audio_with_captions.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$shapeCount = java_values($slide->getShapes()->size());
for ($shapeIndex = 0; $shapeIndex < $shapeCount; $shapeIndex++) {
$shape = $slide->getShapes()->get_Item($shapeIndex);
if (java_instanceof($shape, new JavaClass("com.aspose.slides.AudioFrame"))) {
$audioFrame = $shape;
$trackCount = java_values($audioFrame->getCaptionTracks()->getCount());
for ($trackIndex = 0; $trackIndex < $trackCount; $trackIndex++) {
$captionTrack = $audioFrame->getCaptionTracks()->get_Item($trackIndex);
// احفظ كل مسار تسمية توضيحية كملف .vtt.
$filePath = $captionTrack->getCaptionId() . ".vtt";
file_put_contents($filePath, $captionTrack->getBinaryData());
}
}
}
} finally {
$presentation->dispose();
}
إزالة تسميات الصوت
لإزالة التسميات من إطار الصوت، استخدم الطرق المتوفرة في CaptionsCollection مثل clear ، remove أو removeAt . المثال التالي يزيل جميع مسارات التسميات من إطار الصوت.
$presentation = new Presentation($folderPath . "audio_with_captions.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$audioFrame = $slide->getShapes()->get_Item(0); // النوع: AudioFrame
// إزالة جميع مسارات التسمية التوضيحية من إطار الصوت.
$audioFrame->getCaptionTracks()->clear();
$presentation->save($folderPath . "audio_without_captions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
استخراج الصوت
يتيح لك Aspose.Slides for PHP عبر Java استخراج الصوت المستخدم في انتقالات عرض الشرائح. على سبيل المثال، يمكنك استخراج الصوت المستخدم في شريحة معينة.
- إنشاء مثيل من الفئة Presentation وتحميل العرض التقديمي الذي يحتوي على الصوت.
- احصل على مرجع الشريحة ذات الصلة من خلال فهرستها.
- الوصول إلى slideshow transitions الخاصة بالشريحة.
- استخراج الصوت على شكل بيانات بايت.
هذا الكود يوضح كيفية استخراج الصوت المستخدم في شريحة:
# ينشئ كائنًا من فئة Presentation يمثل ملف عرض تقديمي
$pres = new Presentation("AudioSlide.pptx");
$Array = new java_class("java.lang.reflect.Array");
try {
# الوصول إلى الشريحة المطلوبة
$slide = $pres->getSlides()->get_Item(0);
# يحصل على تأثيرات انتقال عرض الشرائح للشريحة
$transition = $slide->getSlideShowTransition();
# يستخرج الصوت كمصفوفة بايت
$audio = $transition->getSound()->getBinaryData();
echo("Length: " . $Array->getLength($audio));
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
الأسئلة الشائعة
هل يمكنني إعادة استخدام ملف الصوت نفسه عبر عدة شرائح دون زيادة حجم الملف؟
نعم. أضف الصوت مرة واحدة إلى audio collection المشترك للعرض، ثم أنشئ إطارات صوت إضافية تشير إلى ذلك العنصر الموجود. وهذا يمنع تكرار بيانات الوسائط ويُحافظ على حجم العرض تحت السيطرة.
هل يمكنني استبدال الصوت في إطار صوت موجود دون إعادة إنشاء الشكل؟
نعم. بالنسبة للصوت المرتبط، قم بتحديث link path للإشارة إلى الملف الجديد. بالنسبة للصوت المضمّن، استبدل كائن embedded audio بآخر من audio collection للعرض. ستظل تنسيق الإطار ومعظم إعدادات التشغيل كما هي.
هل يؤدي القص إلى تغيير بيانات الصوت الأصلية المخزنة في العرض؟
لا. يقتصر قص الصوت على تعديل حدود التشغيل فقط. تظل بايتات الصوت الأصلية سليمّة ويمكن الوصول إليها عبر الصوت المضمّن أو مجموعة أصوات العرض.