ffmpeg和ImageMagick使用


ffmpeg这个库主要是用于视频,音频等方面的剪辑。
ImageMagick这个库主要用于图片方面的编辑。
Ghostscript是PostScript®语言和PDF文件的解释器,可以用来进行pdf文件的处理(ImageMagick库中也包含了这个库)

💖1. ffmpeg

Fmpeg 是领先的多媒体框架,能够解码、编码、转码、混合、解密、流媒体、过滤和播放人类和机器创造的几乎所有东西。它支持最晦涩的古老格式,直到最尖端的格式。无论它们是由某个标准委员会、社区还是公司设计的。它还具有高度的便携性。
FFmpeg 可以在 Linux、Mac OS X、Microsoft Windows、BSDs、Solaris 等各种构建环境、机器架构和配置下编译、运行,并通过测试基础设施 FATE。
它包含了 libavcodec、libavutil、libavformat、libavfilter、libavdevice、libswscale 和 libswresample,可以被应用程序使用。还有 ffmpeg、ffplay 和 ffprobe,可以被终端用户用于转码和播放。
开源视频播放器potplayer中就使用了ffmpeg插件

1.1 安装

1.1.1 windows

访问:http://www.ffmpeg.org/download.html#build-windows,在windows的选择列表中选择Windows builds from gyan.dev,这个gyan.dev其实就是个网站,维护下载的一个网站。。。当进入https://www.gyan.dev/ffmpeg/builds/这个网页后,建议下载release版本的。
在这里插入图片描述
下载之后解压双击安装即可。

另外,建议将XXXX/ffmpeg/bin这个目录添加到系统路径,这样就可以在任意地方进行访问了。

1.1.2 linux

参考:The Complete Guide for Using ffmpeg in Linux

# install
sudo add-apt-repository universe
sudo apt update
sudo apt install ffmpeg

# check if install ok
ffmpeg

1.2 常见用法

1. 合并多个视频(例如ts文件)

参考:使用ffmpeg合并多个视频文件

2. 视频抽帧

ffmpeg -i video/1.mp4  -r 3 -q:v 2 -f image2 image/pic-%03d.jpg
# -i 输入文件
# -r 抽帧频率(1s抽几帧) 
# -f 生成图片格式(控制图像质量)
# 最后就是输出

一般网上看到的都是这条命令,但是参数确没什么人解释。。。无语,直接

ffmpeg --help / -h
# 就可以看到帮助文档了 但是只能看到一部分,而且看到的这部分里没有-i参数

ffmpeg -h long
# 看到更多的选项

ffmpeg -h full>text.txt
# 打印出所有帮助信息,超级长 可以使用重定向符号,把输出的结果不打印在屏幕上,而是存到一个text.txt文件里,这样看起来或者检索都会方便很多

ffmpeg -h type=image2
# 查看指定内容的帮助文件

-h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocol                       See man ffmpeg for detailed description of the options. 

这里只解释和上面命令相关的命令

ffmpeg 
-i /data/video_1.mp4 
-f image2  
-vf fps=fps=1/60 
-qscale:v 2 
/data/mp4-%05d.jpeg

-i infile 输入文件路径
-f   fmt   force format 强制格式要求
-vf filter_graph    set video filters 抽帧频率

# 可以使用下面的命令查看所有可用的filters
ffmpeg -filters>filters.text
# 依旧将输出的帮助文档信息重定向到一个文本文件中
# 搜索得到参数:强制使用常数作为帧速率
 fps      V->V       Force constant framerate.
# 同理,查看formats
-formats  show available formats

ffmpeg -formats>formats.text
# 搜索得到image2的信息
DE image2          image2 sequence(类似flv一样,也是一种格式)

-q q                use fixed quality scale (VBR)
-qscale q           use fixed quality scale (VBR) 固定图像质量
-c codec            codec name
-codec codec        codec name
-dcodec codec       force data codec ('copy' to copy stream)
-vcodec codec       force video codec ('copy' to copy stream)

3. 合并两个视频

以下内容来自:FFmpeg合并多个mp4视频文件

  1. 如果想把两个视频合并为一个,且两个视频是左右同时播放的,可以用命令:
    ffmpeg -i 11.mp4 -i 22.mp4 -filter_complex hstack output.mp4
    
  2. 如果想把两个视频合并为一个,且两个视频是串起来顺序播放,可以用如下两种命令:
    	ffmpeg -i 11.mp4 -i 22.mp4 -filter_complex "[0:v] [0:a] [1:v] [1:a]\
    concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output.mp4
    

4. gif和mp4格式互转

gif to mp4

D:\software\ffmpeg\bin\ffmpeg -i 粗细问题.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" boldThin.mp4
# movflags – 这个参数优化mp4文件的结构,以便播放器可以快速加载
# pix_fmt – mp4视频用哪种格式存储像素。一般选择一种可以被所有播放器支持的格式,比如:yuv420p
# vf – mp4格式的视频使用H.264,需要保证视频大小是可以被2整除的,这个参数用来保证这一点


# 下面这句转出来的mp4视频无法播放
D:\software\ffmpeg\bin\ffmpeg -i 粗细问题.gif boldThin.mp4 

mp4 to gif

ffmpeg -ss 30 -t 3 -i input.mp4 \
    -vf "fps=10,scale=320:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \
    -loop 0 output.gif
  • -ss, skip seconds,跳过前30s
  • -t 3 创建1个3s的输出
  • fps设置每秒的帧率,fps=10每秒10帧
  • scale把输出resize到320 pixel宽,根据原始输入的高宽比自动计算高度。使用的是lanczos 缩放算法
  • palettegenpaletteuse会基于输入生成一个个性化的色盘(palette )

如果转出来的gif不是很清晰,可以直接

ffmpeg -i BézierCurves5.mov -loop 0 output5.gif

不设置其他参数的时候,都是按照和输入一样的去操作的,清晰度就会和输入的视频一致


如果想要调节播放的倍速,根据FFmpeg 音视频倍速控制,可以

# 添加 -filter:v "setpts=0.5*PTS" 这个参数即可
ffmpeg -i python.gif -t 30 -filter:v "setpts=0.5*PTS" -loop 0 python30.gif

参考:

🎂2. ImageMagick

官方网站参考:

2.1 关于安装

以windows为例,官网上的说明,大意是:

  1. imagemagick这个包支持大部分的windows系统版本,大部分应该都是64位,
  2. 位深,有8位,16位的,但是后者比前者对资源消耗更高,需要安装符合自己系统版本的文件。
  3. 另外,还有静态和动态的区别,建议下载静态。因为dll动态是将这个imagemagick作为一个dll链接库进行使用的。

查看系统的位深度:桌面右击->显示设置->显示tab下->高级显示设置->位深度。
在这里插入图片描述
一般下载的是
在这里插入图片描述
或者直接下载一个便携版,解压就可以用,不用安装,不用注册
在这里插入图片描述

2.2 验证是否安装成功

记住刚刚解压文件的位置,可以看到imagemagick文件夹中有一个magick.exe文件,在命令行切换到这个文件夹,输入以下命令(每次输一个就行):

magick logo: logo.gif
magick identify logo.gif
magick logo.gif win:

有反应就代表成功了,类似
在这里插入图片描述

2.3 报错解决

1. convert: FailedToExecuteCommand `“gswin64c.exe”

参考:

报错信息中的gswin32c.exe指得就是Ghostscript,下载这个东西,进行安装。

2.4 常见用法

1.pdf转图片(高清)

参考:ImageMagick 将PDF转图片命令

官方说明中提了一嘴,建议在windows下路径用双引号,而不是单引号扩住。

magick convert -density 300 -quality 100 "C:\shaiic_work\其他信息\xxx.pdf" "C:\shaiic_work\其他信息\testpdf.jpg"

然后就可以产生高清图片了

3. Ghostscript

3.1 安装

Ghostscript是PostScript®语言和PDF文件的解释器,可以用来进行pdf文件的处理(ImageMagick库中也包含了这个库)

安装,以mac为例,一般可以通过MacPorts 或者 Homebrew,这里为了简便直接使用Homebrew进行安装

brew install ghostscript

其余安装详见: How to Install Ghostscript

  • windows有现成的封装好的exe包
  • linux一般需要自己编译,也有现成的rpm包可以用

3.2 压缩pdf文件

以下对于扫描版的pdf压缩有效,如果本身就是非扫描版的可编辑的pdf,使用以下命令其实没什么效果。

使用以下 Ghostscript 命令

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf

-sDEVICE=pdfwrite 规定输出是矢量不是位图输出
-dCompatibilityLevel=1.4 表示目标阅读器是否可以支持PDF1.4的透明对象,是对pdf格式的兼容级别的规定 一般ebook是1.5
-dPDFSETTINGS=configuration
`/screen` selects low-resolution output similar to the Acrobat Distiller (up to version X) "Screen Optimized" setting.
`/ebook` selects medium-resolution output similar to the Acrobat Distiller (up to version X) "eBook" setting.
`/printer` selects output similar to the Acrobat Distiller "Print Optimized" (up to version X) setting.
`/prepress` selects output similar to Acrobat Distiller "Prepress Optimized" (up to version X) setting.
`/default` selects output intended to be useful across a wide variety of uses, possibly at the expense of a larger output file.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吨吨不打野

解决了问题,觉得还行就给点

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值