Ast*_*tha 10 video ffmpeg centos video-encoding
我想结合两个mp4视频,使用ffmpeg形成一个mp4视频.
到目前为止我尝试过的是
ffmpeg -i input1.mp4 -i input2.mp4 output.mp4
Run Code Online (Sandbox Code Playgroud)
但是,每次我使用第一个输入的视频编解码器获取视频而不是另一个.我该如何结合它们?任何想法都将受到高度赞赏.
您可以使用 来做到这一点ffmpeg,但还有一个名为MP4Box(GPAC 的一部分)的小工具,可以连接多个 MP4 文件。
在你的情况下,语法是
MP4Box -cat input1.mp4 -cat input2.mp4 output.mp4
Run Code Online (Sandbox Code Playgroud)
如前面的答案所示,您需要先转换为中间格式.如果mp4包含h264比特流,您可以使用:
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input1.ts
ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input2.ts
ffmpeg -i "concat:input1.ts|input2.ts" -c copy output.mp4
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到更详细的答案.
您不能连接.mp4文件,但可以连接.mpg文件.首先尝试使用ffmpeg将两个视频转换为.mpg.然后,在两个.mpg文件上运行一个简单的linux cat命令来创建一个组合的.mpg文件.之后,使用ffmpeg将连接的.mpg文件转换为.mp4.这是一种迂回的方法,但它有效.您可以使用"命名管道"来减少命令数量,但结果是相同的.
如果所有输入具有相同的属性、格式和视频/音频流数量,那么您可以使用concat demuxer。这可以让您无需重新编码即可连接,因此速度很快并且可以保持质量。
制作input.txt包含以下内容:
file 'input1.mp4'
file 'input2.mp4'
Run Code Online (Sandbox Code Playgroud)
连接
ffmpeg -f concat -i input.txt -c copy output.mp4
Run Code Online (Sandbox Code Playgroud)
如果出现错误,Unsafe file name请添加-safe 0concat demuxer 输入选项(之前-i)。
如果您的输入不同或任意,则:
使用concat 过滤器。请参阅如何在 ffmpeg 中连接具有不同属性的视频?需要重新编码,但当您的输入是随机的、混合的、不可预测的或任意的时,这是更好的选择。
或者重新编码与大多数输入不匹配的输入,然后使用 concat 解复用器。该网站上有许多 示例展示了 如何 执行 此操作 。
另请参阅FFmpeg Wiki:连接。
| 归档时间: |
|
| 查看次数: |
23210 次 |
| 最近记录: |