Chuyển đổi PPT sang video

Khi bạn chuyển đổi PowerPoint thành video, bạn sẽ tăng khả năng truy cập và có lượng khán giả lớn hơn cho bản trình bày hoặc nội dung của mình. Định dạng video MP4 là định dạng tệp cực kỳ phổ biến, vì vậy, nhiều người sẽ thấy việc mở hoặc phát video của bạn dễ dàng hơn so với định dạng PPT tệp. Hơn nữa, hầu hết mọi người xem và sử dụng video nhiều hơn các dạng nội dung khác nên video của bạn có khả năng thu hút lượng người xem lớn hơn so với bản trình bày.

PowerPoint sang Video trong Java

Khi bạn đọc xong bài viết này, bạn sẽ học được cách chuyển đổi PowerPoint thành video trong Java.

API Java để chuyển đổi PPT thành video

Tạo video trong PowerPoint

Để chuyển đổi bản trình bày PowerPoint thành video theo chương trình, bạn cần:

  • Một API để tạo một bộ khung từ các trang trình bày. Chúng tôi khuyên dùng Aspose.Slides dành cho Java. Aspose.Slides for Java for là một API phổ biến để tạo, chỉnh sửa, chuyển đổi và thao tác với bản trình bày PowerPoint (không có Microsoft PowerPoint hoặc Office). Để cài đặt Aspose.Slides for Java, hãy xem Cài đặt.
  • Và một API khác để tạo video dựa trên các khung đã tạo. Chúng tôi khuyên dùng ffmpeg (dành cho Java).

Thông tin: Aspose đã phát triển trình chuyển đổi PowerPoint sang video miễn phí cho phép bạn tạo các video tuyệt đẹp từ bản trình bày. Trình chuyển đổi này về cơ bản là triển khai trực tiếp quá trình chuyển đổi PowerPoint sang video.

Chuyển đổi PPT thành Video trong Java

  1. Thêm phần này vào tệp POM của bạn:
   <dependency>
     <groupId>net.bramp.ffmpeg</groupId>
     <artifactId>ffmpeg</artifactId>
     <version>0.7.0</version>
   </dependency>
  1. Tải xuống ffmpeg tại đây.

  2. Chạy mã Java PowerPoint to video.

Mã Java này chỉ cho bạn cách chuyển đổi PPT thành video:

Presentation presentation = new Presentation();
try {
    // Thêm hình dạng nụ cười và sau đó tạo hoạt ảnh cho nó
    IAutoShape smile = presentation.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.SmileyFace, 110, 20, 500, 500);
    ISequence mainSequence = presentation.getSlides().get_Item(0).getTimeline().getMainSequence();
    IEffect effectIn = mainSequence.addEffect(smile, EffectType.Fly, EffectSubtype.TopLeft, EffectTriggerType.AfterPrevious);
    IEffect effectOut = mainSequence.addEffect(smile, EffectType.Fly, EffectSubtype.BottomRight, EffectTriggerType.AfterPrevious);
    effectIn.getTiming().setDuration(2f);
    effectOut.setPresetClassType(EffectPresetClassType.Exit);

    final int fps = 33;
    ArrayList<String> frames = new ArrayList<String>();

    PresentationAnimationsGenerator animationsGenerator = new PresentationAnimationsGenerator(presentation);
    try
    {
        PresentationPlayer player = new PresentationPlayer(animationsGenerator, fps);
        try {
            player.setFrameTick((sender, arguments) ->
            {
                try {
                    String frame = String.format("frame_%04d.png", sender.getFrameIndex());
                    ImageIO.write(arguments.getFrame(), "PNG", new java.io.File(frame));
                    frames.add(frame);
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            });
            animationsGenerator.run(presentation.getSlides());
        } finally {
            if (player != null) player.dispose();
        }
    } finally {
        if (animationsGenerator != null) animationsGenerator.dispose();
    }

    // Định cấu hình thư mục nhị phân ffmpeg. Xem trang này: https://github.com/rosenbjerg/FFMpegCore#installation
    FFmpeg ffmpeg = new FFmpeg("path/to/ffmpeg");
    FFprobe ffprobe = new FFprobe("path/to/ffprobe");

    FFmpegBuilder builder = new FFmpegBuilder()
            .addExtraArgs("-start_number", "1")
            .setInput("frame_%04d.png")
            .addOutput("output.avi")
            .setVideoFrameRate(FFmpeg.FPS_24)
            .setFormat("avi")
            .done();

    FFmpegExecutor executor = new FFmpegExecutor(ffmpeg, ffprobe);
    executor.createJob(builder).run();
} catch (IOException e) {
    e.printStackTrace();
}

Áp dụng hiệu ứng và hoạt ảnh trong video

PowerPoint cho phép bạn áp dụng hoạt ảnh cho nội dung của bản trình bày và cũng sử dụng hiệu ứng chuyển tiếp giữa các trang chiếu. Những hiệu ứng đó làm cho bài thuyết trình (đặc biệt là ở dạng trình chiếu) hấp dẫn và thú vị hơn. Khi bạn chuyển đổi bản trình bày PowerPoint thành video, bạn nên sử dụng các hiệu ứng tương tự trong video thu được và Aspose.Slides cho phép bạn thực hiện chính xác điều đó.

Để minh họa việc sử dụng các hiệu ứng và hoạt ảnh trong video, hãy thêm một trang chiếu khác và chuyển sang mã cho bản trình bày trong phần trước theo cách này:

// Thêm hình dạng nụ cười và tạo hoạt ảnh cho nó

// ...

// Thêm một trang trình bày mới và chuyển đổi hoạt ảnh

ISlide newSlide = presentation.getSlides().addEmptySlide(presentation.getSlides().get_Item(0).getLayoutSlide());

newSlide.getBackground().setType(BackgroundType.OwnBackground);

newSlide.getBackground().getFillFormat().setFillType(FillType.Solid);

newSlide.getBackground().getFillFormat().getSolidFillColor().setColor(Color.MAGENTA);

newSlide.getSlideShowTransition().setType(TransitionType.Push);

Sau đó, chúng tôi tạo hoạt ảnh cho các đoạn văn trên các đối tượng để làm cho các đối tượng đó lần lượt xuất hiện (với độ trễ giữa các lần xuất hiện được đặt thành một giây):

Presentation presentation = new Presentation();
try {
    // Thêm văn bản và hình ảnh động
    IAutoShape autoShape = presentation.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 210, 120, 300, 300);
    Paragraph para1 = new Paragraph();
    para1.getPortions().add(new Portion("Aspose Slides for Java"));
    Paragraph para2 = new Paragraph();
    para2.getPortions().add(new Portion("convert PowerPoint Presentation with text to video"));

    Paragraph para3 = new Paragraph();
    para3.getPortions().add(new Portion("paragraph by paragraph"));
    IParagraphCollection paragraphCollection = autoShape.getTextFrame().getParagraphs();
    paragraphCollection.add(para1);
    paragraphCollection.add(para2);
    paragraphCollection.add(para3);
    paragraphCollection.add(new Paragraph());

    ISequence mainSequence = presentation.getSlides().get_Item(0).getTimeline().getMainSequence();
    IEffect effect1 = mainSequence.addEffect(para1, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    IEffect effect2 = mainSequence.addEffect(para2, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    IEffect effect3 = mainSequence.addEffect(para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);
    IEffect effect4 = mainSequence.addEffect(para3, EffectType.Appear, EffectSubtype.None, EffectTriggerType.AfterPrevious);

    effect1.getTiming().setTriggerDelayTime(1f);
    effect2.getTiming().setTriggerDelayTime(1f);
    effect3.getTiming().setTriggerDelayTime(1f);
    effect4.getTiming().setTriggerDelayTime(1f);

    final int fps = 33;
    ArrayList<String> frames = new ArrayList<String>();

    PresentationAnimationsGenerator animationsGenerator = new PresentationAnimationsGenerator(presentation);
    try
    {
        PresentationPlayer player = new PresentationPlayer(animationsGenerator, fps);
        try {
            player.setFrameTick((sender, arguments) ->
            {
                try {
                    String frame = String.format("frame_%04d.png", sender.getFrameIndex());
                    ImageIO.write(arguments.getFrame(), "PNG", new java.io.File(frame));
                    frames.add(frame);
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            });
            animationsGenerator.run(presentation.getSlides());
        } finally {
            if (player != null) player.dispose();
        }
    } finally {
        if (animationsGenerator != null) animationsGenerator.dispose();
    }

    // Định cấu hình thư mục nhị phân ffmpeg. Xem trang này: https://github.com/rosenbjerg/FFMpegCore#installation
    FFmpeg ffmpeg = new FFmpeg("path/to/ffmpeg");
    FFprobe ffprobe = new FFprobe("path/to/ffprobe");

    FFmpegBuilder builder = new FFmpegBuilder()
            .addExtraArgs("-start_number", "1")
            .setInput("frame_%04d.png")
            .addOutput("output.avi")
            .setVideoFrameRate(FFmpeg.FPS_24)
            .setFormat("avi")
            .done();

    FFmpegExecutor executor = new FFmpegExecutor(ffmpeg, ffprobe);
    executor.createJob(builder).run();
} catch (IOException e) {
    e.printStackTrace();
}

Nhận giấy phép miễn phí

Nếu bạn đang muốn dùng thử không giới hạn các tính năng của Aspose.Slides, chúng tôi khuyên bạn nên nhận giấy phép tạm thời miễn phí.

Phần kết luận

Chúng tôi tin rằng bây giờ bạn đã biết cách chuyển đổi PPT thành video và cũng có thể áp dụng hoạt ảnh, hiệu ứng chuyển tiếp và các hiệu ứng khác trong công việc của mình.

Để tìm hiểu thêm về [tính năng] của Aspose.Slides(https://docs.aspose.com/slides/java/features-overview/), hãy xem [tài liệu] của chúng tôi(https://docs.aspose.com/slides/java/). Nếu có câu hỏi, bạn có thể đăng lên diễn đàn của chúng tôi.

Xem thêm