【问题标题】:ffmpeg: concat videos and imagesffmpeg:连接视频和图像
【发布时间】: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


【解决方案1】:

我的猜测是这完全是一个编解码器问题——PNG 转换的 MP4 可能与您真正的 MP4 的编解码器不同。

试试这个 -- concatenation of files of different codecs。

【讨论】:

  • 听起来是个好主意。但是在您的链接中给出的示例中,ffmpeg 期望每个视频中都有音频流。我的 splitter.mp4 只有视频流。我不知道如何处理...
  • 只是一个想法,但是您的图像视频长度不同吗?否则,您总是可以只包含一个 wav(或其他)静音文件。
  • 不确定“不同的长度”是什么意思,但是向拆分器添加一个无声但真实的流听起来不错。我正在尝试。似乎不起作用,但我现在需要自己搜索。我明天会回来。谢谢:)
  • 这个主意不错,虽然最后没用:我的分割器的视频流还有其他问题...无论如何,我结束了 ubuntu+openshot 的安装(是的,我是那么绝望),它成功了......不过,谢谢你的帮助
猜你喜欢
  • 2018-10-19
  • 1970-01-01
  • 2016-09-06
  • 2012-03-09
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多