تبدیل ارائه‌های PowerPoint به ویدئو در .NET

مقدمه

با تبدیل ارائه PowerPoint یا OpenDocument خود به ویدئو، شما به دست می‌آورید:

دسترس‌پذیری بیشتر: تمام دستگاه‌ها، بدون در نظر گرفتن پلتفرم، به صورت پیش‌فرض دارای پخش‌کننده ویدئو هستند که این باعث می‌شود کاربران به‌جای برنامه‌های سنتی ارائه، راحت‌تر ویدئوها را باز یا پخش کنند.

دسترسی گسترده‌تر: ویدئوها به شما امکان می‌دهند تا به جمعیت بزرگ‌تری برسید و اطلاعات را به شکل جذاب‌تری ارائه دهید. نظرسنجی‌ها و آمار نشان می‌دهد که مردم ترجیح می‌دهند محتوای ویدئویی را نسبت به فرم‌های دیگر مشاهده و مصرف کنند، که پیام شما را تاثیرگذارتر می‌سازد.

در Aspose.Slides برای .NET، ما پشتیبانی از تبدیل ارائه‌ها به ویدئو را پیاده‌سازی کرده‌ایم.

  • از Aspose.Slides برای .NET برای تولید فریم‌ها از اسلایدهای ارائه با نرخ فریم مشخص (FPS) استفاده کنید.
  • سپس از ابزاری شخص ثالث مانند ffmpeg برای ترکیب این فریم‌ها به یک ویدئو بهره بگیرید.

تبدیل یک ارائه PowerPoint به ویدئو

  1. از فرمان dotnet add package برای افزودن Aspose.Slides و کتابخانه FFMpegCore به پروژه خود استفاده کنید:
    • run dotnet add package Aspose.Slides.NET --version 22.11.0
    • run dotnet add package FFMpegCore --version 4.8.0
  2. ffmpeg را از اینجا دریافت کنید.
  3. FFMpegCore نیاز دارد مسیر ffmpeg دانلود شده (مثلاً استخراج شده در “C:\tools\ffmpeg”) را مشخص کنید:
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });
  1. کد تبدیل PowerPoint‑to‑video را اجرا کنید.

این کد C# نشان می‌دهد چگونه یک ارائه (شامل یک شکل و دو اثر انیمیشن) را به ویدئو تبدیل کنیم:

using System.Collections.Generic;
using Aspose.Slides;
using FFMpegCore; // از باینری‌های FFmpeg که قبلاً به C:\tools\ffmpeg استخراج کرده‌ایم استفاده می‌کند.
using Aspose.Slides.Animation;

using (Presentation presentation = new Presentation())
{
    ISlide slide = presentation.Slides[0];

    // یک شکل خنده اضافه می‌کند و سپس آن را انیمیشن می‌دهد.
    IAutoShape smile = slide.Shapes.AddAutoShape(ShapeType.SmileyFace, 110, 20, 500, 500);

    IEffect effectIn = slide.Timeline.MainSequence.AddEffect(
        smile, EffectType.Fly, EffectSubtype.TopLeft, EffectTriggerType.AfterPrevious);

    IEffect effectOut = slide.Timeline.MainSequence.AddEffect(
        smile, EffectType.Fly, EffectSubtype.BottomRight, EffectTriggerType.AfterPrevious);

    effectIn.Timing.Duration = 2f;
    effectOut.PresetClassType = EffectPresetClassType.Exit;

    const int Fps = 33;
    List<string> frames = new List<string>();

    using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
    using (var player = new PresentationPlayer(animationsGenerator, Fps))
    {
        player.FrameTick += (sender, args) =>
        {
            string frame = $"frame_{(sender.FrameIndex):D4}.png";
            args.GetFrame().Save(frame);
            frames.Add(frame);
        };
        animationsGenerator.Run(presentation.Slides);
    }

    // پوشه باینری‌های ffmpeg را پیکربندی کنید. این صفحه را ببینید: https://github.com/rosenbjerg/FFMpegCore#installation
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });

    // فریم‌ها را به یک ویدئوی webm تبدیل کنید.
    FFMpeg.JoinImageSequence("smile.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}

افکت‌های ویدئو

هنگام تبدیل یک ارائه PowerPoint به ویدئو با Aspose.Slides برای .NET، می‌توانید افکت‌های ویدئویی مختلفی را برای بهبود کیفیت بصری خروجی اعمال کنید. این افکت‌ها به شما امکان می‌دهند ظاهر اسلایدها را در ویدئوی نهایی با افزودن انتقال‌های صاف، انیمیشن‌ها و سایر عناصر بصری کنترل کنید. این بخش گزینه‌های افکت ویدئویی موجود را توضیح می‌دهد و نشان می‌دهد چگونه آن‌ها را اعمال کنید.

انیمیشن‌ها و انتقال‌ها اسلایدشوها را جذاب‌تر می‌سازند — و برای ویدئوها هم همین‌طور عمل می‌کنند. بیایید یک اسلاید دیگر و یک انتقال به کد ارائه قبلی اضافه کنیم:

// یک شکل خنده اضافه کنید و آن را انیمیشن کنید.
// ...

// یک اسلاید جدید اضافه کنید و یک انتقال انیمیشنی اعمال کنید.
ISlide newSlide = presentation.Slides.AddEmptySlide(presentation.Slides[0].LayoutSlide);
newSlide.Background.Type = BackgroundType.OwnBackground;
newSlide.Background.FillFormat.FillType = FillType.Solid;
newSlide.Background.FillFormat.SolidFillColor.Color = Color.Indigo;
newSlide.SlideShowTransition.Type = TransitionType.Push;

Aspose.Slides همچنین از انیمیشن‌های متنی پشتیبانی می‌کند. در این مثال، پاراگراف‌های شیء را به‌صورت متوالی با یک ثانیه تأخیر بین هر کدام انیمیشن می‌کنیم:

using System.Collections.Generic;
using Aspose.Slides.Export;
using Aspose.Slides;
using FFMpegCore;
using Aspose.Slides.Animation;

using (Presentation presentation = new Presentation())
{
    ISlide slide = presentation.Slides[0];

    // متن و انیمیشن‌ها را اضافه کنید.
    IAutoShape autoShape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 210, 120, 300, 300);
    Paragraph para1 = new Paragraph();
    para1.Portions.Add(new Portion("Aspose Slides for .NET"));
    Paragraph para2 = new Paragraph();
    para2.Portions.Add(new Portion("Convert a PowerPoint presentation with text to video"));

    Paragraph para3 = new Paragraph();
    para3.Portions.Add(new Portion("paragraph by paragraph"));
    autoShape.TextFrame.Paragraphs.Add(para1);
    autoShape.TextFrame.Paragraphs.Add(para2);
    autoShape.TextFrame.Paragraphs.Add(para3);
    autoShape.TextFrame.Paragraphs.Add(new Paragraph());

    IEffect effect1 = slide.Timeline.MainSequence.AddEffect(
        para1, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    IEffect effect2 = slide.Timeline.MainSequence.AddEffect(
        para2, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    IEffect effect3 = slide.Timeline.MainSequence.AddEffect(
        para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    IEffect effect4 = slide.Timeline.MainSequence.AddEffect(
        para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    effect1.Timing.TriggerDelayTime = 1f;
    effect2.Timing.TriggerDelayTime = 1f;
    effect3.Timing.TriggerDelayTime = 1f;
    effect4.Timing.TriggerDelayTime = 1f;

    const int Fps = 33;
    List<string> frames = new List<string>();

    using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
    using (var player = new PresentationPlayer(animationsGenerator, Fps))
    {
        player.FrameTick += (sender, args) =>
        {
            string frame = $"frame_{(sender.FrameIndex):D4}.png";
            args.GetFrame().Save(frame);
            frames.Add(frame);
        };

        animationsGenerator.Run(presentation.Slides);
    }

    // پوشه باینری‌های ffmpeg را پیکربندی کنید. این صفحه را ببینید: https://github.com/rosenbjerg/FFMpegCore#installation
    GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin" });

    // فریم‌ها را به یک ویدئوی webm تبدیل کنید.
    FFMpeg.JoinImageSequence("text_animation.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}

کلاس‌های تبدیل ویدئو

برای فعال‌سازی وظایف تبدیل PowerPoint به ویدئو، Aspose.Slides برای .NET کلاس‌های PresentationAnimationsGenerator و PresentationPlayer را فراهم می‌کند.

PresentationAnimationsGenerator به شما اجازه می‌دهد تا اندازه فریم برای ویدئو (که بعداً ساخته می‌شود) و مقدار FPS (فریم بر ثانیه) را از طریق سازنده‌اش تنظیم کنید. اگر یک نمونه از ارائه را پاس دهید، Presentation.SlideSize آن به‌کار گرفته می‌شود و انیمیشن‌هایی را تولید می‌کند که PresentationPlayer استفاده می‌کند.

هنگامی که انیمیشن‌ها تولید می‌شوند، برای هر انیمیشن بعدی یک رویداد NewAnimation فعال می‌شود که شامل پارامتر IPresentationAnimationPlayer است. این کلاس نمایانگر یک پلیر برای یک انیمیشن منفرد است.

برای کار با IPresentationAnimationPlayer، از ویژگی Duration (که مدت زمان کامل انیمیشن را می‌دهد) و متد SetTimePosition استفاده می‌کنید. هر موقعیت انیمیشن در بازه 0 تا duration تنظیم می‌شود و سپس متد GetFrame یک Bitmap نشان‌دهنده وضعیت انیمیشن در آن لحظه زمانی برمی‌گرداند.

using (Presentation presentation = new Presentation())
{
    ISlide slide = presentation.Slides[0];

    // یک شکل خنده اضافه کنید و آن را انیمیشن کنید.
    IAutoShape smile = slide.Shapes.AddAutoShape(ShapeType.SmileyFace, 110, 20, 500, 500);

    IEffect effectIn = slide.Timeline.MainSequence.AddEffect(
        smile, EffectType.Fly, EffectSubtype.TopLeft, EffectTriggerType.AfterPrevious);

    IEffect effectOut = slide.Timeline.MainSequence.AddEffect(
        smile, EffectType.Fly, EffectSubtype.BottomRight, EffectTriggerType.AfterPrevious);

    effectIn.Timing.Duration = 2f;
    effectOut.PresetClassType = EffectPresetClassType.Exit;

    using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
    {
        animationsGenerator.NewAnimation += animationPlayer =>
        {
            Console.WriteLine($"Total animation duration: {animationPlayer.Duration}");

            animationPlayer.SetTimePosition(0);          // وضعیت اولیه انیمیشن.
            Bitmap bitmap = animationPlayer.GetFrame();  // نقشه بیت وضعیت اولیه انیمیشن.

            animationPlayer.SetTimePosition(animationPlayer.Duration);  // وضعیت نهایی انیمیشن.
            Bitmap lastBitmap = animationPlayer.GetFrame();             // آخرین فریم انیمیشن.
            lastBitmap.Save("last.png");
        };
    }
}

برای پخش همزمان تمام انیمیشن‌های یک ارائه، کلاس PresentationPlayer استفاده می‌شود. این کلاس یک نمونه از PresentationAnimationsGenerator و مقدار FPS را در سازنده‌اش می‌گیرد و سپس برای تمام انیمیشن‌ها رویداد FrameTick را فراخوانی می‌کند تا آن‌ها را پخش کند:

using (Presentation presentation = new Presentation("animated.pptx"))
{
    using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
    using (var player = new PresentationPlayer(animationsGenerator, 33))
    {
        player.FrameTick += (sender, args) =>
        {
            args.GetFrame().Save($"frame_{sender.FrameIndex}.png");
        };
        animationsGenerator.Run(presentation.Slides);
    }
}

سپس فریم‌های تولید‌شده می‌توانند ترکیب شده و ویدئویی ساخته شود. بخش تبدیل یک ارائه PowerPoint به ویدئو را ببینید.

انیمیشن‌ها و افکت‌های پشتیبانی‌شده

هنگام تبدیل یک ارائه PowerPoint به ویدئو با Aspose.Slides برای .NET، مهم است بدانید کدام انیمیشن‌ها و افکت‌ها در خروجی پشتیبانی می‌شوند. Aspose.Slides طیف گسترده‌ای از افکت‌های ورودی، خروجی و تأکیدی رایج مانند محو شدن، پرواز، بزرگ‌نمایی و چرخش را پشتیبانی می‌کند. با این حال، برخی از انیمیشن‌های پیشرفته یا سفارشی ممکن است به‌طور کامل حفظ نشوند یا در ویدئوی نهایی متفاوت ظاهر شوند. این بخش به تشریح انیمیشن‌ها و افکت‌های پشتیبانی‌شده می‌پردازد.

ورودی:

نوع انیمیشن Aspose.Slides PowerPoint
Appear پشتیبانی نشده پشتیبانی شد
Fade پشتیبانی شد پشتیبانی شد
Fly In پشتیبانی شد پشتیبانی شد
Float In پشتیبانی شد پشتیبانی شد
Split پشتیبانی شد پشتیبانی شد
Wipe پشتیبانی شد پشتیبانی شد
Shape پشتیبانی شد پشتیبانی شد
Wheel پشتیبانی شد پشتیبانی شد
Random Bars پشتیبانی شد پشتیبانی شد
Grow & Turn پشتیبانی نشده پشتیبانی شد
Zoom پشتیبانی شد پشتیبانی شد
Swivel پشتیبانی شد پشتیبانی شد
Bounce پشتیبانی شد پشتیبانی شد

تأکیدی:

نوع انیمیشن Aspose.Slides PowerPoint
Pulse پشتیبانی نشده پشتیبانی شد
Color Pulse پشتیبانی نشده پشتیبانی شد
Teeter پشتیبانی شد پشتیبانی شد
Spin پشتیبانی شد پشتیبانی شد
Grow/Shrink پشتیبانی نشده پشتیبانی شد
Desaturate پشتیبانی نشده پشتیبانی شد
Darken پشتیبانی نشده پشتیبانی شد
Lighten پشتیبانی نشده پشتیبانی شد
Transparency پشتیبانی نشده پشتیبانی شد
Object Color پشتیبانی نشده پشتیبانی شد
Complementary Color پشتیبانی نشده پشتیبانی شد
Line Color پشتیبانی نشده پشتیبانی شد
Fill Color پشتیبانی نشده پشتیبانی شد

خروجی:

نوع انیمیشن Aspose.Slides PowerPoint
Disappear پشتیبانی نشده پشتیبانی شد
Fade پشتیبانی شد پشتیبانی شد
Fly Out پشتیبانی شد پشتیبانی شد
Float Out پشتیبانی شد پشتیبانی شد
Split پشتیبانی شد پشتیبانی شد
Wipe پشتیبانی شد پشتیبانی شد
Shape پشتیبانی شد پشتیبانی شد
Random Bars پشتیبانی شد پشتیبانی شد
Shrink & Turn پشتیبانی نشده پشتیبانی شد
Zoom پشتیبانی شد پشتیبانی شد
Swivel پشتیبانی شد پشتیبانی شد
Bounce پشتیبانی شد پشتیبانی شد

مسیرهای حرکتی:

نوع انیمیشن Aspose.Slides PowerPoint
Lines پشتیبانی شد پشتیبانی شد
Arcs پشتیبانی شد پشتیبانی شد
Turns پشتیبانی شد پشتیبانی شد
Shapes پشتیبانی شد پشتیبانی شد
Loops پشتیبانی شد پشتیبانی شد
Custom Path پشتیبانی شد پشتیبانی شد

افکت‌های انتقال اسلاید پشتیبانی‌شده

افکت‌های انتقال اسلاید نقش مهمی در ایجاد تغییرات روان و جذاب بین اسلایدها در یک ویدئو ایفا می‌کنند. Aspose.Slides برای .NET مجموعه‌ای از افکت‌های انتقال رایج را پشتیبانی می‌کند تا جریان و سبک ارائه اصلی شما حفظ شود. این بخش به افکت‌های انتقالی که در فرآیند تبدیل پشتیبانی می‌شوند، می‌پردازد.

ملایم:

نوع انتقال Aspose.Slides PowerPoint
Morph پشتیبانی نشده پشتیبانی شد
Fade پشتیبانی شد پشتیبانی شد
Push پشتیبانی شد پشتیبانی شد
Pull پشتیبانی شد پشتیبانی شد
Wipe پشتیبانی شد پشتیبانی شد
Split پشتیبانی شد پشتیبانی شد
Reveal پشتیبانی نشده پشتیبانی شد
Random Bars پشتیبانی شد پشتیبانی شد
Shape پشتیبانی نشده پشتیبانی شد
Uncover پشتیبانی نشده پشتیبانی شد
Cover پشتیبانی شد پشتیبانی شد
Flash پشتیبانی شد پشتیبانی شد
Strips پشتیبانی شد پشتیبانی شد

هیجان‌انگیز:

نوع انتقال Aspose.Slides PowerPoint
Fall Over پشتیبانی نشده پشتیبانی شد
Drape پشتیبانی نشده پشتیبانی شد
Curtains پشتیبانی نشده پشتیبانی شد
Wind پشتیبانی نشده پشتیبانی شد
Prestige پشتیبانی نشده پشتیبانی شد
Fracture پشتیبانی نشده پشتیبانی شد
Crush پشتیبانی نشده پشتیبانی شد
Peel Off پشتیبانی نشده پشتیبانی شد
Page Curl پشتیبانی نشده پشتیبانی شد
Airplane پشتیبانی نشده پشتیبانی شد
Origami پشتیبانی نشده پشتیبانی شد
Dissolve پشتیبانی شد پشتیبانی شد
Checkerboard پشتیبانی نشده پشتیبانی شد
Blinds پشتیبانی نشده پشتیبانی شد
Clock پشتیبانی شد پشتیبانی شد
Ripple پشتیبانی نشده پشتیبانی شد
Honeycomb پشتیبانی نشده پشتیبانی شد
Glitter پشتیبانی نشده پشتیبانی شد
Vortex پشتیبانی نشده پشتیبانی شد
Shred پشتیبانی نشده پشتیبانی شد
Switch پشتیبانی نشده پشتیبانی شد
Flip پشتیبانی نشده پشتیبانی شد
Gallery پشتیبانی نشده پشتیبانی شد
Cube پشتیبانی نشده پشتیبانی شد
Doors پشتیبانی نشده پشتیبانی شد
Box پشتیبانی نشده پشتیبانی شد
Comb پشتیبانی نشده پشتیبانی شد
Zoom پشتیبانی شد پشتیبانی شد
Random پشتیبانی نشده پشتیبانی شد

محتوای دینامیک:

نوع انتقال Aspose.Slides PowerPoint
Pan پشتیبانی نشده پشتیبانی شد
Ferris Wheel پشتیبانی شد پشتیبانی شد
Conveyor پشتیبانی نشده پشتیبانی شد
Rotate پشتیبانی نشده پشتیبانی شد
Orbit پشتیبانی نشده پشتیبانی شد
Fly Through پشتیبانی شد پشتیبانی شد

سوالات متداول

آیا می‌توان ارائه‌های محافظت‌شده با رمز عبور را تبدیل کرد؟

بله، Aspose.Slides برای .NET امکان کار با ارائه‌های محافظت‌شده با رمز عبور را دارد. هنگام پردازش این فایل‌ها باید رمز عبور صحیح را ارائه دهید تا کتابخانه بتواند به محتوای ارائه دسترسی پیدا کند.

آیا Aspose.Slides برای .NET پشتیبانی از استفاده در راه‌حل‌های ابری را دارد؟

بله، Aspose.Slides برای .NET می‌تواند در برنامه‌ها و سرویس‌های ابری یکپارچه شود. این کتابخانه برای کار در محیط‌های سروری طراحی شده است و عملکرد بالا و مقیاس‌پذیری برای پردازش دسته‌ای فایل‌ها را تضمین می‌کند.

آیا محدودیتی در اندازه ارائه‌ها هنگام تبدیل وجود دارد؟

Aspose.Slides برای .NET می‌تواند ارائه‌های تقریباً با هر اندازه‌ای را مدیریت کند. با این حال، هنگام کار با فایل‌های بسیار بزرگ، ممکن است منابع سیستمی بیشتری مورد نیاز باشد و گاهی توصیه می‌شود که برای بهبود عملکرد، ارائه را بهینه‌سازی کنید.