我们采用asponse.slides工具解析ppt生成对应视频,步骤如下:
- ppt解析成图片
2.为每一页图片插入对应讲解音频
3.最后通过ffmpeg合成完整视频
其中存的问题是asponse.slides解析ppt文档中的的动画效果该如何处理才能保持音视频同步
能否给出相关的代码解决案例或建议指导,谢谢!
我们采用asponse.slides工具解析ppt生成对应视频,步骤如下:
@chengzhi,
感谢您联系支持。
Aspose.Slides 可以以特定的每秒帧数(FPS)生成整个动画的一组帧。然后可以使用 FFmpeg 等工具使用这些帧来创建视频。下面的代码示例演示了将演示文稿导出为视频的操作,帧速率设置为 30 FPS:
final int FPS = 30;
Presentation presentation = new Presentation("sample.pptx");
try {
PresentationAnimationsGenerator animationsGenerator = new PresentationAnimationsGenerator(presentation);
try {
PresentationPlayer player = new PresentationPlayer(animationsGenerator, FPS);
try {
player.setFrameTick((sender, args) ->
{
try {
ImageIO.write(args.getFrame(), "PNG", new File("frame_" + sender.getFrameIndex() + ".png"));
} catch (IOException e) {
throw new RuntimeException(e);
}
});
animationsGenerator.run(presentation.getSlides());
} finally {
if (player != null) player.dispose();
}
} finally {
if (animationsGenerator != null) animationsGenerator.dispose();
}
} finally {
if (presentation != null) presentation.dispose();
}
很遗憾,我无法向您建议如何为每一页的图像插入相应的音频解释,并同步音频和视频。
com.aspose.slides.exceptions.ArgumentException: Culture Name: zh-CN-#Hans is not a supported culture
我在解析ppt生成图片的时候出现此问题,版本使用的是apsone.slides的版本是24.4
已经处理,程序执行开头设置了语言区域支持
Locale locale = new Locale(“zh”, “cn”);
Locale.setDefault(locale);
这个技术点对我们公司很重要,希望贵公司内部寻找下一些解决方案。目前我想的是否可以利用aspose.slides接口动态插入音频,然后aspose.slides提供另存为视频的能力接口,这样就可以直接转视频了,不知贵公司aspose.slides是否有这个能力,谢谢!
@andrey.potapov
您好,我用您给的例子采用帧生成的图片,有些图片被截取了,如图:
image.png (185.8 KB)
完整的图片效果如图:
image.jpg (128.0 KB)
arguments.getFrame() 这个获取的图片宽度被截断了。
核心代码设计实现如下:
Locale locale = new Locale("zh", "cn");
Locale.setDefault(locale);
Presentation presentation = new Presentation(pptPath);
int pageSize = presentation.getSlides().size();
final int fps = 120;
for(int i = 0; i < pageSize; i ++) {
ISlide slide = presentation.getSlides().get_Item(i);
Presentation presentationPage = new Presentation();
presentationPage.getSlides().addClone(slide);
PresentationAnimationsGenerator animationsGenerator = new PresentationAnimationsGenerator(presentationPage);
PresentationPlayer player = new PresentationPlayer(animationsGenerator, fps);
final int pageNo = i;
player.setFrameTick((sender, arguments) -> {
String frame = String.format("/Users/chengzhi/myfile/convertppt/page%d_frame_%04d.png", pageNo, sender.getFrameIndex());
try {
ImageIO.write(arguments.getFrame(), "PNG", new java.io.File(frame));
} catch (IOException e) {
throw new RuntimeException(e);
}
});
animationsGenerator.run(presentationPage.getSlides());
if (player != null) player.dispose();
if (animationsGenerator != null) animationsGenerator.dispose();
}
您可以给予一些修改意见吗?谢谢!!
@chengzhi,
当您使用Aspose.Slides创建新演示文稿时,默认幻灯片尺寸为720 x 540。您提供的PowerPoint演示文稿中的幻灯片具有不同的尺寸。因此,在克隆幻灯片之前,您应该在新创建的演示文稿中设置相同的幻灯片尺寸。
Presentation presentation = new Presentation(pptPath);
Dimension2D slideSize = presentation.getSlideSize().getSize();
float slideWidth = (float) slideSize.getWidth();
float slideHeight = (float) slideSize.getHeight();
...
...
Presentation presentationPage = new Presentation();
presentationPage.getSlides().removeAt(0);
presentationPage.getSlideSize().setSize(slideWidth, slideHeight, SlideSizeScaleType.DoNotScale);
presentationPage.getSlides().addClone(slide);
@andrey.potapov
按照您给的代码修改,尺寸问题已解决,非常感谢
!!但是有些动画效果丢失了,是不是本身在支持上存在缺陷,是否可以进一步优化调整修改。
这个是原文档:
AI做课.pptx.zip (2.6 MB)
生成的最后视频动画效果:
课件合成.mp4.zip (1.4 MB)
看在动画获取上有没有一些代码修改上的意见。谢谢!!!
@chengzhi,
谢谢您的指出。我已经重现了您提到的动画问题。
我们在内部问题跟踪系统中开启了以下新的工单,并将按照 Free Support Policies 中提到的条款解决它们。
Issue ID(s): SLIDESJAVA-39462
您可以通过 Paid Support Services 获得支持,如果您需要优先支持,还可以直接联系我们的付费支持管理团队。
@andrey.potapov
感谢您的回复!请问这个 Free Support Policies如果解决这个问题,大概需要多久?这个需求是我们的核心需求,现在做技术验证,如果可以实现就向公司汇报,下一步应该就是采购。期待您的答复,谢谢!!!
@andrey.potapov
您好,请问下aspose.slides for java 这个产品可以独立购买吗?如果购买后,这个问题是不是可以提前纳入日程去规划解决?公司想针对这个问题进行商务上的洽谈,请问可以咨询谁,能否提供一下联系方式或者渠道?谢谢!!
@chengzhi,
您可以在Aspose.Purchase论坛上联系我们的销售团队以获取Aspose.Slides for Java。您也可以通过联系Paid Support Services来优先处理问题。
The issues you found earlier (filed as SLIDESJAVA-39462) have been resolved in Aspose.Slides for Java 25.5 (Maven, JAR).
You can check all fixes on the Release Notes page.
You can also find the latest version of our library on the Product Download page.