由于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
最后补充一个@Ayse同学提供的gamma矫正:
-vf lutrgb=r=gammaval(0.45454545):g=gammaval(0.45454545):b=gammaval(0.45454545)