JavaScript में PowerPoint प्रस्तुतियों को वीडियो में बदलें

परिचय

PowerPoint प्रस्तुति को वीडियो में परिवर्तित करके, आपको प्राप्त होता है

  • सुलभता में वृद्धि: सभी उपकरण (प्लेटफ़ॉर्म की परवाह किए बिना) डिफ़ॉल्ट रूप से वीडियो प्लेयर के साथ सुसज्जित होते हैं, जबकि प्रस्तुति‑खोलने वाले अनुप्रयोग नहीं, इसलिए उपयोगकर्ताओं को वीडियो खोलना या चलाना आसान लगता है।
  • अधिक पहुँच: वीडियो के माध्यम से, आप बड़ी दर्शक संख्या तक पहुँ सकते हैं और उन्हें ऐसी जानकारी प्रदान कर सकते हैं जो प्रस्तुति में नीरस लग सकती है। अधिकांश सर्वेक्षण और आँकड़े दर्शाते हैं कि लोग वीडियो को अन्य सामग्री के रूपों की तुलना में अधिक देखते और उपभोग करते हैं, और आमतौर पर वे ऐसी सामग्री को प्राथमिकता देते हैं।

Aspose.Slides में PowerPoint से वीडियो रूपांतरण

Aspose.Slides प्रस्तुति‑से‑वीडियो रूपांतरण का समर्थन करता है।

  • Aspose.Slides का उपयोग करके फ्रेम्स का एक सेट (प्रस्तुति स्लाइड्स से) उत्पन्न करें जो किसी निश्चित FPS (फ़्रेम प्रति सेकंड) के अनुरूप हों।
  • ffmpeg जैसी तृतीय‑पक्ष उपयोगिता (for java) का उपयोग करके फ्रेम्स के आधार पर वीडियो बनाएँ।

PowerPoint को वीडियो में बदलें

  1. ffmpeg डाउनलोड करें यहाँ.
  2. PowerPoint को वीडियो में बदलने वाला JavaScript कोड चलाएँ।

यह JavaScript कोड आपको दिखाता है कि कैसे एक प्रस्तुति (जिसमें एक चित्र और दो एनीमेशन इफ़ेक्ट हैं) को वीडियो में बदलें:

var presentation = new aspose.slides.Presentation();
try {
    // एक स्माइली आकार जोड़ता है और फिर उसे एनीमेट करता है
    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();
        }
    }
    // ffmpeg बाइनरी फ़ोल्डर कॉन्फ़िगर करें। इस पृष्ठ को देखें: 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);
}

वीडियो इफ़ेक्ट्स

आप स्लाइड्स पर वस्तुओं पर एनीमेशन लागू कर सकते हैं और स्लाइड्स के बीच ट्रांज़िशन का उपयोग कर सकते हैं।

एनीमेशन और ट्रांज़िशन स्लाइडशो को अधिक आकर्षक और रोचक बनाते हैं—और वीडियो के लिए भी यही काम करते हैं। चलिए पिछले प्रस्तुति के कोड में एक और स्लाइड और ट्रांज़िशन जोड़ते हैं:

// एक स्माइली आकार जोड़ता है और उसे एनीमेट करता है
// ...
// एक नई स्लाइड जोड़ता है और एनीमेटेड ट्रांज़िशन सेट करता है
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 टेक्स्ट के लिए भी एनीमेशन का समर्थन करता है। इसलिए हम वस्तुओं पर पैराग्राफ़ को एनीमेट करते हैं, जो एक‑के‑बाद‑एक दिखाई देंगे (विलंब एक सेकंड पर सेट किया गया है):

var presentation = new aspose.slides.Presentation();
try {
    // टेक्स्ट और एनीमेशन जोड़ता है
    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();
        }
    }
    // ffmpeg बाइनरी फ़ोल्डर कॉन्फ़िगर करें। इस पृष्ठ को देखें: 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);
}

वीडियो रूपांतरण क्लासेज

PowerPoint को वीडियो में बदलने के कार्य करने के लिए, Aspose.Slides निम्नलिखित क्लासेज प्रदान करता है: PresentationAnimationsGenerator और PresentationPlayer

PresentationAnimationsGenerator आपको वीडियो (जो बाद में बनाया जाएगा) के फ़्रेम आकार को उसके कन्स्ट्रक्टर के माध्यम से सेट करने देता है। यदि आप प्रस्तुति का एक इंस्टेंस पास करते हैं, तो Presentation.getSlideSize उपयोग होगा और यह एनीमेशन बनाता है जिसे PresentationPlayer उपयोग करता है।

जब एनीमेशन जनरेट होते हैं, तो प्रत्येक बाद की एनीमेशन के लिए एक NewAnimation इवेंट जनरेट होता है, जिसमें प्रस्तुति एनीमेशन प्लेयर पैरामीटर होता है। यह एक क्लास है जो अलग एनीमेशन के लिए प्लेयर को दर्शाता है।

प्रेजेंटेशन एनीमेशन प्लेयर के साथ काम करने के लिए, getDuration (एनीमेशन की पूरी अवधि) मेथड और setTimePosition मेथड का उपयोग किया जाता है। प्रत्येक एनीमेशन पोज़िशन को 0 से duration रेंज के भीतर सेट किया जाता है, और फिर getFrame मेथड एक BufferedImage लौटाता है जो उस क्षण की एनीमेशन स्थिति के अनुरूप होता है:

var presentation = new aspose.slides.Presentation();
try {
    // स्माइली आकार जोड़ता है और उसे एनीमेट करता है
    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);// प्रारंभिक एनीमेशन स्थिति
            try {
                // प्रारंभिक एनीमेशन स्थिति बिटमैप
                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());// एनीमेशन की अंतिम स्थिति
            try {
                // एनीमेशन का अंतिम फ्रेम
                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();
    }
}

प्रेजेंटेशन में सभी एनीमेशन को एक साथ चलाने के लिए, PresentationPlayer क्लास का उपयोग किया जाता है। यह क्लास अपने कन्स्ट्रक्टर में एक PresentationAnimationsGenerator इंस्टेंस और इफ़ेक्ट्स के लिए FPS लेता है और फिर सभी एनीमेशन के लिए FrameTick इवेंट को कॉल करता है ताकि उन्हें चलाया जा सके:

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();
    }
}

फिर जनरेटेड फ़्रेम्स को कंपाइल करके एक वीडियो बनाया जा सकता है। देखें Convert PowerPoint to Video सेक्शन।

समर्थित एनीमेशन और इफ़ेक्ट्स

प्रवेश

एनीमेशन प्रकार 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 पासवर्ड‑सुरक्षित प्रस्तुतियों के साथ काम करने की अनुमति देता है। ऐसे फ़ाइलों को प्रोसेस करते समय, आपको सही पासवर्ड प्रदान करना होगा ताकि लाइब्रेरी प्रस्तुति की सामग्री तक पहुंच सके।

क्या Aspose.Slides क्लाउड समाधान में उपयोग के लिए समर्थित है?

हाँ, Aspose.Slides को क्लाउड एप्लिकेशन और सेवाओं में एकीकृत किया जा सकता है। यह लाइब्रेरी सर्वर वातावरण में काम करने के लिये डिज़ाइन की गई है, जिससे फ़ाइलों के बैच प्रोसेसिंग के लिये उच्च प्रदर्शन और स्केलेबिलिटी मिलती है।

रूपांतरण के दौरान प्रस्तुतियों के आकार पर कोई सीमाएँ हैं क्या?

Aspose.Slides लगभग किसी भी आकार की प्रस्तुतियों को संभाल सकता है। हालांकि, बहुत बड़े फ़ाइलों के साथ काम करते समय अतिरिक्त सिस्टम संसाधनों की आवश्यकता हो सकती है, और प्रदर्शन बेहतर करने के लिये प्रस्तुति को अनुकूलित करने की सलाह दी जाती है।