Converti le presentazioni PowerPoint in video in JavaScript
Introduzione
Convertendo la tua presentazione PowerPoint in video, ottieni
- Aumento dell’accessibilità: Tutti i dispositivi (indipendentemente dalla piattaforma) sono equipaggiati con lettori video di default rispetto alle applicazioni di apertura delle presentazioni, quindi gli utenti trovano più semplice aprire o riprodurre i video.
- Maggiore portata: Attraverso i video, puoi raggiungere un ampio pubblico e mirare a loro con informazioni che altrimenti potrebbero sembrare noiose in una presentazione. La maggior parte di sondaggi e statistiche suggerisce che le persone guardano e consumano video più di altre forme di contenuto, e generalmente preferiscono questo tipo di contenuto.
Conversione da PowerPoint a Video in Aspose.Slides
Aspose.Slides supporta la conversione da presentazione a video.
- Usa Aspose.Slides per generare un insieme di fotogrammi (dalle diapositive della presentazione) che corrispondono a un certo FPS (frame al secondo)
- Usa un’utilità di terze parti come ffmpeg (for java) per creare un video basato sui fotogrammi.
Converti PowerPoint in Video
-
Scarica ffmpeg qui.
-
Esegui il codice JavaScript di conversione da PowerPoint a video.
Questo codice JavaScript mostra come convertire una presentazione (contenente una figura e due effetti di animazione) in video:
var presentation = new aspose.slides.Presentation();
try {
// Aggiunge una forma sorridente e poi la anima
var smile = presentation.getSlides().get_Item(0).getShapes().addAutoShape(aspose.slides.ShapeType.SmileyFace, 110, 20, 500, 500);
var mainSequence = presentation.getSlides().get_Item(0).getTimeline().getMainSequence();
var effectIn = mainSequence.addEffect(smile, aspose.slides.EffectType.Fly, aspose.slides.EffectSubtype.TopLeft, aspose.slides.EffectTriggerType.AfterPrevious);
var effectOut = mainSequence.addEffect(smile, aspose.slides.EffectType.Fly, aspose.slides.EffectSubtype.BottomRight, aspose.slides.EffectTriggerType.AfterPrevious);
effectIn.getTiming().setDuration(2.0);
effectOut.setPresetClassType(aspose.slides.EffectPresetClassType.Exit);
final var fps = 33;
var frames = java.newInstanceSync("java.util.ArrayList");
var animationsGenerator = new aspose.slides.PresentationAnimationsGenerator(presentation);
try {
var player = new aspose.slides.PresentationPlayer(animationsGenerator, fps);
try {
player.setFrameTick((sender, arguments) -> {
try {
var frame = java.callStaticMethodSync("java.lang.String", "format", "frame_%04d.png", sender.getFrameIndex());
arguments.getFrame().save(frame, aspose.slides.ImageFormat.Png);
frames.add(frame);
} catch (e) {console.log(e);
throw java.newInstanceSync("java.lang.RuntimeException", e);
}
});
animationsGenerator.run(presentation.getSlides());
} finally {
if (player != null) {
player.dispose();
}
}
} finally {
if (animationsGenerator != null) {
animationsGenerator.dispose();
}
}
// Configura la cartella dei binari ffmpeg. Vedi questa pagina: https://github.com/rosenbjerg/FFMpegCore#installation
var ffmpeg = java.newInstanceSync("FFmpeg", "path/to/ffmpeg");
var ffprobe = java.newInstanceSync("FFprobe", "path/to/ffprobe");
var builder = java.newInstanceSync("FFmpegBuilder").addExtraArgs("-start_number", "1").setInput("frame_%04d.png").addOutput("output.avi").setVideoFrameRate(java.getStaticFieldValue("FFmpeg", "FPS_24")).setFormat("avi").done();
var executor = java.newInstanceSync("FFmpegExecutor", ffmpeg, ffprobe);
executor.createJob(builder).run();
} catch (e) {console.log(e);
console.log(e);
}
Effetti Video
Puoi applicare animazioni agli oggetti sulle diapositive e usare transizioni tra le diapositive.
Le animazioni e le transizioni rendono le presentazioni più coinvolgenti e interessanti—e lo stesso vale per i video. Aggiungiamo un’altra diapositiva e una transizione al codice della presentazione precedente:
// Aggiunge una forma sorridente e la anima
// ...
// Aggiunge una nuova diapositiva e una transizione animata
var newSlide = presentation.getSlides().addEmptySlide(presentation.getSlides().get_Item(0).getLayoutSlide());
newSlide.getBackground().setType(aspose.slides.BackgroundType.OwnBackground);
newSlide.getBackground().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
newSlide.getBackground().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "MAGENTA"));
newSlide.getSlideShowTransition().setType(aspose.slides.TransitionType.Push);
Aspose.Slides supporta anche l’animazione per i testi. Quindi animiamo i paragrafi sugli oggetti, che appariranno uno dopo l’altro (con un ritardo impostato a un secondo):
var presentation = new aspose.slides.Presentation();
try {
// Aggiunge testo e animazioni
var autoShape = presentation.getSlides().get_Item(0).getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 210, 120, 300, 300);
var para1 = new aspose.slides.Paragraph();
para1.getPortions().add(new aspose.slides.Portion("Aspose Slides for Node.js via Java"));
var para2 = new aspose.slides.Paragraph();
para2.getPortions().add(new aspose.slides.Portion("convert PowerPoint Presentation with text to video"));
var para3 = new aspose.slides.Paragraph();
para3.getPortions().add(new aspose.slides.Portion("paragraph by paragraph"));
var paragraphCollection = autoShape.getTextFrame().getParagraphs();
paragraphCollection.add(para1);
paragraphCollection.add(para2);
paragraphCollection.add(para3);
paragraphCollection.add(new aspose.slides.Paragraph());
var mainSequence = presentation.getSlides().get_Item(0).getTimeline().getMainSequence();
var effect1 = mainSequence.addEffect(para1, aspose.slides.EffectType.Appear, aspose.slides.EffectSubtype.None, aspose.slides.EffectTriggerType.AfterPrevious);
var effect2 = mainSequence.addEffect(para2, aspose.slides.EffectType.Appear, aspose.slides.EffectSubtype.None, aspose.slides.EffectTriggerType.AfterPrevious);
var effect3 = mainSequence.addEffect(para3, aspose.slides.EffectType.Appear, aspose.slides.EffectSubtype.None, aspose.slides.EffectTriggerType.AfterPrevious);
var effect4 = mainSequence.addEffect(para3, aspose.slides.EffectType.Appear, aspose.slides.EffectSubtype.None, aspose.slides.EffectTriggerType.AfterPrevious);
effect1.getTiming().setTriggerDelayTime(1.0);
effect2.getTiming().setTriggerDelayTime(1.0);
effect3.getTiming().setTriggerDelayTime(1.0);
effect4.getTiming().setTriggerDelayTime(1.0);
final var fps = 33;
var frames = java.newInstanceSync("java.util.ArrayList");
var animationsGenerator = new aspose.slides.PresentationAnimationsGenerator(presentation);
try {
var player = new aspose.slides.PresentationPlayer(animationsGenerator, fps);
try {
player.setFrameTick((sender, arguments) -> {
try {
var frame = java.callStaticMethodSync("java.lang.String", "format", "frame_%04d.png", sender.getFrameIndex());
arguments.getFrame().save(frame, aspose.slides.ImageFormat.Png);
frames.add(frame);
} catch (e) {console.log(e);
throw java.newInstanceSync("java.lang.RuntimeException", e);
}
});
animationsGenerator.run(presentation.getSlides());
} finally {
if (player != null) {
player.dispose();
}
}
} finally {
if (animationsGenerator != null) {
animationsGenerator.dispose();
}
}
// Configura la cartella dei binari ffmpeg. Vedi questa pagina: https://github.com/rosenbjerg/FFMpegCore#installation
var ffmpeg = java.newInstanceSync("FFmpeg", "path/to/ffmpeg");
var ffprobe = java.newInstanceSync("FFprobe", "path/to/ffprobe");
var builder = java.newInstanceSync("FFmpegBuilder").addExtraArgs("-start_number", "1").setInput("frame_%04d.png").addOutput("output.avi").setVideoFrameRate(java.getStaticFieldValue("FFmpeg", "FPS_24")).setFormat("avi").done();
var executor = java.newInstanceSync("FFmpegExecutor", ffmpeg, ffprobe);
executor.createJob(builder).run();
} catch (e) {console.log(e);
console.log(e);
}
Classi di Conversione Video
Per consentirti di eseguire operazioni di conversione da PowerPoint a video, Aspose.Slides fornisce le classi PresentationAnimationsGenerator e PresentationPlayer.
PresentationAnimationsGenerator ti permette di impostare la dimensione del fotogramma per il video (che sarà creato in seguito) tramite il suo costruttore. Se passi un’istanza della presentazione, verrà usato Presentation.getSlideSize e genera animazioni che PresentationPlayer utilizza.
Quando le animazioni sono generate, viene generato un evento NewAnimation per ogni animazione successiva, che ha il parametro del lettore di animazione della presentazione. Quest’ultimo è una classe che rappresenta un lettore per un’animazione separata.
Per lavorare con il lettore di animazione della presentazione, vengono usati i metodi getDuration (la durata totale dell’animazione) e setTimePosition. Ogni posizione dell’animazione è impostata nell’intervallo 0 to duration, e poi il metodo getFrame restituirà un BufferedImage che corrisponde allo stato dell’animazione in quel momento:
var presentation = new aspose.slides.Presentation();
try {
// Aggiunge una forma sorridente e la anima
var smile = presentation.getSlides().get_Item(0).getShapes().addAutoShape(aspose.slides.ShapeType.SmileyFace, 110, 20, 500, 500);
var mainSequence = presentation.getSlides().get_Item(0).getTimeline().getMainSequence();
var effectIn = mainSequence.addEffect(smile, aspose.slides.EffectType.Fly, aspose.slides.EffectSubtype.TopLeft, aspose.slides.EffectTriggerType.AfterPrevious);
var effectOut = mainSequence.addEffect(smile, aspose.slides.EffectType.Fly, aspose.slides.EffectSubtype.BottomRight, aspose.slides.EffectTriggerType.AfterPrevious);
effectIn.getTiming().setDuration(2.0);
effectOut.setPresetClassType(aspose.slides.EffectPresetClassType.Exit);
var animationsGenerator = new aspose.slides.PresentationAnimationsGenerator(presentation);
try {
animationsGenerator.setNewAnimation(animationPlayer -> {
console.log(java.callStaticMethodSync("java.lang.String", "format", "Animation total duration: %f", animationPlayer.getDuration()));
animationPlayer.setTimePosition(0);// stato iniziale dell'animazione
try {
// bitmap dello stato iniziale dell'animazione
animationPlayer.getFrame().save("firstFrame.png", aspose.slides.ImageFormat.Png);
} catch (e) {console.log(e);
throw java.newInstanceSync("java.lang.RuntimeException", e);
}
animationPlayer.setTimePosition(animationPlayer.getDuration());// stato finale dell'animazione
try {
// ultimo fotogramma dell'animazione
animationPlayer.getFrame().save("lastFrame.png", aspose.slides.ImageFormat.Png);
} catch (e) {console.log(e);
throw java.newInstanceSync("java.lang.RuntimeException", e);
}
});
} finally {
if (animationsGenerator != null) {
animationsGenerator.dispose();
}
}
} finally {
if (presentation != null) {
presentation.dispose();
}
}
Per far riprodurre tutte le animazioni di una presentazione contemporaneamente, viene usata la classe PresentationPlayer. Questa classe prende un’istanza di PresentationAnimationsGenerator e un FPS per gli effetti nel suo costruttore e poi chiama l’evento FrameTick per tutte le animazioni per farle riprodurre:
var presentation = new aspose.slides.Presentation("animated.pptx");
try {
var animationsGenerator = new aspose.slides.PresentationAnimationsGenerator(presentation);
try {
var player = new aspose.slides.PresentationPlayer(animationsGenerator, 33);
try {
player.setFrameTick((sender, arguments) -> {
try {
arguments.getFrame().save(("frame_" + sender.getFrameIndex()) + ".png", aspose.slides.ImageFormat.Png);
} catch (e) {console.log(e);
throw java.newInstanceSync("java.lang.RuntimeException", e);
}
});
animationsGenerator.run(presentation.getSlides());
} finally {
if (player != null) {
player.dispose();
}
}
} finally {
if (animationsGenerator != null) {
animationsGenerator.dispose();
}
}
} finally {
if (presentation != null) {
presentation.dispose();
}
}
Quindi i fotogrammi generati possono essere compilati per produrre un video. Vedi la sezione Convert PowerPoint to Video.
Animazioni ed Effetti Supportati
Ingresso:
| Tipo di Animazione | Aspose.Slides | PowerPoint |
|---|---|---|
| Apparire | ![]() |
![]() |
| Dissolvenza | ![]() |
![]() |
| Volare Dentro | ![]() |
![]() |
| Fluttuare Dentro | ![]() |
![]() |
| Dividere | ![]() |
![]() |
| Spazzare | ![]() |
![]() |
| Forma | ![]() |
![]() |
| Ruota | ![]() |
![]() |
| Barre Casuali | ![]() |
![]() |
| Crescere e Ruotare | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Ruotare | ![]() |
![]() |
| Rimbalzo | ![]() |
![]() |
Enfasi:
| Tipo di Animazione | Aspose.Slides | PowerPoint |
|---|---|---|
| Impulso | ![]() |
![]() |
| Impulso di Colore | ![]() |
![]() |
| Oscillazione | ![]() |
![]() |
| Rotazione | ![]() |
![]() |
| Crescere/Ridurre | ![]() |
![]() |
| Desaturare | ![]() |
![]() |
| Scurire | ![]() |
![]() |
| Schiarire | ![]() |
![]() |
| Trasparenza | ![]() |
![]() |
| Colore Oggetto | ![]() |
![]() |
| Colore Complementare | ![]() |
![]() |
| Colore Linea | ![]() |
![]() |
| Colore Riempimento | ![]() |
![]() |
Uscita:
| Tipo di Animazione | Aspose.Slides | PowerPoint |
|---|---|---|
| Scomparire | ![]() |
![]() |
| Dissolvenza | ![]() |
![]() |
| Volare Via | ![]() |
![]() |
| Fluttuare Via | ![]() |
![]() |
| Dividere | ![]() |
![]() |
| Spazzare | ![]() |
![]() |
| Forma | ![]() |
![]() |
| Barre Casuali | ![]() |
![]() |
| Ridurre e Ruotare | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Ruotare | ![]() |
![]() |
| Rimbalzo | ![]() |
![]() |
Percorsi di Movimento:
| Tipo di Animazione | Aspose.Slides | PowerPoint |
|---|---|---|
| Linee | ![]() |
![]() |
| Archi | ![]() |
![]() |
| Curve | ![]() |
![]() |
| Forme | ![]() |
![]() |
| Cicli | ![]() |
![]() |
| Percorso Personalizzato | ![]() |
![]() |
FAQ
È possibile convertire presentazioni protette da password?
Sì, Aspose.Slides consente di lavorare con presentazioni protette da password. Quando si elaborano questi file, è necessario fornire la password corretta affinché la libreria possa accedere al contenuto della presentazione.
Aspose.Slides supporta l’uso in soluzioni cloud?
Sì, Aspose.Slides può essere integrato in applicazioni e servizi cloud. La libreria è progettata per funzionare in ambienti server, garantendo alte prestazioni e scalabilità per l’elaborazione batch di file.
Ci sono limitazioni di dimensione per le presentazioni durante la conversione?
Aspose.Slides è in grado di gestire presentazioni di dimensioni praticamente illimitate. Tuttavia, quando si lavora con file molto grandi, potrebbero essere necessarie risorse di sistema aggiuntive e talvolta è consigliabile ottimizzare la presentazione per migliorare le prestazioni.

