四季尘封之时

今天研究的是视频的变帧技术,感谢kite神触的指点~

本教程不是给纯小白,新手阅览的,请具备一定压制,封装和剪辑技术后再阅读~

本技术需要用到以下软件:x264,ffmpeg,mp4box

 

首先从x264开始,如果想要进行视频的变帧必须要先生成时间码文件。时间码文件需要通过x264导出

需要注意的是,帧率最好是整数帧,否则后面处理起来可能会比较麻烦

导出时间码的参数是:--tcfile-out

x264中生成时间码文件的指令集是:

x264 "(绝对\相对路径).视频文件(输入文件)" --tcfile-out "(绝对\相对路径).txt(时间码文件输出)" -o "(绝对\相对路径).视频文件(输出文件)"

 

时间码需要生成两个甚至更多个,取决于你需要变帧的分段数。

变帧实际上就是将一个视频切成多个分段,并且导出这些不同帧率分段的时间码。

然后接下去就是修改时间码文件。这个地方是最难的部分,实际操作的时候也会明白为何咱前面说需要整数帧。

 

当你使用notepad++之类的软件打开时间码文件的时候(一定要用n++之类的软件,记事本打开排版会乱),会看到和下面差不太多的数据:

 

# timecode format v2
0.000000
33.333333
66.666667
100.000000
133.333333
166.666667
200.000000
233.333333
266.666667
300.000000
333.333333
366.666667
400.000000
433.333333
466.666667
500.000000
533.333333
566.666667
600.000000
633.333333
666.666667
700.000000
733.333333
766.666667
800.000000
833.333333
866.666667
900.000000
933.333333
966.666667
1000.000000

 

(由于这些数据过多,所以不全部列出)

 

实际上呢,这些数据可以不去理解它的意义。

打开n++的时候会看到左边的行数,当你把右边的滑块拉到最底下的时候,你可以发现左边的行数竟然就是视频的总帧数-1!

实际上左边的行数确实就是有几帧就有几行,但是由于第一行有一个“# timecode format v2”字样的注释,所以才会多出来一行。

这没关系,这个注释最好不要删除。现在你可以自由的进行编辑了。

不过千万不要忘记换算和总帧数!如果你编辑的总帧数与原视频的总帧数不同的话,视频可能会出现意想不到的问题!

 

接下去就是使用“--frames(总渲染帧数)[数字]”参数和“--seek(从该帧开始渲染)[数字]"参数进行分段的切割。

然后就是放到pr,ae或者其他可以自由修改持续时间的剪辑软件中进行剪辑。剪辑的时候需要注意,你的视频必须以所有分段中最小帧率的分段的帧率为基础帧,其他的分段只需要进行帧率换算然后放到正确的位置即可。

 

最后,你可以渲染并导出整个处理好的视频,这时候需要使用x264再进行一次最终的压制并且使用时间码控制整个视频的帧率!

导入时间码的参数是:--tcfile-in

整个最终压制的指令集是:

x264 "(绝对\相对路径).视频文件(输入文件)" --tcfile-in "(绝对\相对路径).txt(时间码文件输入)" -o "(绝对\相对路径).视频文件(输出文件) (其他参数)"

 

当你觉得所有的工作都准备妥当后,即可在命令行中输入你的x264指令集!

接下来只需要等待压制好之后,看效果就行啦~

如果并不是你需要的效果的话,请仔细检查你编辑后的时间码文件和处理后视频文件中的帧率。

 

当你觉得这个视频已经成功变帧之后,可以使用ffmpeg或者mp4box进行封装~

注意,如果使用ffmpeg封装的话,请勿再次进行压制封装,否则可能会导致变帧视频失效。

 

以上,这就是视频的变帧技巧啦~

 

下面是测试视频:

 

这篇文章还没有人发言,快抢第一!

发表评论