我是新使用ffmpeg,我试图做的是合并多个视频和音频文件,并将他们显示在一个马赛克。
我现在拥有的是:
2个视频文件和2个音频文件,其中1个音频文件属于1个视频文件,另一个音频文件属于另一个视频文件。
input1.mkv
input1.mka
input2.mkv
input2.mka我想要完成的
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通过多个调用进行组合的方法
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 以上能否在一次通话中完成?
我目前在命令行参数方面的内容是:
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我所犯的错误:
Streamcopy requested for output stream 0:0, which is fed from a complex filtergraph. Filtering and streamcopy cannot be used together.在我想要完成的任务中,我做得对吗?我应该执行来自C#的多个ffmpegs调用来分别组合每个输入的音频和视频文件吗?谢谢你的帮助!
发布于 2022-03-23 00:11:00
试试这个:
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.mkvtpad作为视频,而adelay用于音频。在这里,您将看到120和180年代延迟是如何编码的。对于tpad,您也可以设置填充视频帧的颜色。adelay必须为所有频道指定延迟。假设音频是立体声的,您需要添加我在评论中已经解释过的all=1 all=1。我增加了weights选项,以防你决定改变混合平衡。[vout]和一个音频流[aout]。然后使用-map选项将它们分配给输出文件,每个选项一个。[vout]和[aout]都将持续到最长的2个流结束(较短的音频流退出,而较短的视频流保存其最后一个帧)(如果这是一个问题,请描述情况和所需的情况。-vcodec copy和-acodec copy是不去的。我已经删除它们以使用.mkv文件的默认编解码器,但是如果您需要自定义它,则在output.mkv.之前添加输出选项
https://stackoverflow.com/questions/71575519
复制相似问题