x264/5 教程 HTML 版 附录

欢迎阅读!本教程仅算盲人摸象的业余分析,仅具备业余参考价值。若有什么不会的可以加群691892901点击图片即可更改桌面和移动端的适配排版

地图

  1. x264 教程网页版
  2. x265 教程网页版
  3. 附录 α:QAAC 音频压缩教程Github 副本
  4. 附录 β:x264,libx264,x265,libx265 压制教程急用版 Github 副本
  5. 附录 γ:ffprobe 教程Github 副本
  6. 附录 δ:ffprobe + Excel 绘制码率曲线,帧类型饼图
  7. 附录 ε:交错转逐行与 IVTC 处理
  8. 附录 ζ:图像序列的处理(你在这里)
  9. 相关:mpv 播放器的安装与设置

打印支持

推荐设置:彩色模式、不打印背景、0.04 英寸边距、打印页眉页脚

页数:A4 纸与 US Letter 信纸都需要打印 4 页。建议使用双面打印 + 侧面钉装,或只打印需要的部分以节约纸张。

处理图像序列

顾名思义,图像序列是一组分辨率对等,画面(应该)连贯的单图。

图像格式不限,但要注意一般情况下视频格式仅支持偶数分辨率。自带 FFMS2,Lavf 的 x264/5 可根据 Win/Linux 中的序号表达式,设定输入文件名 %0Nd 序号范围实现文件导入,0 指编号前有空白补位 0;N 即位数。Win/Linux 区别(应该)只有路径不同:

ffmpeg 还可以用 image2 解码器,搭配 start_number(起始序号)和 pattern_type(表达式类型)两个命令,以编解码图像序列。

其中,-pattern_type sequence 代表使用序号表达式 %0Nd-pattern_type glob 代表使用通配符 * 来匹配“部分文件名 + 通配符”,或者如上例仅使用通配符来选择所有匹配的文件

由于 Windows 系统对序号表达式 %0Nd 的支持略差,而批量修改几百个文件名也有搞乱顺序的风险,所以 ffmpeg 还可以用 concat 滤镜实现。首先创建 txt 列表并假设所有图片都是 2560x1440 分辨率:

注:实际情况下应注意图片的分辨率全部一致

帧率未知,以及不确定能不能跑通时,先做一个长 10 帧左右的列表副本来生成一段未压缩视频流排查:

然后运行该命令,确认了帧率后就能用 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 图片