Rispetto a una presentazione PowerPoint (PPT o PPTX), un video ( MP4) è un formato di file più popolare e più facile da aprire sulla stragrande maggioranza dei dispositivi e della piattaforma. Pertanto, quando converti PowerPoint in video, i tuoi contenuti diventano più accessibili e condivisibili da un pubblico più vasto.
Converti PPT in video in C++
In questo articolo, intendiamo mostrarti come convertire PPT in video in C++.
- Ottieni due API per convertire PPT in video
- Converti PPT in video in C++
- Applicare effetti e animazioni in video
Ottieni due API per convertire PPT in video
Innanzitutto, per convertire una presentazione PowerPoint in un video in modo programmatico, devi ottenere queste due API:
- Aspose.Slides for 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. Questa API ti consente di creare un video basato sulle diapositive generate. Scaricalo qui.
Informazioni: potresti voler controllare Aspose gratuitamente convertitore da PowerPoint a video perché è un’implementazione live dell’operazione da PowerPoint a video descritta in questo articolo. Il convertitore consente agli utenti di creare straordinari video dalle presentazioni.
Converti PPT in video in C++
- Aggiungi il percorso a
ffmpeg.exe
alla variabile d’ambientePATH
. - Eseguire il codice C++ da PowerPoint a video.
Questo codice C++ mostra come convertire PPT in video:
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);
// Aggiunge una forma di sorriso e poi la anima
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();
}
Applica effetti e animazioni ai video
Le animazioni e gli effetti migliorano l’attrattiva e i tassi di coinvolgimento per presentazioni e presentazioni. Hanno lo stesso effetto sui video, in particolare quelli creati da presentazioni PowerPoint, quindi potresti voler utilizzare gli effetti nei video. Aspose.Slides ti consente di fare proprio questo fornendo PresentationAnimationsGenerator, [PresentationPlayer](https:// reference.aspose.com/slides/cpp/class/aspose.slides.export.presentationplayer/) e altre classi e tipi pertinenti.
Ad esempio, se decidi di utilizzare animazioni ed effetti in un video, puoi aggiungere un’altra diapositiva e una transizione al codice per la presentazione in questo modo:
// Aggiunge una forma di sorriso e la anima
// ...
// Aggiunge una nuova diapositiva e una transizione animata
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);
Quindi puoi applicare un’impostazione di animazione ai paragrafi sugli oggetti per farli apparire uno dopo l’altro (con il ritardo tra le apparizioni impostato su un secondo):
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);
// Aggiunge testo e animazioni
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);
// Converte i fotogrammi in video
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();
}
Ottieni una licenza gratuita
Se stai cercando di provare le funzionalità di Aspose.Slides senza limitazioni, ti consigliamo di ottenere una licenza temporanea gratuita.
Conclusione
Dopo avervi illustrato le operazioni in questo articolo, crediamo che ora sappiate come convertire PPT in video in C++
Per saperne di più su Aspose.Slides funzionalità, consulta la nostra documentazione. Se hai domande, puoi pubblicarle sul nostro forum.