当一个音频流丢失时,FFMPEG amerge失败

时间:2016-02-03 12:59:49

标签: ffmpeg

我正在尝试合并两个视频文件(大小为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]应用选项时出错   过滤器。配置过滤器时出错。

即使一个音频流缺少音频轨道或者两个音频流都没有音轨,有没有办法让这个命令工作?

1 个答案:

答案 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"