首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >合并多个音频和视频文件

合并多个音频和视频文件
EN

Stack Overflow用户
提问于 2022-03-22 16:23:31
回答 1查看 274关注 0票数 0

我是新使用ffmpeg,我试图做的是合并多个视频和音频文件,并将他们显示在一个马赛克。

我现在拥有的是:

2个视频文件和2个音频文件,其中1个音频文件属于1个视频文件,另一个音频文件属于另一个视频文件。

代码语言:javascript
运行
复制
input1.mkv
input1.mka
input2.mkv
input2.mka

我想要完成的

代码语言:javascript
运行
复制
1. Combine input1.mkv with input1.mka and input2.mkv with input2.mka
2. I want to display input1.mkv and input2.mkv in a horizontal mosaic (https://stackoverflow.com/questions/11552565/vertically-or-horizontally-stack-mosaic-several-videos-using-ffmpeg)
3. Input2.mkv should start 120 seconds after input1.mkv in output.mkv

通过多个调用进行组合的方法

代码语言:javascript
运行
复制
ffmpeg -i input1.mkv -i input1.mka -map 0:0 -map 1:0 input1.mkv
ffmpeg -i input2.mkv -i input2.mka -map 0:0 -map 1:0 input2.mkv   

以上能否在一次通话中完成?

我目前在命令行参数方面的内容是:

代码语言:javascript
运行
复制
ffmpeg -i input1.mkv -i input1.mka -itsoffset 120 -i input2.mkv -i input2.mka -filter_complex hstack=inputs=2 -map 0:0 -map 1:0 -map 2:0 -map 3:0 -acodec copy -vcodec copy output.mkv

我所犯的错误:

代码语言:javascript
运行
复制
Streamcopy requested for output stream 0:0, which is fed from a complex filtergraph. Filtering and streamcopy cannot be used together.

在我想要完成的任务中,我做得对吗?我应该执行来自C#的多个ffmpegs调用来分别组合每个输入的音频和视频文件吗?谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-23 00:11:00

试试这个:

代码语言:javascript
运行
复制
ffmpeg -i input1.mkv -i input1.mka -i input2.mkv -i input2.mka -i input3.mka \
  -filter_complex \
    "[2:v]tpad=start_duration=120:color=black[vpad]; \
     [3:a]adelay=120000:all=1[a2pad]; \
     [4:a]adelay=180000:all=1[a3pad]; \
     [0:v][vpad]hstack=inputs=2[vout]; \
     [1:a][a2pad][a3pad]amix=inputs=3:weights=1|1|1[aout]" \
  -map [vout] -map [aout] \
  output.mkv

  • 为了延迟第二组A/V文件,您可以使用tpad作为视频,而adelay用于音频。在这里,您将看到120和180年代延迟是如何编码的。对于tpad,您也可以设置填充视频帧的颜色。
  • 编辑adelay必须为所有频道指定延迟。假设音频是立体声的,您需要添加我在评论中已经解释过的all=1 all=1。我增加了weights选项,以防你决定改变混合平衡。
  • 过滤器输出一个视频流[vout]和一个音频流[aout]。然后使用-map选项将它们分配给输出文件,每个选项一个。
  • BTW、[vout][aout]都将持续到最长的2个流结束(较短的音频流退出,而较短的视频流保存其最后一个帧)(如果这是一个问题,请描述情况和所需的情况。
  • ,您无法复制过滤器的输出流)。所以-vcodec copy-acodec copy是不去的。我已经删除它们以使用.mkv文件的默认编解码器,但是如果您需要自定义它,则在output.mkv.

之前添加输出选项

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71575519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档