1. 起因, 目的:
- 前面我写过,使用 python 把一个视频复制3次
- 但是速度太慢了,我想试试看能否改进。
- 而且我想换一种新的视频处理思路,并试试看速度如何。
2. 先看效果
- 效果就是能行,而且速度也快。
3. 过程:
代码 1, 把视频复制3次
- 输入的视频名称是: a22.mp4, 输出 a33.mp4
- 下面这个命令叫做:生成一个宽三倍的视频。
ffmpeg -i a22.mp4 -filter_complex “[0:v]split=3[v1][v2][v3];[v1][v2][v3]hstack=inputs=3” -c:v libx264 -preset ultrafast -crf 23 a33.mp4
代码 2, 换个花样, 对视频进行如下处理
现在我想换一种方法来拼接视频。
依然是按照水平方向, 即,生成一个宽三倍的视频。
但是视频顺序改变需要一下。
假设视频的名称是 a.mp4,
1. 原来的做法是, 在时间轴上,一直是
a.mp4 + a.mp4 + a.mp4
这部分已经完成了。速度也很快。
2. 我有一个新的想法:
- 先把 a.mp4,按照时间顺序切分为 3部分,即,a1, a2, a3
- 切分方法,使用平均值计算时间长度,如果时间长度无法完全被3整除,那就让 a3 成为最长的。
3. 下面是合并方法。
- 先把按照时间方向上,重新组合, 即,输出视频的长宽都不变(还是a.mp4 的长度),
总的时间长度也不变。
此时需要生成下面3个视频。
b1 = a2 + a3 + a1
b2 = a3 + a1 + a2
b3 = a1 + a2 + a3 # 这一步是多余的。 因为 b3 就是 a.mp4 本身!
- 最后需要再按照水平方向合并,即 生成一个宽三倍的视频。
c = b1 + b2 + b3
上面的思路能否实现?
请给出建议和代码。
这部分还是有问题,代码不对劲。先记录过程,后面再修改。
4. 结论 + todo
可以优化的地方:
- 比如音频如何处理。
- 使用gpu, 但是尺寸超出 4096 会报错。怎么解决。
希望对大家有帮助。