إدارة إطارات الفيديو في العروض التقديمية باستخدام Java

يمكن للفيديو المناسب في العرض التقديمي أن يجعل رسالتك أكثر إقناعًا ويزيد من مستويات التفاعل مع جمهورك.

يتيح لك PowerPoint إضافة مقاطع فيديو إلى شريحة في عرض تقديمي بطريقتين:

  • إضافة أو تضمين فيديو محلي (محفوظ على جهازك)
  • إضافة فيديو عبر الإنترنت (من مصدر ويب مثل YouTube).

لتمكينك من إضافة مقاطع فيديو (كائنات فيديو) إلى عرض تقديمي، توفر Aspose.Slides الواجهة IVideo والواجهة IVideoFrame، وأنواع أخرى ذات صلة.

إنشاء إطارات فيديو مدمجة

إذا كان ملف الفيديو الذي ترغب في إضافته إلى شريحتك مخزنًا محليًا، يمكنك إنشاء إطار فيديو لتضمين الفيديو في عرضك التقديمي.

  1. إنشاء نسخة من الفئة Presentation class.
  2. احصل على مرجع الشريحة عبر فهرستها.
  3. أضف كائنًا من نوع IVideo ومرر مسار ملف الفيديو لتضمين الفيديو مع العرض التقديمي.
  4. أضف كائنًا من نوع IVideoFrame لإنشاء إطار للفيديو.
  5. احفظ العرض التقديمي المعدل.

يعرض لك هذا الشيفرة Java كيفية إضافة فيديو مخزن محليًا إلى عرض تقديمي:

// إنشاء كائن من الفئة Presentation
Presentation pres = new Presentation("pres.pptx");
try {
    // تحميل الفيديو
    FileInputStream fileStream = new FileInputStream("Wildlife.mp4");
    
    IVideo 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 (IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

بدلاً من ذلك، يمكنك إضافة فيديو بتمرير مسار ملفه مباشرةً إلى الطريقة addVideoFrame(float x, float y, float width, float height, IVideo video):

Presentation pres = new Presentation();
try {
	ISlide sld = pres.getSlides().get_Item(0);
	IVideoFrame vf = sld.getShapes().addVideoFrame(50, 150, 300, 150, "video1.avi");
} finally {
	if (pres != null) pres.dispose();
}

إنشاء إطارات فيديو باستخدام فيديو من مصادر ويب

يدعم Microsoft PowerPoint 2013 والأحدث مقاطع فيديو YouTube في العروض التقديمية. إذا كان الفيديو الذي تريد استخدامه متاحًا على الإنترنت (مثلًا على YouTube)، يمكنك إضافته إلى عرضك التقديمي عبر الرابط الإلكتروني الخاص به.

  1. إنشاء نسخة من فئة Presentation class
  2. احصل على مرجع الشريحة عبر فهرستها.
  3. أضف كائنًا من نوع IVideo ومرر الرابط إلى الفيديو.
  4. حدد صورةً مصغرة لإطار الفيديو.
  5. احفظ العرض التقديمي.

يعرض لك هذا الشيفرة Java كيفية إضافة فيديو من الويب إلى شريحة في عرض PowerPoint التقديمي:

// إنشاء كائن Presentation يمثل ملف عرض تقديمي
Presentation pres = new Presentation();
try {
    addVideoFromYouTube(pres, "Tj75Arhq5ho");
    pres.save("out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
private static void addVideoFromYouTube(Presentation pres, String videoID)
{
    // إضافة إطار فيديو
    IVideoFrame videoFrame = pres.getSlides().get_Item(0).getShapes().addVideoFrame(
            10, 10, 427, 240, "https://www.youtube.com/embed/" + videoID);
    videoFrame.setPlayMode(VideoPlayModePreset.Auto);

    // تحميل الصورة المصغرة
    String thumbnailUri = "http://img.youtube.com/vi/" + videoID + "/hqdefault.jpg";
    URL url;

    try {
        url = new URL(thumbnailUri);
        videoFrame.getPictureFormat().getPicture().setImage(pres.getImages().addImage(url.openStream()));
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

إدارة تسميات الفيديو

تسمح لك Aspose.Slides بإدارة التسميات التوضيحية المغلقة لإطارات الفيديو في عروض PowerPoint التقديمية. يتم تخزين التسميات بتنسيق WebVTT وتُعرض عبر الطريقة IVideoFrame.getCaptionTracks .

إضافة تسميات إلى إطار فيديو

لإضافة تسميات إلى إطار فيديو:

  1. إنشاء نسخة من فئة Presentation class.
  2. أضف فيديو إلى العرض التقديمي.
  3. أضف كائنًا من نوع IVideoFrame إلى شريحة.
  4. استخدم ICaptionsCollection التي تُرجعها getCaptionTracks لإضافة مسار تسمية WebVTT.
  5. احفظ العرض التقديمي المعدل.

يوضح لك الشيفرة التالية كيفية إضافة تسميات إلى إطار فيديو:

Presentation presentation = new Presentation();
try {
    byte[] videoData = Files.readAllBytes(Paths.get("video.mp4"));
    IVideo video = presentation.getVideos().addVideo(videoData);

    ISlide slide = presentation.getSlides().get_Item(0);
    IVideoFrame videoFrame = slide.getShapes().addVideoFrame(0, 0, 100, 100, video);

    // إضافة مسار تسميات جديد من ملف WebVTT.
    presentation.save("video_with_captions.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

توفر واجهة ICaptionsCollection أيضًا نسخة مفرطة تسمح لك بإضافة تسميات من تدفق بيانات.

استخراج التسميات من إطار فيديو

لاستخراج التسميات من إطار فيديو:

  1. حمِّل العرض التقديمي الذي يحتوي على الفيديو.
  2. ابحث عن كائن IVideoFrame المستهدف.
  3. تجول عبر مسارات التسميات في ICaptionsCollection.
  4. احفظ كل مسار تسمية إلى ملف .vtt.

يوضح لك الشيفرة التالية كيفية استخراج التسميات من إطار فيديو:

Presentation presentation = new Presentation("video_with_captions.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    for (IShape shape : slide.getShapes()) {
        if (shape instanceof IVideoFrame) {
            IVideoFrame videoFrame = (IVideoFrame)shape;
            for (ICaptions captionTrack : videoFrame.getCaptionTracks()) {
                // يحفظ مسار التسميات إلى ملف WebVTT.
                String filePath = captionTrack.getCaptionId().toString() + ".vtt";
                Files.write(Paths.get(filePath), captionTrack.getBinaryData());
            }
        }
    }
} finally {
    presentation.dispose();
}

كل كائن ICaptions يعرض معرف التسمية، والملصق، والبيانات الثنائية، ونص التسمية كسلسلة UTF-8.

إزالة التسميات من إطار فيديو

لإزالة التسميات من إطار فيديو:

  1. حمِّل العرض التقديمي الذي يحتوي على الفيديو.
  2. احصل على كائن IVideoFrame المستهدف.
  3. أزل مسارات التسميات من ICaptionsCollection.
  4. احفظ العرض التقديمي المعدل.

يوضح لك الشيفرة التالية كيفية إزالة جميع التسميات من إطار فيديو:

Presentation presentation = new Presentation("video_with_captions.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IVideoFrame videoFrame = (IVideoFrame)slide.getShapes().get_Item(0);

    // إزالة جميع التسميات من إطار الفيديو.
    videoFrame.getCaptionTracks().clear();

    presentation.save("video_without_captions.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

إذا كنت بحاجة إلى إزالة مسار تسمية واحد فقط، استخدم الطريقة remove أو removeAt بدلاً من clear.

استخراج الفيديو من الشرائح

بالإضافة إلى إضافة مقاطع فيديو إلى الشرائح، تسمح لك Aspose.Slides باستخراج مقاطع الفيديو المضمنة في العروض التقديمية.

  1. إنشاء نسخة من فئة Presentation class لتحميل العرض التقديمي الذي يحتوي على الفيديو.
  2. تجول عبر جميع كائنات ISlide.
  3. تجول عبر جميع كائنات IShape للعثور على VideoFrame.
  4. احفظ الفيديو على القرص.

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

// إنشاء كائن Presentation يمثل ملف عرض تقديمي
Presentation pres = new Presentation("VideoSample.pptx");
try {
    for (ISlide slide : pres.getSlides()) 
    {
        for (IShape shape : slide.getShapes()) 
        {
            if (shape instanceof VideoFrame) 
            {
                IVideoFrame vf = (IVideoFrame) shape;
                String type = vf.getEmbeddedVideo().getContentType();
                int ss = type.lastIndexOf('-');
                byte[] buffer = vf.getEmbeddedVideo().getBinaryData();

                // الحصول على امتداد الملف
                int charIndex = type.indexOf("/");
                type = type.substring(charIndex + 1);

                FileOutputStream fop = new FileOutputStream("testing2." + type);
                fop.write(buffer);
                fop.flush();
                fop.close();
            }
        }
    }
} catch (IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

الأسئلة المتكررة

ما هي معلمات تشغيل الفيديو التي يمكن تغييرها لإطار الفيديو؟

يمكنك التحكم في وضع التشغيل (تلقائي أو عند النقر) والتكرار. تتوفر هذه الخيارات عبر خصائص كائن VideoFrame.

هل يؤثر إضافة فيديو على حجم ملف PPTX؟

نعم. عند تضمين فيديو محلي، تُضمّن البيانات الثنائية في المستند، لذا يزداد حجم العرض التقديمي بما يتناسب مع حجم الملف. عند إضافة فيديو عبر الإنترنت، يُضمّن رابط وصورة مصغرة، لذا يكون الزيادة في الحجم أصغر.

هل يمكنني استبدال الفيديو في إطار فيديو موجود دون تغيير موقعه وحجمه؟

نعم. يمكنك استبدال محتوى الفيديو داخل الإطار مع الحفاظ على أبعاد الشكل؛ هذا سيناريو شائع لتحديث الوسائط في تخطيط موجود.

هل يمكن تحديد نوع المحتوى (MIME) للفيديو المضمن؟

نعم. يحتوي الفيديو المضمن على نوع محتوى يمكنك قراءته واستخدامه، على سبيل المثال عند حفظه على القرص.