در مقایسه با ارائه پاورپوینت (PPT یا PPTX)، یک ویدیو ( MP4) فرمت فایل محبوبتری است و باز کردن آن در اکثر دستگاهها و پلتفرمها آسانتر است. بنابراین، هنگامی که پاورپوینت خود را به ویدیو تبدیل می کنید، محتوای شما در بین مخاطبان بیشتری قابل دسترسی و اشتراک گذاری می شود.
تبدیل PPT به ویدیو در C++
در این مقاله قصد داریم نحوه تبدیل PPT به ویدیو در C++ را به شما نشان دهیم.
- دو API برای تبدیل PPT به ویدیو دریافت کنید
- تبدیل PPT به ویدیو در C++
- افکت ها و انیمیشن ها را در ویدیو اعمال کنید
دریافت دو API برای تبدیل PPT به ویدیو
ابتدا، برای تبدیل یک ارائه پاورپوینت به ویدیو به صورت برنامهای، باید این دو API را دریافت کنید:
- Aspose.Slides برای C++. This API allows you to generate a set of frames based on the slides in your PowerPoint presentation. Aspose.Slides for C++ is a popular API for creating, editing, converting, and manipulating PowerPoint presentations (without Microsoft PowerPoint or Office). See this Installation article to install it.
- ffmpeg. این API به شما این امکان را می دهد که بر اساس اسلایدهای تولید شده یک ویدیو ایجاد کنید. آن را [از اینجا] دانلود کنید (https://ffmpeg.org/download.html).
اطلاعات: ممکن است بخواهید Aspose رایگان مبدل پاورپوینت به ویدئو را بررسی کنید، زیرا این یک اجرای زنده از عملیات پاورپوینت به ویدئو است که شرح داده شده است. در این مقاله. مبدل به کاربران اجازه می دهد تا فیلم های خیره کننده از ارائه ها ایجاد کنند.
تبدیل PPT به ویدیو در C++
- اضافه کردن مسیر به «ffmpeg.exe» به متغیر محیطی «PATH».
- کد پاورپوینت برای ویدیو ++C را اجرا کنید.
این کد ++C به شما نشان می دهد که چگونه PPT را به ویدیو تبدیل کنید:
void OnFrameTick(System::SharedPtr<PresentationPlayer> sender, System::SharedPtr<FrameTickEventArgs> args)
{
System::String fileName = System::String::Format(u"frame_{0}.png", sender->get_FrameIndex());
args->GetFrame()->Save(fileName);
}
void Run()
{
auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
// شکل لبخند اضافه می کند و سپس آن را متحرک می کند
System::SharedPtr<IAutoShape> smile = slide->get_Shapes()->AddAutoShape(ShapeType::SmileyFace, 110.0f, 20.0f, 500.0f, 500.0f);
auto sequence = slide->get_Timeline()->get_MainSequence();
System::SharedPtr<IEffect> effectIn = sequence->AddEffect(smile, EffectType::Fly, EffectSubtype::TopLeft, EffectTriggerType::AfterPrevious);
System::SharedPtr<IEffect> effectOut = sequence->AddEffect(smile, EffectType::Fly, EffectSubtype::BottomRight, EffectTriggerType::AfterPrevious);
effectIn->get_Timing()->set_Duration(2.0f);
effectOut->set_PresetClassType(EffectPresetClassType::Exit);
const int32_t fps = 33;
auto animationsGenerator = System::MakeObject<PresentationAnimationsGenerator>(presentation);
auto player = System::MakeObject<PresentationPlayer>(animationsGenerator, fps);
player->FrameTick += OnFrameTick;
animationsGenerator->Run(presentation->get_Slides());
const System::String ffmpegParameters = System::String::Format(
u"-loglevel {0} -framerate {1} -i {2} -y -c:v {3} -pix_fmt {4} {5}",
u"warning", m_fps, "frame_%d.png", u"libx264", u"yuv420p", "video.mp4");
auto ffmpegProcess = System::Diagnostics::Process::Start(u"ffmpeg", ffmpegParameters);
ffmpegProcess->WaitForExit();
}
اعمال جلوهها و انیمیشنها در ویدیو
انیمیشن ها و جلوه ها جذابیت و نرخ جذب را برای ارائه ها و نمایش های اسلاید بهبود می بخشد. آنها تأثیر یکسانی روی ویدیوها دارند، به خصوص آنهایی که از ارائه های پاورپوینت ایجاد می شوند، بنابراین ممکن است بخواهید از جلوه ها در فیلم ها استفاده کنید. Aspose.Slides به شما امکان می دهد دقیقاً این کار را با ارائه PresentationAnimationsGenerator، PresentationPlayer انجام دهید. reference.aspose.com/slides/cpp/class/aspose.slides.export.presentationplayer/)، و سایر کلاس ها و انواع مرتبط.
به عنوان مثال، اگر تصمیم دارید از انیمیشن ها و جلوه ها در یک ویدیو استفاده کنید، می توانید یک اسلاید دیگر اضافه کنید و به کد ارائه به این ترتیب انتقال دهید:
// شکل لبخند اضافه می کند و آن را متحرک می کند
// ...
// یک اسلاید جدید و انتقال متحرک اضافه می کند
System::SharedPtr<ISlide> newSlide = presentation->get_Slides()->AddEmptySlide(presentation->get_Slide(0)->get_LayoutSlide());
System::SharedPtr<IBackground> slideBackground = newSlide->get_Background();
slideBackground->set_Type(BackgroundType::OwnBackground);
auto fillFormat = slideBackground->get_FillFormat();
fillFormat->set_FillType(FillType::Solid);
fillFormat->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Indigo());
newSlide->get_SlideShowTransition()->set_Type(TransitionType::Push);
سپس میتوانید یک تنظیمات انیمیشن را روی پاراگرافهای روی اشیاء اعمال کنید تا آن اشیا یکی پس از دیگری ظاهر شوند (با تأخیر بین ظاهر شدن روی یک ثانیه):
void OnFrameTick(System::SharedPtr<PresentationPlayer> sender, System::SharedPtr<FrameTickEventArgs> args)
{
System::String fileName = System::String::Format(u"frame_{0}.png", sender->get_FrameIndex());
args->GetFrame()->Save(fileName);
}
void Run()
{
auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
// متن و انیمیشن را اضافه می کند
System::SharedPtr<IAutoShape> autoShape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 210.0f, 120.0f, 300.0f, 300.0f);
System::SharedPtr<Paragraph> para1 = System::MakeObject<Paragraph>();
para1->get_Portions()->Add(System::MakeObject<Portion>(u"Aspose Slides for C++"));
System::SharedPtr<Paragraph> para2 = System::MakeObject<Paragraph>();
para2->get_Portions()->Add(System::MakeObject<Portion>(u"convert PowerPoint Presentation with text to video"));
System::SharedPtr<Paragraph> para3 = System::MakeObject<Paragraph>();
para3->get_Portions()->Add(System::MakeObject<Portion>(u"paragraph by paragraph"));
auto paragraphs = autoShape->get_TextFrame()->get_Paragraphs();
paragraphs->Add(para1);
paragraphs->Add(para2);
paragraphs->Add(para3);
paragraphs->Add(System::MakeObject<Paragraph>());
auto sequence = slide->get_Timeline()->get_MainSequence();
System::SharedPtr<IEffect> effect = sequence->AddEffect(para1, EffectType::Appear, EffectSubtype::None, EffectTriggerType::AfterPrevious);
System::SharedPtr<IEffect> effect2 = sequence->AddEffect(para2, EffectType::Appear, EffectSubtype::None, EffectTriggerType::AfterPrevious);
System::SharedPtr<IEffect> effect3 = sequence->AddEffect(para3, EffectType::Appear, EffectSubtype::None, EffectTriggerType::AfterPrevious);
System::SharedPtr<IEffect> effect4 = sequence->AddEffect(para3, EffectType::Appear, EffectSubtype::None, EffectTriggerType::AfterPrevious);
effect->get_Timing()->set_TriggerDelayTime(1.0f);
effect2->get_Timing()->set_TriggerDelayTime(1.0f);
effect3->get_Timing()->set_TriggerDelayTime(1.0f);
effect4->get_Timing()->set_TriggerDelayTime(1.0f);
// فریم ها را به ویدیو تبدیل می کند
const int32_t fps = 33;
auto animationsGenerator = System::MakeObject<PresentationAnimationsGenerator>(presentation);
auto player = System::MakeObject<PresentationPlayer>(animationsGenerator, fps);
player->FrameTick += OnFrameTick;
animationsGenerator->Run(presentation->get_Slides());
const System::String ffmpegParameters = System::String::Format(
u"-loglevel {0} -framerate {1} -i {2} -y -c:v {3} -pix_fmt {4} {5}",
u"warning", m_fps, "frame_%d.png", u"libx264", u"yuv420p", "video.mp4");
auto ffmpegProcess = System::Diagnostics::Process::Start(u"ffmpeg", ffmpegParameters);
ffmpegProcess->WaitForExit();
}
مجوز رایگان دریافت کنید
اگر میخواهید ویژگیهای Aspose.Slides را بدون محدودیت امتحان کنید، توصیه میکنیم مجوز موقت رایگان را دریافت کنید.
نتیجه
پس از انجام عملیات در این مقاله، ما معتقدیم که اکنون می دانید چگونه PPT را به ویدیو در C++ تبدیل کنید.
برای اطلاعات بیشتر درباره [ویژگیهای] Aspose.Slides (https://docs.aspose.com/slides/cpp/features-overview/)، به [اسناد] ما مراجعه کنید (https://docs.aspose.com/slides/cpp/). اگر سؤالی دارید، میتوانید آنها را در [فروم] ما (https://forum.aspose.com/c/slides/) پست کنید.