Python

#️⃣ Python | 批量重命名&ffmpeg合成视频

by ERIN.Z, 2022-11-25


由于Houdini的MPlay导出写入总是失败,用ffmpeg合成一下视频~

批量重命名

Houdini导出时命名没写好,这里首先把命名更改一下以便ffmpeg识别。

import os
filename = '文件夹路径'
list_path = os.listdir(filename)

count = 1
for index in list_path:
    path = filename + "\\" + index
    new_path = filename + '\\' + f'新命名{count}.png'
    os.rename(path,new_path)
    count+=1

ffmpeg配置

ffmpeg下载链接🔗 我这里下的windows build完成的版本。解压后将.../ffmpeg/bin添加到Path环境变量即可。 在终端输入:

$ ffmpeg -version

能够显示版本信息即配置完成~

序列帧合成视频

在终端,首先cd进入到序列帧文件夹。

ps 一般打开终端都是在C盘,如果切盘的话要 cd /d path才可以噢。 执行如下名令即可合成视频:

$ ffmpeg -i name%d.png output.mp4
  • 输入文件:-i name%d.png 序列帧命名,%d是数字编号占位符;若使用%04则会用零填充至4位,如0001,0002,....
  • 输出文件:output.mp4 输出的视频命名

输入和输出是必须的两个参数,这样所有的视频参数都会使用ffmpeg的默认参数。在输入输出的前后可以添加更多参数以进行控制,大体顺序如下:

$ ffmpeg [全局参数] [输入参数] 输入文件 [输出参数] 输出文件

常用参数:

  • -r 60 Rate帧率设置为60fps。默认为25 注意,-r参数放在-i前,则ffmpeg根据设定的帧率读入图片;放在-i后,则ffmpeg只会改变输出视频的帧率。
  • crf Constant Rate Factor视频质量, 取值0-51,默认23;取值越小质量越高。
  • -c:v/-vcodec Codec of Vedio编码格式,MP4默认h264(参数写libx264).可以使用libx265以生成同等质量文件更小的h265视频。
  • -s Scale分辨率,默认为图片尺寸。
  • -pix_fmt yuv420p 像素格式。视频压缩采用YUV颜色编码(Luminence Luma&Chrominance chroma).YUV4:4:4每个Y分量对应自己的UV分量;YUV4:2:2两个Y分量共用一套UV分量;YUV4:2:0四个Y分量共用一套UV分量。444高保真,但一些播放器不兼容;420最常用。

这次视频用到的命令如下:

$ ffmpeg -r 60 -i WCSPH%d.png -crf 15 -pix_fmt yuv420p output.mp4

WCSPH297.png (不放视频了,等做完再写博客!)

最后补充一个@Ayse同学提供的gamma矫正:

-vf lutrgb=r=gammaval(0.45454545):g=gammaval(0.45454545):b=gammaval(0.45454545)

by ERIN.Z

2024 © typecho & elise