【发布时间】:2013-08-29 09:51:44
【问题描述】:
我有 2 个视频(相同分辨率、相同编码)文件要连接,我想在它们之间插入一些文本 3 秒,作为拆分器。我在 Windows 上使用 ffmpeg 执行此操作。
我感兴趣的可选想法:
- 避免在此过程中重新编码视频
- 在每个部分的交叉点有淡入/淡出
目前,我将文本制作为图像(但我愿意接受其他建议)。假设我有:
- video1.mp4: 6:33
- splitter.png(与 video1.mp4 分辨率相同)
- video2.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(demuxer)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。
【问题讨论】:
-
我通过强制像素格式来解决这个问题:对所有连接的输入文件使用
-pix_fmt=yuv420p。
标签: ffmpeg video-editing