欢迎阅读!本教程仅算盲人摸象的业余分析,仅具备业余参考价值。若有什么不会的可以加群691892901。点击图片即可更改桌面和移动端的适配排版。
推荐设置:彩色模式、不打印背景、0.04 英寸边距、打印页眉页脚
页数:A4 纸与 US Letter 信纸都需要打印 4 页。建议使用双面打印 + 侧面钉装,或只打印需要的部分以节约纸张。
顾名思义,图像序列是一组分辨率对等,画面(应该)连贯的单图。
图像格式不限,但要注意一般情况下视频格式仅支持偶数分辨率。自带 FFMS2,Lavf 的 x264/5 可根据 Win/Linux 中的序号表达式,设定输入文件名 %0Nd 序号范围实现文件导入,0 指编号前有空白补位 0;N 即位数。Win/Linux 区别(应该)只有路径不同:
x264 <参数> --fps 30 --output /home/tmp/导出视频.mp4 /home/tmp/图片%02d.png
x264 <参数> --fps 30 --output D:\tmp\导出视频.mp4 D:\tmp\图片%02d.png
ffmpeg 还可以用 image2 解码器,搭配 start_number(起始序号)和 pattern_type(表达式类型)两个命令,以编解码图像序列。
ffmpeg -hide_banner -r 30 -f image2 -start_number 0 -pattern_type sequence -i F:\图%02d.jpg "F:\视.mp4"
ffmpeg -hide_banner -r 30 -f image2 -start_number 0 -pattern_type glob -i F:\*.bmp "F:\频.mp4"
其中,-pattern_type sequence
代表使用序号表达式 %0Nd,-pattern_type glob
代表使用通配符 * 来匹配“部分文件名 +
通配符”,或者如上例仅使用通配符来选择所有匹配的文件
由于 Windows 系统对序号表达式 %0Nd 的支持略差,而批量修改几百个文件名也有搞乱顺序的风险,所以 ffmpeg 还可以用 concat 滤镜实现。首先创建 txt 列表并假设所有图片都是 2560x1440 分辨率:
注:实际情况下应注意图片的分辨率全部一致
帧率未知,以及不确定能不能跑通时,先做一个长 10 帧左右的列表副本来生成一段未压缩视频流排查:
ffmpeg -loglevel 16 -hwaccel auto -y -hide_banner -f concat -safe 0 -r <帧率> -i "C:\图片列表.txt" -video_size 2560x1440 -an -pix_fmt yuv420p "C:\导出视频流_帧率x.yuv"
-f concat
代表选择 concat 滤镜以组合图片为视频帧-safe 0
以解除绝对路径禁用限制('X:\文件夹\'的路径格式,不规范或不安全之类的)-r
代表设置帧率-video_size
设定分辨率(旧版 ffmpeg 则是 -s)-an
代表关闭音频编码-pix_fmt
选择和图片格式匹配的色彩空间(通过播放器或 MediaInfo 查看)然后运行该命令,确认了帧率后就能用 ffmpeg pipe x264 或 x265,ffmpeg 内置的 libx264 或 libx265 编码了。以下为 ffmpeg 内置 libx264 的例子:
ffmpeg.exe -loglevel 16 -hwaccel auto -y -hide_banner -f concat -safe 0 -r 15 -i "C:\导入图片列表.txt" -video_size 2560x1440 -an -pix_fmt yuv420p -x264-params "rc-lookahead=33: me=umh:bframes=12:b-adapt=2: subme=9:merange=48:fast-pskip=0:direct=auto:weightb=1:keyint=230:min-keyint=3:ref=3: crf=19:qpmin=9:chroma-qp-offset=-3:aq-mode=3:aq-strength=1.1:trellis=2:deblock=0,-1:psy-rd=0.5:0.3:nr=4" "C:\导出视频帧列表_x264_帧率15.mp4"
以及 libx265 的例子:
ffmpeg.exe -loglevel 16 -hwaccel auto -y -hide_banner -f concat -safe 0 -r 15 -i "C:\导入图片列表.txt" -video_size 2560x1440 -an -pix_fmt yuv420p -x265-params "ctu=64:tu-intra-depth=4:tu-inter-depth=4:limit-tu=1:me=star:subme=3:merange=48:weightb=1:ref=3:max-merge=4:open-gop=0:min-keyint=3:keyint=230:fades=1:bframes=8:b-adapt=2:radl=3:constrained-intra=1:b-intra=1:crf=22.8:qpmin=8:crqpoffs=-3:ipratio=1.2:pbratio=1.5:rdoq-level=2:aq-mode=4:aq-strength=1:qg-size=8:rd=3:limit-refs=0:rskip=0:rc-lookahead=33:rect=1:amp=1:psy-rd=2:qp-adaptation-range=3:deblock=0,-1:limit-sao=1:sao-non-deblock=1:selective-sao=3:hash=2:allow-non-conformance=1" "C:\导出视频帧列表_x265_帧率15.mp4"
如果是要从视频导出图片序列,则可以用 ffmpeg-image2 解码器导入视频,指定图片格式导出。以下为 Linux Bash 路径的例子:
ffmpeg.exe -loglevel 16 -hwaccel auto -y -hide_banner -i 导入视频.avi -r 1 -f image2 -start_number 0 -pattern_type sequence -fps_mode cfr /home/tmp/图片%03d.jpg
注:从视频导出图片序列能够帮助快速地制作高清 GIF 图片