Konvertera PowerPoint-presentationer till video i Python
Introduktion
Genom att konvertera din PowerPoint- eller OpenDocument-presentation till video får du:
Ökad tillgänglighet: Alla enheter, oavsett plattform, har som standard videospelare, vilket gör det enklare för användare att öppna eller spela upp videor jämfört med traditionella presentationsprogram.
Bredare räckvidd: Videor gör det möjligt att nå en större publik och presentera information i ett mer engagerande format. Undersökningar och statistik visar att människor föredrar att titta på och konsumera videoinnehåll framför andra former, vilket gör ditt budskap mer kraftfullt.
I Aspose.Slides for Python 24.4 implementerade vi stöd för att konvertera presentationer till video.
- Använd Aspose.Slides for Python för att generera bildrutor från presentationsbilderna med en specificerad bildfrekvens (FPS).
- Använd sedan ett tredjepartsverktyg som ffmpeg för att sammanställa dessa bildrutor till en video.
Konvertera en PowerPoint-presentation till video
- Använd pip‑install‑kommandot för att lägga till Aspose.Slides for Python i ditt projekt:
pip install aspose-slides==24.4.0 - Hämta ffmpeg från här eller installera det via pakethanteraren.
- Se till att ffmpeg finns i
PATH. Annars starta ffmpeg med den fullständiga sökvägen till den körbara filen (t.ex.C:\ffmpeg\ffmpeg.exepå Windows eller/opt/ffmpeg/ffmpegpå Linux). - Kör koden för PowerPoint‑till‑video‑konvertering.
Denna Python‑kod visar hur man konverterar en presentation (som innehåller en form och två animeringseffekter) till en video:
import aspose.slides as slides
import subprocess
with slides.Presentation() as presentation:
slide = presentation.slides[0]
smile_shape = slide.shapes.add_auto_shape(slides.ShapeType.SMILEY_FACE, 110, 20, 500, 500)
effect_in = slide.timeline.main_sequence.add_effect(
smile_shape,
slides.animation.EffectType.FLY,
slides.animation.EffectSubtype.TOP_LEFT,
slides.animation.EffectTriggerType.AFTER_PREVIOUS)
effect_out = slide.timeline.main_sequence.add_effect(
smile_shape,
slides.animation.EffectType.FLY,
slides.animation.EffectSubtype.BOTTOM_RIGHT,
slides.animation.EffectTriggerType.AFTER_PREVIOUS)
effect_in.timing.duration = 2
effect_out.preset_class_type = slides.animation.EffectPresetClassType.EXIT
fps = 33
with slides.export.PresentationEnumerableFramesGenerator(presentation, fps) as frames_stream:
for frame_args in frames_stream.enumerate_frames(presentation.slides):
frame = "frame_{:04d}.png".format(frame_args.frames_generator.frame_index)
frame_args.get_frame().save(frame)
cmd_line = ["ffmpeg", "-r", str(fps), "-i", "frame_%04d.png", "-y", "-s", "720x540", "-pix_fmt", "yuv420p",
"smile.webm"]
subprocess.call(cmd_line)
Videoeffekter
När du konverterar en PowerPoint-presentation till video med Aspose.Slides for Python kan du applicera olika videoeffekter för att förbättra den visuella kvaliteten på resultatet. Dessa effekter låter dig styra hur bilderna ser ut i den färdiga videon genom att lägga till mjuka övergångar, animationer och andra visuella element. Denna avsnitt förklarar de tillgängliga videoeffektalternativen och visar hur man använder dem.
Animationer och övergångar gör bildspel mer engagerande och intressanta — och de gör samma sak för videor. Låt oss lägga till en ytterligare bild och en övergång i koden för den föregående presentationen:
import aspose.pydrawing as drawing
# Lägg till en leendeform och animera den.
# ...
# Lägg till en ny bild och en animerad övergång.
new_slide = presentation.slides.add_empty_slide(presentation.slides[0].layout_slide)
new_slide.background.type = slides.BackgroundType.OWN_BACKGROUND
new_slide.background.fill_format.fill_type = slides.FillType.SOLID
new_slide.background.fill_format.solid_fill_color.color = drawing.Color.indigo
new_slide.slide_show_transition.type = slides.TransitionType.PUSH
Aspose.Slides for Python stödjer också textanimationer. I detta exempel animerar vi stycken på objekt så att de visas ett efter ett, med en sekunds fördröjning mellan dem:
import aspose.slides as slides
import subprocess
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# Lägg till text och animationer.
auto_shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 210, 120, 300, 300)
para1 = slides.Paragraph()
para1.portions.add(slides.Portion("Aspose.Slides for Python"))
para2 = slides.Paragraph()
para2.portions.add(slides.Portion("Convert a PowerPoint presentation with text to video"))
para3 = slides.Paragraph()
para3.portions.add(slides.Portion("paragraph by paragraph"))
auto_shape.text_frame.paragraphs.add(para1)
auto_shape.text_frame.paragraphs.add(para2)
auto_shape.text_frame.paragraphs.add(para3)
auto_shape.text_frame.paragraphs.add(slides.Paragraph())
effect = slide.timeline.main_sequence.add_effect(
para1,
slides.animation.EffectType.APPEAR,
slides.animation.EffectSubtype.NONE,
slides.animation.EffectTriggerType.AFTER_PREVIOUS)
effect2 = slide.timeline.main_sequence.add_effect(
para2,
slides.animation.EffectType.APPEAR,
slides.animation.EffectSubtype.NONE,
slides.animation.EffectTriggerType.AFTER_PREVIOUS)
effect3 = slide.timeline.main_sequence.add_effect(
para3,
slides.animation.EffectType.APPEAR,
slides.animation.EffectSubtype.NONE,
slides.animation.EffectTriggerType.AFTER_PREVIOUS)
effect4 = slide.timeline.main_sequence.add_effect(
para3,
slides.animation.EffectType.APPEAR,
slides.animation.EffectSubtype.NONE,
slides.animation.EffectTriggerType.AFTER_PREVIOUS)
effect.timing.trigger_delay_time = 1
effect2.timing.trigger_delay_time = 1
effect3.timing.trigger_delay_time = 1
effect4.timing.trigger_delay_time = 1
# Konvertera bildrutor till video.
fps = 33
with slides.export.PresentationEnumerableFramesGenerator(presentation, fps) as frames_stream:
for frame_args in frames_stream.enumerate_frames(presentation.slides):
frame = "frame_{:04d}.png".format(frame_args.frames_generator.frame_index)
frame_args.get_frame().save(frame)
cmd_line = ["ffmpeg", "-r", str(fps), "-i", "frame_%04d.png", "-y", "-s", "720x540", "-pix_fmt", "yuv420p", "text_animation.webm"]
subprocess.call(cmd_line)
Klasser för videokonvertering
För att möjliggöra PowerPoint‑till‑video‑konverteringsuppgifter tillhandahåller Aspose.Slides for Python PresentationEnumerableFramesGenerator.
PresentationEnumerableFramesGenerator låter dig ange bildstorleken för videon (som kommer att skapas senare) och FPS‑värdet (bilder per sekund) via dess konstruktor. Om du anger en instans av en presentation kommer dess Presentation.SlideSize att användas.
För att låta alla animationer i en presentation spelas upp samtidigt, använd metoden PresentationEnumerableFramesGenerator.enumerate_frames. Denna metod tar en samling bilder och returnerar sekventiellt EnumerableFrameArgs. Använd sedan EnumerableFrameArgs.get_frame() för att hämta varje videobildruta.
import aspose.slides as slides
with slides.Presentation("animated.pptx") as presentation:
fps = 33
with slides.export.PresentationEnumerableFramesGenerator(presentation, fps) as frames_stream:
for frame_args in frames_stream.enumerate_frames(presentation.slides):
frame_args.get_frame().save(f"frame_{frame_args.frames_generator.frame_index:04d}.png")
Därefter kan de genererade bildrutorna sammanställas till en video. För mer information, se avsnittet Konvertera PowerPoint till video.
Stödda animationer och effekter
När du konverterar en PowerPoint-presentation till video med Aspose.Slides for Python är det viktigt att förstå vilka animationer och effekter som stöds i resultatet. Aspose.Slides stödjer ett brett spektrum av vanliga inträdes-, utgångs‑ och betoningseffekter såsom toning, inflygning, zoom och rotation. Vissa avancerade eller anpassade animationer kan dock inte bevaras helt eller kan visas annorlunda i den färdiga videon. Detta avsnitt beskriver de stödda animationerna och effekterna.
Inträde:
| Animationstyp | Aspose.Slides | PowerPoint |
|---|---|---|
| Appear | ![]() |
![]() |
| Fade | ![]() |
![]() |
| Fly In | ![]() |
![]() |
| Float In | ![]() |
![]() |
| Split | ![]() |
![]() |
| Wipe | ![]() |
![]() |
| Shape | ![]() |
![]() |
| Wheel | ![]() |
![]() |
| Random Bars | ![]() |
![]() |
| Grow & Turn | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Swivel | ![]() |
![]() |
| Bounce | ![]() |
![]() |
Betoning:
| Animationstyp | Aspose.Slides | PowerPoint |
|---|---|---|
| Pulse | ![]() |
![]() |
| Color Pulse | ![]() |
![]() |
| Teeter | ![]() |
![]() |
| Spin | ![]() |
![]() |
| Grow/Shrink | ![]() |
![]() |
| Desaturate | ![]() |
![]() |
| Darken | ![]() |
![]() |
| Lighten | ![]() |
![]() |
| Transparency | ![]() |
![]() |
| Object Color | ![]() |
![]() |
| Complementary Color | ![]() |
![]() |
| Line Color | ![]() |
![]() |
| Fill Color | ![]() |
![]() |
Utgång:
| Animationstyp | Aspose.Slides | PowerPoint |
|---|---|---|
| Disappear | ![]() |
![]() |
| Fade | ![]() |
![]() |
| Fly Out | ![]() |
![]() |
| Float Out | ![]() |
![]() |
| Split | ![]() |
![]() |
| Wipe | ![]() |
![]() |
| Shape | ![]() |
![]() |
| Random Bars | ![]() |
![]() |
| Shrink & Turn | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Swivel | ![]() |
![]() |
| Bounce | ![]() |
![]() |
Rörelsebanor:
| Animationstyp | Aspose.Slides | PowerPoint |
|---|---|---|
| Lines | ![]() |
![]() |
| Arcs | ![]() |
![]() |
| Turns | ![]() |
![]() |
| Shapes | ![]() |
![]() |
| Loops | ![]() |
![]() |
| Custom Path | ![]() |
![]() |
Stödda bildövergångseffekter
Bildövergångseffekter spelar en viktig roll för att skapa smidiga och visuellt tilltalande övergångar mellan bilder i en video. Aspose.Slides for Python stödjer en mängd vanliga övergångseffekter för att bevara flödet och stilen i din ursprungliga presentation. Detta avsnitt lyfter fram vilka övergångseffekter som stöds under konverteringsprocessen.
Subtila:
| Animationstyp | Aspose.Slides | PowerPoint |
|---|---|---|
| Morph | ![]() |
![]() |
| Fade | ![]() |
![]() |
| Push | ![]() |
![]() |
| Pull | ![]() |
![]() |
| Wipe | ![]() |
![]() |
| Split | ![]() |
![]() |
| Reveal | ![]() |
![]() |
| Random Bars | ![]() |
![]() |
| Shape | ![]() |
![]() |
| Uncover | ![]() |
![]() |
| Cover | ![]() |
![]() |
| Flash | ![]() |
![]() |
| Strips | ![]() |
![]() |
Spännande:
| Animationstyp | 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 | ![]() |
![]() |
Dynamiskt innehåll:
| Animationstyp | Aspose.Slides | PowerPoint |
|---|---|---|
| Pan | ![]() |
![]() |
| Ferris Wheel | ![]() |
![]() |
| Conveyor | ![]() |
![]() |
| Rotate | ![]() |
![]() |
| Orbit | ![]() |
![]() |
| Fly Through | ![]() |
![]() |
Vanliga frågor
Är det möjligt att konvertera presentationer som är lösenordsskyddade?
Ja, Aspose.Slides for Python tillåter arbete med lösenordsskyddade presentationer. Vid bearbetning av sådana filer måste du ange rätt lösenord så att biblioteket kan komma åt presentationens innehåll.
Stöder Aspose.Slides for Python användning i molnlösningar?
Ja, Aspose.Slides for Python kan integreras i molnapplikationer och -tjänster. Biblioteket är designat för att fungera i servermiljöer och säkerställer hög prestanda och skalbarhet för batchbearbetning av filer.
Finns det några storleksbegränsningar för presentationer vid konvertering?
Aspose.Slides for Python kan hantera presentationer av i princip vilken storlek som helst. Vid arbete med mycket stora filer kan dock ytterligare systemresurser behövas, och det kan ibland rekommenderas att optimera presentationen för att förbättra prestandan.

