تحويل باوربوينت إلى فيديو
من خلال تحويل عرض باوربوينت الخاص بك إلى فيديو، ستحصل على
- زيادة في الوصول: جميع الأجهزة (بغض النظر عن النظام الأساسي) مزودة بمشغلات فيديو بشكل افتراضي مقارنة بتطبيقات فتح العروض التقديمية، مما يجعل من السهل على المستخدمين فتح أو تشغيل الفيديوهات.
- وصول أوسع: عبر الفيديوهات، يمكنك الوصول إلى جمهور كبير وتهدف إليهم بمعلومات قد تبدو مملة بخلاف ذلك في عرض تقديمي. تشير معظم الاستطلاعات والإحصائيات إلى أن الناس يشاهدون الفيديوهات ويستهلكونها أكثر من أشكال المحتوى الأخرى، ويفضلون عادةً هذا النوع من المحتوى.
تحويل باوربوينت إلى فيديو باستخدام Aspose.Slides
في Aspose.Slides 22.11، نفذنا دعمًا لتحويل العروض التقديمية إلى فيديو.
- استخدم Aspose.Slides لإنشاء مجموعة من الإطارات (من شرايح العرض التقديمي) تت corresponde لمعدل إطارات معين (الإطارات في الثانية).
- استخدم أداة طرف ثالث مثل FFMpegCore (ffmpeg) لإنشاء فيديو استنادًا إلى الإطارات.
تحويل باوربوينت إلى فيديو
- استخدم أمر إضافة حزمة dotnet لإضافة Aspose.Slides ومكتبة FFMpegCore إلى مشروعك:
- قم بتشغيل
dotnet add package Aspose.Slides.NET --version 22.11.0
- قم بتشغيل
dotnet add package FFMpegCore --version 4.8.0
- قم بتشغيل
- قم بتنزيل ffmpeg هنا.
- يتطلب FFMpegCore أن تحدد المسار إلى ffmpeg الذي قمت بتنزيله (على سبيل المثال، مستخرج إلى “C:\tools\ffmpeg”):
GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin",} );
- قم بتشغيل الكود لتحويل باوربوينت إلى فيديو.
يوضح هذا الكود C# كيفية تحويل عرض تقديمي (يحتوي على صورة وتأثيرين متحركين) إلى فيديو:
using System.Collections.Generic;
using Aspose.Slides;
using FFMpegCore; // سنستخدم ملفات FFmpeg التي استخرجناها إلى "c:\tools\ffmpeg" سابقًا
using Aspose.Slides.Animation;
using (Presentation presentation = new Presentation())
{
// يضيف شكل ابتسامة ثم يتحرك به
IAutoShape smile = presentation.Slides[0].Shapes.AddAutoShape(ShapeType.SmileyFace, 110, 20, 500, 500);
IEffect effectIn = presentation.Slides[0].Timeline.MainSequence.AddEffect(smile, EffectType.Fly, EffectSubtype.TopLeft, EffectTriggerType.AfterPrevious);
IEffect effectOut = presentation.Slides[0].Timeline.MainSequence.AddEffect(smile, EffectType.Fly, EffectSubtype.BottomRight, EffectTriggerType.AfterPrevious);
effectIn.Timing.Duration = 2f;
effectOut.PresetClassType = EffectPresetClassType.Exit;
const int Fps = 33;
List<string> frames = new List<string>();
using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
using (var player = new PresentationPlayer(animationsGenerator, Fps))
{
player.FrameTick += (sender, args) =>
{
string frame = $"frame_{(sender.FrameIndex):D4}.png";
args.GetFrame().Save(frame);
frames.Add(frame);
};
animationsGenerator.Run(presentation.Slides);
}
// تكوين مجلد ملفات ffmpeg. انظر هذه الصفحة: https://github.com/rosenbjerg/FFMpegCore#installation
GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin", });
// تحويل الإطارات إلى فيديو webm
FFMpeg.JoinImageSequence("smile.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}
تأثيرات الفيديو
يمكنك تطبيق الرسوم المتحركة على العناصر الموجودة على الشرائح واستخدام الانتقالات بين الشرائح.
تجعل الرسوم المتحركة والانتقالات العروض التقديمية أكثر جاذبية واهتمامًا - وتفعل الشيء نفسه للفيديوهات. دعونا نضيف شريحة أخرى وانتقال إلى الكود الخاص بالعرض التقديمي السابق:
// يضيف شكل ابتسامة ويتحرك به
// ...
// يضيف شريحة جديدة وانتقال متحرك
ISlide newSlide = presentation.Slides.AddEmptySlide(presentation.Slides[0].LayoutSlide);
newSlide.Background.Type = BackgroundType.OwnBackground;
newSlide.Background.FillFormat.FillType = FillType.Solid;
newSlide.Background.FillFormat.SolidFillColor.Color = Color.Indigo;
newSlide.SlideShowTransition.Type = TransitionType.Push;
يدعم Aspose.Slides أيضًا الرسوم المتحركة للنصوص. لذا نقوم بتحريك الفقرات على العناصر، والتي ستظهر واحدة تلو الأخرى (مع تأخير مضبوط على ثانية واحدة):
using System.Collections.Generic;
using Aspose.Slides.Export;
using Aspose.Slides;
using FFMpegCore;
using Aspose.Slides.Animation;
using (Presentation presentation = new Presentation())
{
// يضيف نصوص ورسوم متحركة
IAutoShape autoShape = presentation.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, 210, 120, 300, 300);
Paragraph para1 = new Paragraph();
para1.Portions.Add(new Portion("Aspose Slides for .NET"));
Paragraph para2 = new Paragraph();
para2.Portions.Add(new Portion("تحويل عرض باوربوينت مع نص إلى فيديو"));
Paragraph para3 = new Paragraph();
para3.Portions.Add(new Portion("فقرة تلو الأخرى"));
autoShape.TextFrame.Paragraphs.Add(para1);
autoShape.TextFrame.Paragraphs.Add(para2);
autoShape.TextFrame.Paragraphs.Add(para3);
autoShape.TextFrame.Paragraphs.Add(new Paragraph());
IEffect effect = presentation.Slides[0].Timeline.MainSequence.AddEffect(para1, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
IEffect effect2 = presentation.Slides[0].Timeline.MainSequence.AddEffect(para2, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
IEffect effect3 = presentation.Slides[0].Timeline.MainSequence.AddEffect(para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
IEffect effect4 = presentation.Slides[0].Timeline.MainSequence.AddEffect(para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
effect.Timing.TriggerDelayTime = 1f;
effect2.Timing.TriggerDelayTime = 1f;
effect3.Timing.TriggerDelayTime = 1f;
effect4.Timing.TriggerDelayTime = 1f;
// تحويل الإطارات إلى فيديو
const int Fps = 33;
List<string> frames = new List<string>();
using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
using (var player = new PresentationPlayer(animationsGenerator, Fps))
{
player.FrameTick += (sender, args) =>
{
string frame = $"frame_{(sender.FrameIndex):D4}.png";
args.GetFrame().Save(frame);
frames.Add(frame);
};
animationsGenerator.Run(presentation.Slides);
}
// تكوين مجلد ملفات ffmpeg. انظر هذه الصفحة: https://github.com/rosenbjerg/FFMpegCore#installation
GlobalFFOptions.Configure(new FFOptions { BinaryFolder = @"c:\tools\ffmpeg\bin", });
// تحويل الإطارات إلى فيديو webm
FFMpeg.JoinImageSequence("text_animation.webm", Fps, frames.Select(frame => ImageInfo.FromPath(frame)).ToArray());
}
فئات تحويل الفيديو
للسماح لك بتنفيذ مهام تحويل باوربوينت إلى فيديو، يوفر Aspose.Slides PresentationAnimationsGenerator وPresentationPlayer الكلاسات.
تسمح لك PresentationAnimationsGenerator بتعيين حجم الإطار للفيديو (الذي سيتم إنشاؤه لاحقًا) من خلال المُنشئ الخاص بها. إذا قمت بتمرير إصدار من العرض التقديمي، سيتم استخدام Presentation.SlideSize
وتولد الرسوم المتحركة التي يستخدمها PresentationPlayer.
عندما يتم إنشاء الرسوم المتحركة، يتم إنشاء حدث NewAnimation
لكل رسم متحرك لاحق، وهو يحمل المعامل IPresentationAnimationPlayer. الأخير هو فئة تمثل مشغلًا لرسم متحرك منفصل.
للتعامل مع IPresentationAnimationPlayer، تُستخدم الخاصيتان Duration (المدة الكاملة للرسوم المتحركة) وSetTimePosition الطريقة. يتم تعيين كل موضع رسم متحرك ضمن النطاق 0 إلى المدة، ثم ستعيد دالة GetFrame
صورة Bitmap التي تتوافق مع حالة الرسوم المتحركة في تلك اللحظة.
using (Presentation presentation = new Presentation())
{
// يضيف شكل ابتسامة ويتحرك به
IAutoShape smile = presentation.Slides[0].Shapes.AddAutoShape(ShapeType.SmileyFace, 110, 20, 500, 500);
IEffect effectIn = presentation.Slides[0].Timeline.MainSequence.AddEffect(smile, EffectType.Fly, EffectSubtype.TopLeft, EffectTriggerType.AfterPrevious);
IEffect effectOut = presentation.Slides[0].Timeline.MainSequence.AddEffect(smile, EffectType.Fly, EffectSubtype.BottomRight, EffectTriggerType.AfterPrevious);
effectIn.Timing.Duration = 2f;
effectOut.PresetClassType = EffectPresetClassType.Exit;
using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
{
animationsGenerator.NewAnimation += animationPlayer =>
{
Console.WriteLine($"مدة الرسوم المتحركة الإجمالية: {animationPlayer.Duration}");
animationPlayer.SetTimePosition(0); // حالة الرسوم المتحركة الأولية
Bitmap bitmap = animationPlayer.GetFrame(); // صورة حالة الرسوم المتحركة الأولية
animationPlayer.SetTimePosition(animationPlayer.Duration); // الحالة النهائية للرسوم المتحركة
Bitmap lastBitmap = animationPlayer.GetFrame(); // آخر إطار للرسوم المتحركة
lastBitmap.Save("last.png");
};
}
}
لجعل جميع الرسوم المتحركة في عرض تقديمي تلعب مرة واحدة، يتم استخدام PresentationPlayer الفئة. تأخذ هذه الفئة مثيلًا من PresentationAnimationsGenerator وFPS للتأثيرات في مُنشئها ثم تستدعي حدث FrameTick
لكل الرسوم المتحركة للحصول على تشغيلها:
using (Presentation presentation = new Presentation("animated.pptx"))
{
using (var animationsGenerator = new PresentationAnimationsGenerator(presentation))
using (var player = new PresentationPlayer(animationsGenerator, 33))
{
player.FrameTick += (sender, args) =>
{
args.GetFrame().Save($"frame_{sender.FrameIndex}.png");
};
animationsGenerator.Run(presentation.Slides);
}
}
ثم يمكن تجميع الإطارات المولدة لإنتاج فيديو. انظر قسم تحويل باوربوينت إلى فيديو.
الرسوم المتحركة والتأثيرات المدعومة
دخول:
نوع الرسوم المتحركة | Aspose.Slides | باوربوينت |
---|---|---|
ظهور | ||
تلاشي | ||
دخول | ||
طفو | ||
انقسام | ||
مسح | ||
شكل | ||
عجلة | ||
أشرطة عشوائية | ||
نمو دوران | ||
تكبير | ||
تدوير | ||
ارتداد |
تأكيد:
نوع الرسوم المتحركة | Aspose.Slides | باوربوينت |
---|---|---|
نبض | ||
نبض اللون | ||
توازن | ||
دوران | ||
نمو/انكماش | ||
تخفيف | ||
تعتيم | ||
إنارة | ||
شفافية | ||
لون العنصر | ||
لون تكميلي | ||
لون الخط | ||
لون التعبئة |
خروج:
نوع الرسوم المتحركة | Aspose.Slides | باوربوينت |
---|---|---|
اختفاء | ||
تلاشي | ||
خرج | ||
طفو | ||
انقسام | ||
مسح | ||
شكل | ||
أشرطة عشوائية | ||
انكماش دوران | ||
تكبير | ||
تدوير | ||
ارتداد |
مسارات الحركة:
نوع الرسوم المتحركة | Aspose.Slides | باوربوينت |
---|---|---|
خطوط | ||
أقواس | ||
تدويرات | ||
أشكال | ||
دوائر | ||
مسار مخصص |
تأثيرات الانتقال بين الشرائح المدعومة
خفيفة:
نوع الرسوم المتحركة | Aspose.Slides | باوربوينت |
---|---|---|
تحول | ||
تلاشي | ||
دفع | ||
سحب | ||
مسح | ||
انقسام | ||
كشف | ||
أشرطة عشوائية | ||
شكل | ||
كشف | ||
تغطية | ||
فلاش | ||
شرائط |
مثيرة:
نوع الرسوم المتحركة | Aspose.Slides | باوربوينت |
---|---|---|
سقوط | ||
ستارة | ||
ستائر | ||
رياح | ||
هيبة | ||
تشقق | ||
سحق | ||
تقشر | ||
حافة الصفحة | ||
طائرة | ||
أوريغامي | ||
تلاشي | ||
لوحة شطرنج | ||
ستائر | ||
ساعة | ||
تموج | ||
شخللة | ||
تألق | ||
دوامة | ||
تمزيق | ||
تبديل | ||
تقلب | ||
معرض | ||
مكعب | ||
أبواب | ||
صندوق | ||
مشط | ||
تكبير | ||
عشوائي |
محتوى ديناميكي:
نوع الرسوم المتحركة | Aspose.Slides | باوربوينت |
---|---|---|
تدوير | ||
عجلة فيريس | ||
حزام ناقل | ||
تدوير | ||
مدار | ||
التحليق من خلال |