我有 2 个视频(相同的分辨率,相同的编码)文件,我想要连接它们,并且我想在它们之间插入一些文本 3 秒,作为分割器。我在 Windows 上使用 ffmpeg 执行此操作。
我感兴趣的可选想法:
- 避免在此过程中重新编码视频
- 在每个部分的交叉处有淡入/淡出
现在,我将文本制作为图像(但我愿意接受其他建议)。假设我有:
- 视频1.mp4: 6:33
- splitter.png(与 video1.mp4 分辨率相同)
- 视频2.mp4: 16:44
我尝试了一些方法,但总是遇到同样的问题:视频是 23:20(视频 1 + 3 秒 + 视频 2),但 3 秒的间隙只是最后一个视频 1 帧冻结而不是我的图像/文本...
知道我做错了什么或者我应该如何实现这一目标吗?
这是我到目前为止所尝试的:
方法一:图像转视频
将图像转换为 3 秒的 mp4 影片,然后将其与其他图像连接(解复用器):
ffmpeg -loop 1 -f image2 -i splitter.png -r 30 -t 3 splitter.mp4
ffmpeg -f concat -i input.txt -codec copy output.mp4
哪里的input.txt
好像:
file 'E:\video1.mp4'
file 'E:\splitter.mp4'
file 'E:\video2.mp4'
内容为splitter.png
可见于splitter.mp4
,但不在output.mp4
。另外,我不完全确定 splitter.mp4 遵循与 2 个视频完全相同的编码,而且我不知道如何验证这一点。
方法二:插入图像帧
直接在图像上运行 concat(解复用器)90 次(30fps -> 3 秒)
ffmpeg -f concat -i input.txt -codec copy output.mp4
哪里的input.txt
好像:
file 'E:\video1.mp4'
file 'E:\splitter.png'
...
file 'E:\splitter.png'
file 'E:\video2.mp4'
编辑:可能的解决方案?
由于我所做的只是截屏,所以我也可以截屏我的分割器图像。这样我就可以确定音频和视频编码,并且不会有任何合并问题,并且不需要任何重新编码...我知道这可能听起来很愚蠢,但它可能会成功...
注意:我没有尝试过,因为我已经使用过 Openshot。