FFMPEG-实现PDF和视频互转

2021-12-17  本文已影响0人  来自知乎的一只小胖子

FFMPEG-实现PDF和视频互转

一只小胖子

[互联网运营 | 直播电商 | 广告行业] 从业者

2 人赞同了该文章

一.基础使用说明:

ffmpeg 来实现: 视频与图片间的相互转换,以及对视频文件的裁剪合并等.

1.视频转图片

ffmpeg -i out.flv -r 1 -f image2 image-%3d.jpeg  

## -r 1 转换图片的帧率(1s一张)## -f image2 多媒体文件格式ffmpeg -i 1.mp4 -r 1 -f image2 image-%3d.jpeg## -r 1 :帧率,每秒钟转出一张图片## -f : 将输入文件 转成 image2

2.图片转视频

ffmpeg -i image-%3d.jpeg -r 10 out.mp4## 提取9张图片ffmpeg -i 2.ts -r 1 -ss 00:00:00 -t 9 %3d.jpeg
ffmpeg -i 1.ts -r 1 -f image2 image-%3d.jpeg   ## -r 10 1张图片10帧## 指定转换参数ffmpeg -f image2 -i image-%3d.jpeg -vcodec libx264 image.mp4

ffmpeg -r 1/5 -i image%1d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

3.裁剪及合并

## 裁剪
ffmpeg -i 1.mp4 -ss 00:00:02 -t 3 out.ts

## ss : 视频的其实时间
## -t : 时长

## 合并
ffmpeg -f concat -i input.txt put.mp4

## -f concat : 告诉 ffmpeg 将后面的文件合并到一起

## input.txt : 要合并的列表
file '1.ts'
file '2.ts'

二.pdf生成mp4示例:

1.网页生成PDF

可以使用Python脚本生成多网页对应的多PDF文件,具体的使用可参考如下链接:

Python爬虫新手入门教学(八):爬取论坛文章保存成PDFwww.jianshu.com/p/cf13b704a44f

2.PDF生成图片

方案1:

这里使用mutool生成图片,你也可选用PDF阅读器来生成多个图片(具体看你PDF阅读器的支持)

## 如下命令指定了PDF文件输出格式,输出为带页码的图片,要进行PDF转换页码为1,3,4,5-12页

## 示例一:
mutool convert -F png -o myfile-%d.png ./轻松Scrum之旅.pdf(全文路径) 1,3,4,5-12

## 示例二:
mutool draw -F png -o myfile-%d.png ./轻松Scrum之旅.pdf(全文路径) 1,3,4,5-12

Mutool工具的相关配置及使用,请参考如下:

一只小胖子:实践-SuperMemo-PDF文档图片增量(一)4 赞同 · 3 评论文章

方案2:

使用 imagemagick 包中的convert命令,在如下命令行中我们指定了dpi参数,其它参数和具体的下载/使用请参考:

https://imagemagick.org/imagemagick.org/

PDF to PNG’s

convert -density 400 input.pdf pic.png

This will create one picture for every PDF page with the following naming convention pic-<NUM>.


3.图片生成视频

(1).PNG’s to MP4

ffmpeg -r 1/5 -i pic-%02d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

(2).Scale the Movie

As the final movie was >4k, my TV wasn’t able to play it, so I in the last step I had to scale it down to an appropriate resolution of 720p:

ffmpeg -i out.mp4 -vf scale=-1:720  out_720p.mp4

Voila, the final movie plays every page for 5 seconds with a frame rate of 30 frames per second and a horizontal resolution of 720 pixels. 相关参考如链接如下:

https://www.everythingcli.org/convert-pdf-to-mp4/www.everythingcli.org/convert-pdf-to-mp4/

三.mp4生成pdf示例:

使用moviepy插件读取视频,并按固定帧数提取图片,对图片直接使用pdf的处理包进行合并即可.

moviepy-cn 文档doc.moviepy.com.cn/

1.取视频至图片
from moviepy.editor import VideoFileClip# 读取视频文件clip = VideoFileClip("demo.mp4")# 以每秒20帧的方式获取图片帧for i, img in enumerate(clip.iter_frames(fps=20)):
  # todo 对图片进行识别
2.合图片至PDF

你可以直接使用支持该操作的PDF阅读器,或使用python下的pdf 处理库mupdf, 使用 mupdf 来读取所有图片至流并写入pdf文件即可,具体可参考mupdf的文档,这里不再详细说明. 参考链接:

MuPDF Documentationwww.mupdf.com/docs/index.html

使用在线服务

提示: 下面这里放置一个可用的工具(直接可以实现视频至PDF的转换,不用写代码!)

https://nsspot.herokuapp.com/videotopdf/nsspot.herokuapp.com/videotopdf/

四.其它学习参考: 利用Python做一个漂亮小姐姐词云跳舞视频

https://blog.csdn.net/fyfugoyfa/article/details/112209719blog.csdn.net/fyfugoyfa/article/details/112209719


我是一只热爱学习的小胖子,如果你也热爱学习,并且对SuperMemo感兴趣,欢迎转发和评论!

上一篇下一篇

猜你喜欢

热点阅读