我有2个视频我希望他们使用ffmpeg加入一个视频。我在Java中运行这些命令所以我需要它来使用命令行,所以没有其他程序解决方案适用。我尝试了许多不同的方法,但似乎没有用。所以我得到了一个35秒的视频和5秒钟中的一个,我需要40秒的输出,这似乎永远不会发生。如果有人能提供帮助,我们将不胜感激
答案 0 :(得分:2)
我自己找到了解决方案,我相信这对其他人有用,因为我花了很多时间才找到它。你不能通过ffmpeg一起加入两个mp4。但是,您可以将视频转换为.ts文件,然后将它们一个接一个地连接起来并将其转换回mp4。这听起来很复杂,但ffmpeg非常简单。
ffmpeg -i vid1.mp4 -c copy -bsf h264_mp4toannexb vid1.ts
ffmpeg -i vid2.mp4 -c copy -bsf h264_mp4toannexb vid2.ts
ffmpeg -i "concat:vid1.ts|vid2.ts" -c copy output.mp4
所以前两行将视频转换为.ts文件,第三行连接它们并制作.mp4,如果你用java这样的编程语言运行它,你可以删除.ts文件。
希望有人发现这很有用,因为我花了很多时间试图找到这个解决方案。
答案 1 :(得分:1)
有不同格式的不同方法,但对于mp4视频,视频编码方式相同,您可以使用' concat' ffmpeg中的选项:
创建一个文本文件,其中包含要连接的每个文件的完整路径 - 所以在完成后它看起来像这样:
file '/yourdirectory/yourotherdirectory/yourVideo1.mp4'
file '/yourdirectory/yourotherdirectory/yourVideo2.mp4'
调用文件类似myVideosToJoin.txt(或您想要的任何名称),现在调用以下ffmpeg命令:
ffmpeg -f concat -i myVideosToJoin.txt -c copy joinedVideo.mp4
注意:如果上面第一行中的粗体位不清晰 - mp4是视频和音频流的容器,视频流可以使用不同的编码器,不同的比特率等以不同的格式编码。该方法适用于mp4文件,其中视频以相同的方式编码。