PowerPoint prezentációk videóvá konvertálása JavaScriptben
Introduction
A PowerPoint bemutató videóvá konvertálásával a következő előnyöket érheti el:
- Az elérhetőség növelése: Minden eszköz (platformtól függetlenül) alapértelmezés szerint videólejátszóval van felszerelve a prezentációk megnyitásához szükséges alkalmazásokkal szemben, így a felhasználók könnyebben nyitják meg vagy játszák le a videókat.
- Nagyobb elérés: A videók segítségével széles közönséghez juthat el, és információkat célozhat meg, amelyek egyébként unalmasnak tűnhetnek egy prezentációban. A legtöbb felmérés és statisztika azt mutatja, hogy az emberek a videókat gyakrabban nézik és fogyasztják, mint egyéb tartalmakat, és általában előnyben részesítik ezeket.
PowerPoint videó konvertálás az Aspose.Slides-ban
Az Aspose.Slides támogatja a prezentáció videóvá alakítását.
- Használja az Aspose.Slides-t, hogy a prezentáció diákjaiból egy adott FPS-nek (képkocka per másodperc) megfelelő képkockasort generáljon.
- Használjon harmadik féltől származó segédprogramot, például a ffmpeg-et (java számára), a képkockák alapján videó létrehozásához.
PowerPoint videóvá konvertálása
- Töltse le az ffmpeg-et itt.
- Futtassa a PowerPoint videó konvertáló JavaScript kódot.
Ez a JavaScript kód megmutatja, hogyan konvertáljon egy bemutatót (amely egy ábrát és két animációs hatást tartalmaz) videóvá:
var presentation = new aspose.slides.Presentation();
try {
// Hozzáad egy mosolys alakzatot, majd animálja
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();
}
}
// Állítsa be az ffmpeg binárisok mappáját. Lásd ezt az oldalt: 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);
}
Videóhatások
Animációkat alkalmazhat a diák objektumaira, és átmeneteket használhat a diák között.
Az animációk és átmenetek vonzóbbá és érdekesebbé teszik a diavetítéseket – és ugyanezt teszik a videók esetén is. Adjunk egy újabb diát és átmenetet a korábbi bemutató kódjához:
// Hozzáad egy mosolys alakzatot és animálja
// ...
// Hozzáad egy új diát és animált átmenetet
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);
Az Aspose.Slides szövegek animációját is támogatja. Így a objektumok bekezdéseit animáljuk, amelyek egyesével (egy másodperces késleltetéssel) jelennek meg:
var presentation = new aspose.slides.Presentation();
try {
// Hozzáad szöveget és animációkat
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();
}
}
// Állítsa be az ffmpeg binárisok mappáját. Lásd ezt az oldalt: 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);
}
Videókonvertálási osztályok
A PowerPoint videó konvertálási feladatok elvégzéséhez az Aspose.Slides a PresentationAnimationsGenerator és a PresentationPlayer osztályokat biztosítja.
A PresentationAnimationsGenerator lehetővé teszi a videó (később létrehozandó) keretméretének beállítását a konstruktorában. Ha a prezentáció egy példányát adja át, a Presentation.getSlideSize kerül felhasználásra, és olyan animációkat generál, amelyeket a PresentationPlayer használ.
Animációk generálásakor minden egyes következő animációhoz egy NewAnimation esemény jön létre, amely a prezentáció animációs lejátszó paraméterét tartalmazza. Az utóbbi egy osztály, amely egy külön animáció lejátszóját képviseli.
A prezentáció animációs lejátszójával a getDuration (az animáció teljes időtartama) és a setTimePosition metódusokat használjuk. Minden animáció pozíciója a 0-tól a duration-ig terjedő tartományban állítható be, majd a getFrame metódus egy BufferedImage‑et ad vissza, amely az adott pillanatban az animáció állapotát tükrözi:
var presentation = new aspose.slides.Presentation();
try {
// Hozzáad egy mosolys alakzatot és animálja
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);// kezdeti animáció állapota
try {
// kezdeti animáció állapot bitmap
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());// animáció végső állapota
try {
// animáció utolsó képkockája
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();
}
}
Az összes animáció egyszerre történő lejátszásához a PresentationPlayer osztályt használjuk. Ez az osztály egy PresentationAnimationsGenerator példányt és az effektusok FPS-ét veszi át a konstruktorában, majd minden animációhoz meghívja a FrameTick eseményt, hogy azok lejátszásra kerüljenek:
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();
}
}
Ezután az előállított képkockákat össze lehet állítani, hogy videót kapjunk. Lásd a Convert PowerPoint to Video szakaszt.
Támogatott animációk és hatások
Entrance:
| Animáció típusa | Aspose.Slides | PowerPoint |
|---|---|---|
| Megjelenés | ![]() |
![]() |
| Halványulás | ![]() |
![]() |
| Beköltözés | ![]() |
![]() |
| Lebegő belépés | ![]() |
![]() |
| Felosztás | ![]() |
![]() |
| Törlés | ![]() |
![]() |
| Alakzat | ![]() |
![]() |
| Kerék | ![]() |
![]() |
| Véletlen sávok | ![]() |
![]() |
| Növekedés és fordulás | ![]() |
![]() |
| Nagyítás | ![]() |
![]() |
| Forgatás | ![]() |
![]() |
| Ugrás | ![]() |
![]() |
Emphasis:
| Animáció típusa | Aspose.Slides | PowerPoint |
|---|---|---|
| Pulzálás | ![]() |
![]() |
| Színpulzálás | ![]() |
![]() |
| Röpködés | ![]() |
![]() |
| Forgás | ![]() |
![]() |
| Növekedés/Kicsinyítés | ![]() |
![]() |
| Színtelítettség csökkentése | ![]() |
![]() |
| Sötétítés | ![]() |
![]() |
| Világosítás | ![]() |
![]() |
| Átlátszóság | ![]() |
![]() |
| Objektum színe | ![]() |
![]() |
| Komplementer szín | ![]() |
![]() |
| Vonal színe | ![]() |
![]() |
| Kitöltés színe | ![]() |
![]() |
Exit:
| Animáció típusa | Aspose.Slides | PowerPoint |
|---|---|---|
| Eltűnés | ![]() |
![]() |
| Halványulás | ![]() |
![]() |
| Kifelégzés | ![]() |
![]() |
| Lebegő kilépés | ![]() |
![]() |
| Felosztás | ![]() |
![]() |
| Törlés | ![]() |
![]() |
| Alakzat | ![]() |
![]() |
| Véletlen sávok | ![]() |
![]() |
| Kicsinyítés és fordulás | ![]() |
![]() |
| Nagyítás | ![]() |
![]() |
| Forgatás | ![]() |
![]() |
| Ugrás | ![]() |
![]() |
Motion Paths:
| Animáció típusa | Aspose.Slides | PowerPoint |
|---|---|---|
| Vonalak | ![]() |
![]() |
| Ívek | ![]() |
![]() |
| Fordulatok | ![]() |
![]() |
| Alakzatok | ![]() |
![]() |
| Hurok | ![]() |
![]() |
| Egyéni útvonal | ![]() |
![]() |
GYIK
Lehetőség van jelszóval védett bemutatók konvertálására?
Igen, az Aspose.Slides lehetővé teszi a jelszóval védett bemutatók kezelését. Az ilyen fájlok feldolgozásakor a megfelelő jelszót kell megadni, hogy a könyvtár hozzáférhessen a bemutató tartalmához.
Támogatja az Aspose.Slides a felhőalapú megoldásokat?
Igen, az Aspose.Slides integrálható felhőalkalmazásokba és szolgáltatásokba. A könyvtár szerver környezetekben való működésre van tervezve, biztosítva a magas teljesítményt és a skálázhatóságot a fájlok kötegelt feldolgozásához.
Vannak méretkorlátok a bemutatók konvertálása során?
Az Aspose.Slides gyakorlatilag bármilyen méretű bemutató kezelésére képes. Nagy fájlok esetén azonban további rendszererőforrásokra lehet szükség, és néha ajánlott a bemutatót optimalizálni a teljesítmény javítása érdekében.

