تبدیل ارائههای PowerPoint به ویدئو در پایتون
مقدمه
با تبدیل ارائه PowerPoint یا OpenDocument به ویدئو، موارد زیر را به دست میآورید:
دسترسی افزایش یافته: تمام دستگاهها، صرفنظر از پلتفرم، بهصورت پیشفرض دارای پلیرهای ویدئویی هستند، بنابراین کاربران راحتتر میتوانند ویدئوها را باز یا پخش کنند نسبت به برنامههای ارائه سنتی.
دسترس گستردهتر: ویدئوها به شما امکان میدهند تا به مخاطبان بیشتری برسید و اطلاعات را به شکلی جذابتر ارائه دهید. نظرسنجیها و آمار نشان میدهد مردم ترجیح میدهند محتواهای ویدئویی را نسبت به دیگر اشکال مصرف کنند، که پیام شما را تأثیرگذارتر میکند.
در Aspose.Slides for Python 24.4، پشتیبانی از تبدیل ارائهها به ویدئو را پیادهسازی کردیم.
- از Aspose.Slides for Python برای تولید فریمها از اسلایدهای ارائه با نرخ فریم مشخص (FPS) استفاده کنید.
- سپس، با ابزار شخص ثالثی مانند ffmpeg این فریمها را به یک ویدئو ترکیب کنید.
تبدیل ارائه PowerPoint به ویدئو
- با استفاده از دستور pip install، Aspose.Slides for Python را به پروژه خود اضافه کنید:
pip install aspose-slides==24.4.0 - ffmpeg را از اینجا دانلود کنید یا از طریق مدیر بسته نصب کنید.
- مطمئن شوید ffmpeg در
PATHقرار دارد. در غیر این صورت، ffmpeg را با مسیر کامل باینری اجرا کنید (مثلاًC:\ffmpeg\ffmpeg.exeدر ویندوز یا/opt/ffmpeg/ffmpegدر لینوکس). - کد تبدیل PowerPoint به ویدئو را اجرا کنید.
این کد پایتون نشان میدهد چگونه یک ارائه (شامل یک شکل و دو افکت انیمیشن) را به ویدئو تبدیل کنیم:
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)
افکتهای ویدئویی
هنگام تبدیل یک ارائه PowerPoint به ویدئو با Aspose.Slides for Python میتوانید انواع افکتهای ویدئویی را برای بهبود کیفیت بصری خروجی اعمال کنید. این افکتها به شما امکان میدهند ظاهر اسلایدها را در ویدئوی نهایی با اضافه کردن انتقالهای نرم، انیمیشنها و سایر عناصر بصری کنترل کنید. این بخش گزینههای افکت ویدئویی موجود را توضیح میدهد و نحوه اعمال آنها را نشان میدهد.
انیمیشنها و انتقالها اسلایدشوها را جذابتر میکنند — و همین کار را برای ویدئوها نیز انجام میدهند. بیایید یک اسلاید دیگر و یک انتقال به کد ارائه قبلی اضافه کنیم:
import aspose.pydrawing as drawing
# اضافه کردن یک شکل لبخند و انیمیشن کردن آن.
# ...
# Add a new slide and an animated transition.
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 همچنین از انیمیشن متن پشتیبانی میکند. در این مثال، پاراگرافها را روی اشیاء انیمیشن میکنیم تا یکدام بعد از دیگری ظاهر شوند، با تاخیر یک ثانیهای بین هر کدام:
import aspose.slides as slides
import subprocess
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# اضافه کردن متن و انیمیشنها.
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
# تبدیل فریمها به ویدئو.
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)
کلاسهای تبدیل ویدئو
برای انجام وظایف تبدیل PowerPoint به ویدئو، Aspose.Slides for Python کلاس PresentationEnumerableFramesGenerator را ارائه میدهد.
PresentationEnumerableFramesGenerator به شما امکان میدهد اندازه فریم ویدئو (که بعدها ساخته خواهد شد) و مقدار FPS (فریم در ثانیه) را از طریق سازندهاش تنظیم کنید. اگر یک نمونه از ارائه را به آن پاس دهید، Presentation.SlideSize آن استفاده میشود.
برای اینکه تمام انیمیشنها در یک ارائه بهصورت همزمان پخش شوند، از متد PresentationEnumerableFramesGenerator.enumerate_frames استفاده کنید. این متد مجموعهای از اسلایدها را میگیرد و بهصورت ترتیبی EnumerableFrameArgs را برمیگرداند. سپس، با EnumerableFrameArgs.get_frame() هر فریم ویدئویی را بهدست میآورید.
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")
سپس فریمهای تولید شده میتوانند به یک ویدئو ترکیب شوند. برای جزئیات بیشتر، بخش Convert PowerPoint to Video را ببینید.
انیمیشنها و افکتهای پشتیبانیشده
هنگام تبدیل یک ارائه PowerPoint به ویدئو با Aspose.Slides for Python، مهم است بدانید کدام انیمیشنها و افکتها در خروجی پشتیبانی میشوند. Aspose.Slides طیف گستردهای از افکتهای ورودی، خروجی و تأکیدی رایج مانند محو شدن، پرواز، زوم و چرخش را پشتیبانی میکند. با این حال، برخی از انیمیشنهای پیشرفته یا سفارشی ممکن است بهطور کامل حفظ نشوند یا در ویدئوی نهایی بهصورت متفاوت ظاهر شوند. این بخش انیمیشنها و افکتهای پشتیبانیشده را فهرست میکند.
ورودی:
| نوع انیمیشن | Aspose.Slides | PowerPoint |
|---|---|---|
| Appear | ![]() |
![]() |
| Fade | ![]() |
![]() |
| Fly In | ![]() |
![]() |
| Float In | ![]() |
![]() |
| Split | ![]() |
![]() |
| Wipe | ![]() |
![]() |
| Shape | ![]() |
![]() |
| Wheel | ![]() |
![]() |
| Random Bars | ![]() |
![]() |
| Grow & Turn | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Swivel | ![]() |
![]() |
| Bounce | ![]() |
![]() |
تأکید:
| نوع انیمیشن | Aspose.Slides | PowerPoint |
|---|---|---|
| Pulse | ![]() |
![]() |
| Color Pulse | ![]() |
![]() |
| Teeter | ![]() |
![]() |
| Spin | ![]() |
![]() |
| Grow/Shrink | ![]() |
![]() |
| Desaturate | ![]() |
![]() |
| Darken | ![]() |
![]() |
| Lighten | ![]() |
![]() |
| Transparency | ![]() |
![]() |
| Object Color | ![]() |
![]() |
| Complementary Color | ![]() |
![]() |
| Line Color | ![]() |
![]() |
| Fill Color | ![]() |
![]() |
خروجی:
| نوع انیمیشن | Aspose.Slides | PowerPoint |
|---|---|---|
| Disappear | ![]() |
![]() |
| Fade | ![]() |
![]() |
| Fly Out | ![]() |
![]() |
| Float Out | ![]() |
![]() |
| Split | ![]() |
![]() |
| Wipe | ![]() |
![]() |
| Shape | ![]() |
![]() |
| Random Bars | ![]() |
![]() |
| Shrink & Turn | ![]() |
![]() |
| Zoom | ![]() |
![]() |
| Swivel | ![]() |
![]() |
| Bounce | ![]() |
![]() |
مسیرهای حرکتی:
| نوع انیمیشن | Aspose.Slides | PowerPoint |
|---|---|---|
| Lines | ![]() |
![]() |
| Arcs | ![]() |
![]() |
| Turns | ![]() |
![]() |
| Shapes | ![]() |
![]() |
| Loops | ![]() |
![]() |
| Custom Path | ![]() |
![]() |
افکتهای انتقال اسلاید پشتیبانیشده
افکتهای انتقال اسلاید نقش مهمی در ایجاد تغییرات نرم و بصری جذاب بین اسلایدها در یک ویدئو ایفا میکنند. Aspose.Slides for Python از انواع افکتهای انتقال رایج پشتیبانی میکند تا جریان و سبک ارائه اصلی شما در هنگام تبدیل حفظ شود. این بخش به افکتهای انتقال پشتیبانیشده در فرایند تبدیل میپردازد.
ظریف:
| نوع انیمیشن | Aspose.Slides | PowerPoint |
|---|---|---|
| Morph | ![]() |
![]() |
| Fade | ![]() |
![]() |
| Push | ![]() |
![]() |
| Pull | ![]() |
![]() |
| Wipe | ![]() |
![]() |
| Split | ![]() |
![]() |
| Reveal | ![]() |
![]() |
| Random Bars | ![]() |
![]() |
| Shape | ![]() |
![]() |
| Uncover | ![]() |
![]() |
| Cover | ![]() |
![]() |
| Flash | ![]() |
![]() |
| Strips | ![]() |
![]() |
هیجانانگیز:
| نوع انیمیشن | 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 | ![]() |
![]() |
محتوای پویا:
| نوع انیمیشن | Aspose.Slides | PowerPoint |
|---|---|---|
| Pan | ![]() |
![]() |
| Ferris Wheel | ![]() |
![]() |
| Conveyor | ![]() |
![]() |
| Rotate | ![]() |
![]() |
| Orbit | ![]() |
![]() |
| Fly Through | ![]() |
![]() |
پرسشهای متداول
آیا میتوان ارائههای دارای رمز عبور را تبدیل کرد؟
بله، Aspose.Slides for Python امکان کار با ارائههای رمزنگاریشده را فراهم میکند. هنگام پردازش چنین فایلهایی، باید رمز عبور صحیح را ارائه دهید تا کتابخانه بتواند به محتوای ارائه دسترسی پیدا کند.
آیا Aspose.Slides for Python برای استفاده در راهحلهای ابری پشتیبانی میشود؟
بله، Aspose.Slides for Python میتواند در برنامهها و سرویسهای ابری یکپارچه شود. این کتابخانه برای کار در محیطهای سرور طراحی شده و عملکرد بالا و مقیاسپذیری لازم برای پردازش دستهای فایلها را تضمین میکند.
آیا محدودیتی در اندازه ارائهها هنگام تبدیل وجود دارد؟
Aspose.Slides for Python قادر به پردازش ارائههایی با هر اندازهای است. با این حال، هنگام کار با فایلهای بسیار بزرگ ممکن است به منابع سیستم اضافی نیاز باشد و گاهی توصیه میشود تا عملکرد بهتر، ارائه را بهینهسازی کنید.

