إدارة إطارات الفيديو في العروض التقديمية في .NET

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

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

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

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

إنشاء إطار فيديو مضمّن

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

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

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

 // إنشاء كائن من فئة Presentation
using (Presentation pres = new Presentation("pres.pptx"))
{
    // تحميل الفيديو
    using (FileStream fileStream = new FileStream("Wildlife.mp4", FileMode.Open, FileAccess.Read))
    {
        IVideo video = pres.Videos.AddVideo(fileStream, LoadingStreamBehavior.KeepLocked);
        
        // الحصول على الشريحة الأولى وإضافة إطار فيديو
        pres.Slides[0].Shapes.AddVideoFrame(10, 10, 150, 250, video);
        
        // حفظ العرض التقديمي إلى القرص
        pres.Save("pres-with-video.pptx", SaveFormat.Pptx);
    }
}

بدلاً من ذلك، يمكنك إضافة فيديو بتمرير مسار ملفه مباشرةً إلى طريقة AddVideoFrame:

using (Presentation pres = new Presentation())
{
    ISlide sld = pres.Slides[0];
    IVideoFrame vf = sld.Shapes.AddVideoFrame(50, 150, 300, 150, "video1.avi");
}

إنشاء إطار فيديو مع فيديو من مصدر ويب

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

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

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

public static void Run()
{
    // إنشاء كائن Presentation يمثل ملف عرض تقديمي 
    using (Presentation pres = new Presentation())
    {
        AddVideoFromYouTube(pres, "Tj75Arhq5ho");
        pres.Save("AddVideoFrameFromWebSource_out.pptx", SaveFormat.Pptx);
    }
}

private static void AddVideoFromYouTube(Presentation pres, string videoId)
{
    // إضافة إطار فيديو
    IVideoFrame videoFrame = pres.Slides[0].Shapes.AddVideoFrame(10, 10, 427, 240, "https://www.youtube.com/embed/" + videoId);
    videoFrame.PlayMode = VideoPlayModePreset.Auto;

    // تحميل الصورة المصغرة
    using (WebClient client = new WebClient())
    {
        string thumbnailUri = "http://img.youtube.com/vi/" + videoId + "/hqdefault.jpg";
        videoFrame.PictureFormat.Picture.Image = pres.Images.AddImage(client.DownloadData(thumbnailUri));
    }
}

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

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

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

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

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

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

using (Presentation presentation = new Presentation())
{
    byte[] videoData = File.ReadAllBytes("video.mp4");
    IVideo video = presentation.Videos.AddVideo(videoData);

    ISlide slide = presentation.Slides[0];
    IVideoFrame videoFrame = slide.Shapes.AddVideoFrame(0, 0, 100, 100, video);

    // يضيف مسار تسميات جديد من ملف WebVTT.
    presentation.Save("video_with_captions.pptx", SaveFormat.Pptx);
}

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

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

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

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

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

using (Presentation presentation = new Presentation("video_with_captions.pptx"))
{
    ISlide slide = presentation.Slides[0];
    foreach (IShape shape in slide.Shapes)
    {
        if (shape is IVideoFrame videoFrame)
        {
            foreach (ICaptions captionTrack in videoFrame.CaptionTracks)
            {
                // يحفظ مسار التسميات إلى ملف WebVTT.
                string filePath = $"{captionTrack.CaptionId}.vtt";
                File.WriteAllBytes(filePath, captionTrack.BinaryData);
            }
        }
    }
}

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

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

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

  1. تحميل العرض التقديمي الذي يحتوي على الفيديو.
  2. الحصول على كائن IVideoFrame المستهدف.
  3. إزالة مسارات التسميات من مجموعة CaptionTracks.
  4. حفظ العرض التقديمي المعدل.

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

using (Presentation presentation = new Presentation("video_with_captions.pptx"))
{
    ISlide slide = presentation.Slides[0];
    IVideoFrame videoFrame = slide.Shapes[0] as IVideoFrame;

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

    presentation.Save("video_without_captions.pptx", SaveFormat.Pptx);
}

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

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

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

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

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

// إنشاء كائن Presentation يمثل ملف عرض تقديمي 
Presentation presentation = new Presentation("Video.pptx");

// يتنقل عبر الشرائح
foreach (ISlide slide in presentation.Slides)
{
    // يتنقل عبر الأشكال
    foreach (IShape shape in presentation.Slides[0].Shapes)
    {
        // يحفظ الفيديو إلى القرص بمجرد العثور على VideoFrame يحتوي على الفيديو
        if (shape is VideoFrame)
        {
            IVideoFrame vf = shape as IVideoFrame;
            String type = vf.EmbeddedVideo.ContentType;
            int ss = type.LastIndexOf('/');
            type = type.Remove(0, type.LastIndexOf('/') + 1);
            Byte[] buffer = vf.EmbeddedVideo.BinaryData;
            using (FileStream stream = new FileStream("NewVideo_out." + type, FileMode.Create, FileAccess.Write, FileShare.Read))
            {                                                     
                stream.Write(buffer, 0, buffer.Length);
            }
        }
    }
}

الأسئلة الشائعة

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

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

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

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