我正在尝试合并两个视频文件(大小为320x240)并创建一个水平扩展的输出视频文件(大小为640x240)但是对于音频合并,当其中一个输入文件不包含音频时,命令会失败流。
这是我正在使用的命令:
C:\ ffmpeg \ bin \ ffmpeg.exe -y -i" input1.flv" -i" input2.flv" -filter_complex" nullsrc = size = 640x240 [base]; [0:v] scale = 320x240 [upperleft]; [1:v] scale = 320x240 [upperright]; [base] [upperleft] overlay = shortest = 1 [TMP1]; [TMP1] [upperright]叠加=最短= 1:X = 320:Y = 0; [0:一个] [1:A] amerge =输入= 2 [AOUT]" -map [aout] -ac 2" output.mp4"
当input1.flv和input2.flv都包含音轨时,此命令正常工作。当其中任何一个缺少音轨时,该命令会出现以下错误:
[flv @ 0000000004300660]已解析头部后发现的流 [flv @ 0000000004300660]无法找到流1的编解码器参数 (音频:无,0频道):未指定的样本格式考虑 增加“分析”的价值'并且'探测'选项 输入#1,flv,来自' input2.flv':元数据: creationdate:Tue Jan 26 16:50:12持续时间:00:25:59.10,开始:0.000000,比特率:212 kb / s 流#1:0:视频:flv1,yuv420p,320x240,1k tbr,1k tbn,1k tbc 流#1:1:音频:无,0频道 流#1:2:数据:无[abuffer @ 0000000004335620]参数' time_base'的值inf超出范围[0 - 2.14748e + 009] [abuffer @ 0000000004335620]无法解析选项值"(null)"作为样本 format [abuffer @ 0000000004335620]参数的值inf '那么time_base'超出范围[0 - 2.14748e + 009] [abuffer @ 0000000004335620]将选项time_base设置为值1/0时出错。 [图形 来自流1的输入0:1 @ 00000000042e4d60]应用选项时出错 过滤器。配置过滤器时出错。
即使一个音频流缺少音频轨道或者两个音频流都没有音轨,有没有办法让这个命令工作?
答案 0 :(得分:0)
有一个准备命令只需要执行一次,以生成文件
ffmpeg -f lavfi -t 1 -i anullsrc:r=48000 silence.mkv
对于每个flv,
ffmpeg -i input1.flv -analyzeduration 10M -i silence.mkv -c copy -map 0 -map 1 input1a.mkv
ffmpeg -i input2.flv -analyzeduration 10M -i silence.mkv -c copy -map 0 -map 1 input2a.mkv
然后,
ffmpeg -i input1a.mkv -i input2a.mkv -filter_complex "[0:v][1:v]hstack=shortest=1[v];[0:a][1:a]amerge[a]" -map [v] -map [a] -ac 2 "output.mp4"