前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pdf到png再到mp4短视频:不需要工具,2个指令1键搞定

pdf到png再到mp4短视频:不需要工具,2个指令1键搞定

作者头像
程序员小助手
发布2020-06-04 10:50:34
1.3K0
发布2020-06-04 10:50:34
举报
文章被收录于专栏:程序员小助手程序员小助手

引言

说一个不太常用的需求,就是你有没有想过,把电脑上珍藏多年的PDF电子书,转换成视频文件,让大家学习。

为什么要视频,电子书不香吗?不香!因为这是短视频最好的时代,你不做成短视频,没有人愿意冷静而枯燥地阅读

今天分享的知识,就是如何快速地从pdf文档,制作为mp4短视频。搬好小板凳,准备开讲了哈!

学习时间

有一种快速方便的方法可以将PDF转换为一个或多个图像。命令行工具ImageMagick可以做到这一点。

你可以将整个PDF文档转换为单个图像,或者也可以选择将页面输出为一系列枚举图像文件

使用的时候,墙裂建议指定密度 -density 、抗锯齿 -antialias 和质量 -quality 选项,提高目标文件的转换质量

在下面的示例中,我们使用 -density 150、-quality 100和 -antialias 选项。ImageMagick 非常智能,它会根据输出文件扩展名自动匹配输出格式。

1 - 转换整个 PDF 文件为单张 PNG 图片

代码语言:javascript
复制
convert -density 150 -antialias "input_file_name.pdf" -append -resize 1024x -quality 100 "output_file_name.png"

这里的关键参数是 -append,PDF转换为单个图像或一系列图像时,效果会有所不同。

2 - 转换整个 PDF 文件为一系列图片

代码语言:javascript
复制
convert -density 150 -antialias "input_file_name.pdf" -resize 1024x -quality 100 "output_file_name.png"

此命令的结果是名为 out_file_name-0.png、out_file_name-1.png、out_file_name-0.png-2.png……一系列图像文件。

如果页数较多,那么使用多个数字的枚举文件名会很方便,这样便于排序。

你也可以用格式化的数字命名输出文件,如使用 %03d,得到的图片文件名数字部分都会是3位,不足的前置补零。

代码语言:javascript
复制
convert -density 150 -antialias "input_file_name.pdf" -resize 1024x -quality 100 "output_file_name-%03d.png"

3 - 仅转换指定页面

如果只是需要将某页转换输出为图片,这样写:

代码语言:javascript
复制
convert "input_file_name.pdf[1]" "output_file_name.png"

举一反三,如果是一些页码范围,就这么些:

代码语言:javascript
复制
convert "input_file_name.pdf[i-j]" "output_file_name.png"

这些选项很人性化,有没有?

图片到视频

有了图片,组装成视频就不是问题了。我们之前推出过一系列的文章,介绍了音视频处理领域的不二之选——ffmpeg。

单张图片生成一段视频,也是可以的,只是没有什么动效,体验很不好。我们加入生成的是多张序列化图片,比如上一节中所说的 output_file_name-%3d.png 那一系列图片,将其按照顺序合并入短视频,执行下面这行指令:

代码语言:javascript
复制
ffmpeg -r 1/5 -i output_file_name-%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

说一说参数的含义:

  • -r 1/5 表明对每张图片展示5秒钟;
  • -i output_file_name-%03d.png 指定一系列用作输入的图片;
  • -c:v libx264 表明输出视频使用 h264 编码格式;
  • -r 30 表明输出视频帧率 30 fps;
  • -pix_fmt yuv420p 使用 YUV pexel 格式;

是不是每一项的设置都那么有理有据?:-)

写在最后

对于特殊的要求,我们将需求拆解为细分的小步骤。通过每个小步骤的处理,将整个流程串联起来就完成了整个工作,这就是软件开发的流程。

实现的方式有很多。但是能够在特定的场合选中选择恰当的工具,这很重要。也对我们如何高效的工作提出了更高的要求。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 学习时间
  • 图片到视频
  • 写在最后
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档