إدارة إطارات الفيديو في العروض التقديمية باستخدام PHP
يمكن للفيديو الموضوع بشكل مناسب في العرض التقديمي أن يجعل رسالتك أكثر إقناعًا ويزيد من مستوى التفاعل مع جمهورك.
PowerPoint يتيح لك إضافة مقاطع فيديو إلى شريحة في عرض تقديمي بطريقتين:
- إضافة فيديو محلي أو تضمينه (مخزن على جهازك)
- إضافة فيديو عبر الإنترنت (من مصدر ويب مثل يوتيوب).
لتمكينك من إضافة مقاطع فيديو (كائنات فيديو) إلى عرض تقديمي، توفر Aspose.Slides فئة Video وفئة VideoFrame وغيرها من الأنواع ذات الصلة.
إنشاء إطارات فيديو مدمجة
إذا كان ملف الفيديو الذي ترغب في إضافته إلى شريحتك مخزنًا محليًا، يمكنك إنشاء إطار فيديو لتضمين الفيديو في عرضك التقديمي.
- إنشاء مثال من الفئة Presentation.
- الحصول على مرجع الشريحة عبر فهرستها.
- إضافة كائن Video وتمرير مسار ملف الفيديو لتضمينه مع العرض التقديمي.
- إضافة كائن VideoFrame لإنشاء إطار للفيديو.
- حفظ العرض التقديمي المعدل.
يعرض هذا الكود PHP كيفية إضافة فيديو مخزن محليًا إلى عرض تقديمي:
# إنشاء كائن من فئة Presentation
$pres = new Presentation("pres.pptx");
try {
# يحمل الفيديو
$fileStream = new Java("java.io.FileInputStream", "Wildlife.mp4");
$video = $pres->getVideos()->addVideo($fileStream, LoadingStreamBehavior->KeepLocked);
# يحصل على الشريحة الأولى ويضيف إطار فيديو
$pres->getSlides()->get_Item(0)->getShapes()->addVideoFrame(10, 10, 150, 250, $video);
# يحفظ العرض التقديمي إلى القرص
$pres->save("pres-with-video.pptx", SaveFormat::Pptx);
} catch (JavaException $e) {
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
بدلاً من ذلك، يمكنك إضافة فيديو بتمرير مسار ملفه مباشرة إلى طريقة addVideoFrame(float x, float y, float width, float height, Video video):
$pres = new Presentation();
try {
$sld = $pres->getSlides()->get_Item(0);
$vf = $sld->getShapes()->addVideoFrame(50, 150, 300, 150, "video1.avi");
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
إنشاء إطارات فيديو باستخدام فيديو من مصادر ويب
يدعم Microsoft PowerPoint 2013 والإصدارات الأحدث مقاطع الفيديو من يوتيوب في العروض التقديمية. إذا كان الفيديو الذي تريد استخدامه متاحًا على الإنترنت (مثل يوتيوب)، يمكنك إضافته إلى العرض التقديمي من خلال رابطه على الويب.
- إنشاء مثال من الفئة Presentation.
- الحصول على مرجع الشريحة عبر فهرستها.
- إضافة كائن Video وتمرير الرابط إلى الفيديو.
- ضبط صورة مصغرة لإطار الفيديو.
- حفظ العرض التقديمي.
يعرض هذا الكود PHP كيفية إضافة فيديو من الويب إلى شريحة في عرض PowerPoint:
# إنشاء كائن Presentation يمثل ملف عرض تقديمي
$pres = new Presentation();
try {
addVideoFromYouTube($pres, "Tj75Arhq5ho");
$pres->save("out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
إدارة تسميات الفيديو المقفولة
تتيح لك Aspose.Slides إدارة التسميات المقفولة لإطارات الفيديو في عروض PowerPoint. تُخزن التسميات بتنسيق WebVTT وتُظهر عبر طريقة VideoFrame::getCaptionTracks.
إضافة تسميات إلى إطار فيديو
لإضافة تسميات إلى إطار فيديو:
- إنشاء مثال من الفئة Presentation.
- إضافة فيديو إلى العرض التقديمي.
- إضافة كائن VideoFrame إلى شريحة.
- استخدام مجموعة CaptionsCollection التي تُرجعها الطريقة getCaptionTracks لإضافة مسار تسمية WebVTT.
- حفظ العرض التقديمي المعدل.
يعرض الكود التالي كيفية إضافة تسميات إلى إطار فيديو:
$presentation = new Presentation();
try {
$videoData = file_get_contents("video.mp4");
$video = $presentation->getVideos()->addVideo($videoData);
$slide = $presentation->getSlides()->get_Item(0);
$videoFrame = $slide->getShapes()->addVideoFrame(0, 0, 100, 100, $video);
// يضيف مسار تسميات جديد من ملف WebVTT.
$videoFrame->getCaptionTracks()->add("English", "track.vtt");
$presentation->save("video_with_captions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
توفر فئة CaptionsCollection أيضًا نسخة زائدة تسمح لك بإضافة تسميات من تدفق بيانات.
استخراج التسميات من إطار فيديو
لاستخراج التسميات من إطار فيديو:
- تحميل العرض التقديمي الذي يحتوي على الفيديو.
- العثور على كائن VideoFrame المستهدف.
- التنقل خلال مجموعة getCaptionTracks.
- حفظ كل مسار تسمية إلى ملف
.vtt.
يعرض الكود التالي كيفية استخراج التسميات من إطار فيديو:
$presentation = new Presentation("video_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.VideoFrame"))) {
$videoFrame = $shape;
$trackCount = java_values($videoFrame->getCaptionTracks()->getCount());
for ($trackIndex = 0; $trackIndex < $trackCount; $trackIndex++) {
$captionTrack = $videoFrame->getCaptionTracks()->get_Item($trackIndex);
// يحفظ مسار التسميات إلى ملف WebVTT.
$filePath = $captionTrack->getCaptionId() . ".vtt";
file_put_contents($filePath, $captionTrack->getBinaryData());
}
}
}
} finally {
$presentation->dispose();
}
كل كائن Captions يكشف عن معرف التسمية، التسمية، البيانات الثنائية، ونص التسمية كسلسلة UTF-8.
إزالة التسميات من إطار فيديو
لإزالة التسميات من إطار فيديو:
- تحميل العرض التقديمي الذي يحتوي على الفيديو.
- الحصول على كائن VideoFrame المستهدف.
- إزالة مسارات التسميات من مجموعة getCaptionTracks.
- حفظ العرض التقديمي المعدل.
يعرض الكود التالي كيفية إزالة جميع التسميات من إطار فيديو:
$presentation = new Presentation("video_with_captions.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$videoFrame = $slide->getShapes()->get_Item(0); // النوع: VideoFrame
// يزيل جميع التسميات من إطار الفيديو.
$videoFrame->getCaptionTracks()->clear();
$presentation->save("video_without_captions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
إذا كنت بحاجة إلى إزالة مسار تسمية واحد فقط، استخدم طرق remove أو removeAt بدلاً من clear.
استخراج الفيديو من الشرائح
بالإضافة إلى إضافة الفيديوهات إلى الشرائح، تتيح لك Aspose.Slides استخراج الفيديوهات المدمجة في العروض التقديمية.
- إنشاء مثال من الفئة Presentation لتحميل العرض التقديمي الذي يحتوي على الفيديو.
- التنقل خلال جميع كائنات Slide.
- التنقل خلال جميع كائنات Shape للعثور على كائن VideoFrame.
- حفظ الفيديو إلى القرص.
يعرض هذا الكود PHP كيفية استخراج الفيديو من شريحة عرض تقديمي:
# ينشئ كائن Presentation يمثل ملف عرض تقديمي
$pres = new Presentation("VideoSample.pptx");
try {
foreach($pres->getSlides() as $slide) {
foreach($slide->getShapes() as $shape) {
if (java_instanceof($shape, new JavaClass("com.aspose.slides.VideoFrame"))) {
$vf = $shape;
$type = $vf->getEmbeddedVideo()->getContentType();
$ss = $type->lastIndexOf('-');
$buffer = $vf->getEmbeddedVideo()->getBinaryData();
# يحصل على امتداد الملف
$charIndex = $type->indexOf("/");
$type = $type->substring($charIndex + 1);
$fop = new Java("java.io.FileOutputStream", "testing2." . $type);
$fop->write($buffer);
$fop->flush();
$fop->close();
}
}
}
} catch (JavaException $e) {
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
الأسئلة الشائعة
ما هي معلمات تشغيل الفيديو التي يمكن تغييرها لإطار VideoFrame؟
يمكنك التحكم في وضع التشغيل (تلقائي أو عند النقر) والتكرار. هذه الخيارات متاحة عبر خصائص كائن VideoFrame.
هل يؤثر إضافة فيديو على حجم ملف PPTX؟
نعم. عندما تقوم بتضمين فيديو محلي، تُضمّن البيانات الثنائية في المستند، وبالتالي ينمو حجم العرض التقديمي بنسبة حجم الملف. عندما تضيف فيديوًا عبر الإنترنت، يتم تضمين رابط وصورة مصغرة، لذا يكون الارتفاع في الحجم أصغر.
هل يمكنني استبدال الفيديو في إطار VideoFrame موجود دون تغيير موضعه وحجمه؟
نعم. يمكنك استبدال محتوى الفيديو داخل الإطار مع الحفاظ على هندسة الشكل؛ هذا سيناريو شائع لتحديث الوسائط في تخطيط موجود.
هل يمكن تحديد نوع المحتوى (MIME) للفيديو المدمج؟
نعم. للفيديو المدمج نوع محتوى يمكنك قراءته واستخدامه، على سبيل المثال عند حفظه على القرص.