当前位置: 首页 > 知识库问答 >
问题:

用ffmpeg怎么把25个小视频组合成一个大视频?

谭正谊
2023-12-12

用ffmpeg怎么把25个小视频组合成一个大视频?
每个小视频90X160px,没有声音,只有视频
5行5列
一共25个

以下代码来自网络,但是行不通,小视频没有声音,只有画面

@echo offset dirname=D:\短视频\shortvideos_small\ffmpeg -i %dirname%1.mp4 -i %dirname%2.mp4 -i %dirname%3.mp4 -i %dirname%4.mp4 -i %dirname%5.mp4 -i %dirname%6.mp4 -i %dirname%7.mp4 -i %dirname%8.mp4 -i %dirname%9.mp4 -i %dirname%10.mp4 -i %dirname%11.mp4 -i %dirname%12.mp4 -i %dirname%13.mp4 -i %dirname%14.mp4 -i %dirname%15.mp4 -i %dirname%16.mp4 -i %dirname%17.mp4 -i %dirname%18.mp4 -i %dirname%19.mp4 -i %dirname%20.mp4 -i %dirname%21.mp4 -i %dirname%22.mp4 -i %dirname%23.mp4 -i %dirname%24.mp4 -i %dirname%25.mp4 -filter_complex "[0:v]scale=iw/5:-1[v0];[1:v]scale=iw/5:-1[v1];[2:v]scale=iw/5:-1[v2];[3:v]scale=iw/5:-1[v3];[4:v]scale=iw/5:-1[v4];[5:v]scale=iw/5:-1[v5];[6:v]scale=iw/5:-1[v6];[7:v]scale=iw/5:-1[v7];[8:v]scale=iw/5:-1[v8];[9:v]scale=iw/5:-1[v9];[10:v]scale=iw/5:-1[v10];[11:v]scale=iw/5:-1[v11];[12:v]scale=iw/5:-1[v12];[13:v]scale=iw/5:-1[v13];[14:v]scale=iw/5:-1[v14];[15:v]scale=iw/5:-1[v15];[16:v]scale=iw/5:-1[v16];[17:v]scale=iw/5:-1[v17];[18:v]scale=iw/5:-1[v18];[19:v]scale=iw/5:-1[v19];[20:v]scale=iw/5:-1[v20];[21:v]scale=iw/5:-1[v21];[22:v]scale=iw/5:-1[v22];[23:v]scale=iw/5:-1[v23];[24:v]scale=iw/5:-1[v24];[v0][v1][v2][v3][v4][v5][v6][v7][v8][v9][v10][v11][v12][v13][v14][v15][v16][v17][v18][v19][v20][v21][v22][v23][v24]xstack=inputs=25:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2|0_h0+h1+h2+h3|w0_0|w0_h0|w0_h0+h1|w0_h0+h1+h2|w0_h0+h1+h2+h3|w0+w4_0|w0+w4_h0|w0+w4_h0+h1|w0+w4_h0+h1+h2|w0+w4_h0+h1+h2+h3|w0+w4+w8_0|w0+w4+w8_h0|w0+w4+w8_h0+h1|w0+w4+w8_h0+h1+h2|w0+w4+w8_h0+h1+h2+h3|w0+w4+w8+w12_0|w0+w4+w8+w12_h0|w0+w4+w8+w12_h0+h1|w0+w4+w8+w12_h0+h1+h2|w0+w4+w8+w12_h0+h1+h2+h3;[0:a][1:a][2:a][3:a][4:a][5:a][6:a][7:a][8:a][9:a][10:a][11:a][12:a][13:a][14:a][15:a][16:a][17:a][18:a][19:a][20:a][21:a][22:a][23:a][24:a]amix=inputs=25" D:\短视频\output.mp4

共有3个答案

家西岭
2023-12-12

我的脚本就有这样的功能,你可以研究下: https://github.com/abcfy2/simple_video_compress_build


卢出野
2023-12-12

新建一个filelist.txt:

file '1.mp4'file '2.mp4'file '3.mp4'...file '25.mp4'

用这个 FFmpeg 命令:

ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -i input4.mp4 -i input5.mp4 -i input6.mp4 -i input7.mp4 -i input8.mp4 -i input9.mp4 -i input10.mp4 -i input11.mp4 -i input12.mp4 -i input13.mp4 -i input14.mp4 -i input15.mp4 -i input16.mp4 -i input17.mp4 -i input18.mp4 -i input19.mp4 -i input20.mp4 -i input21.mp4 -i input22.mp4 -i input23.mp4 -i input24.mp4 -i input25.mp4 -filter_complex "[0:v][1:v][2:v][3:v][4:v][5:v][6:v][7:v][8:v][9:v][10:v][11:v][12:v][13:v][14:v][15:v][16:v][17:v][18:v][19:v][20:v][21:v][22:v][23:v][24:v]xstack=inputs=25:layout=0_0|w0_0|w0+w1_0|w0+w1+w2_0|w0+w1+w2+w3_0|0_h0|w0_h0|w0+w1_h0|w0+w1+w2_h0|w0+w1+w2+w3_h0|0_h0+h5|w0_h0+h5|w0+w1_h0+h5|w0+w1+w2_h0+h5|w0+w1+w2+w3_h0+h5|0_h0+h5+h10|w0_h0+h5+h10|w0+w1_h0+h5+h10|w0+w1+w2_h0+h5+h10|w0+w1+w2+w3_h0+h5+h10|0_h0+h5+h10+h15|w0_h0+h5+h10+h15|w0+w1_h0+h5+h10+h15|w0+w1+w2_h0+h5+h10+h15|w0+w1+w2+w3_h0+h5+h10+h15[v]" -map "[v]" output.mp4
隆安然
2023-12-12

这个问题可以通过使用FFmpeg的concat过滤器来解决,该过滤器允许您将多个视频文件连接在一起。由于您希望将所有视频组合成一个大视频,因此可以按照以下方式进行操作:

  1. 将所有视频文件放在同一个文件夹中(例如,您可以将它们放在"D:\短视频\smallvideos"文件夹中)。
  2. 打开命令提示符(Windows)或终端(Mac和Linux)。
  3. 导航到包含所有视频文件的文件夹。例如,如果您的视频文件位于"D:\短视频\smallvideos"文件夹中,则可以使用以下命令进入该文件夹:cd D:\短视频\smallvideos
  4. 运行以下FFmpeg命令:
ffmpeg -i "concat:001.mp4|002.mp4|003.mp4|004.mp4|005.mp4|006.mp4|007.mp4|008.mp4|009.mp4|010.mp4|011.mp4|012.mp4|013.mp4|014.mp4|015.mp4|016.mp4|017.mp4|018.mp4|019.mp4|020.mp4|021.mp4|022.mp4|023.mp4|024.mp4" -c copy output.mp4

此命令使用concat过滤器将所有视频文件连接在一起,并将它们命名为"output.mp4"。-c copy选项表示将视频和音频流复制到输出文件中,而不进行重新编码。

请注意,上述命令中的文件名是示例文件名,您需要根据您的实际文件名进行修改。另外,请确保您的视频文件没有在播放器中打开,否则可能会导致连接失败。

希望这可以帮助您解决问题!

 类似资料:
  • 我正在尝试修剪一个75 GB大小、1小时28分钟长的视频 我只想抽出7秒钟 当我尝试这个

  • 我已经使用程序youtube-dl下载了一个YouTube播放列表,我选择了单独下载视频和音频,我现在有一个文件夹充满了视频及其相应的音频,我希望与ffmpeg合并在一起。 我需要使用批处理脚本来执行此操作,但问题是youtube-dl在原始文件的标题之后添加了临时字母,因此视频与其对应的音频没有相同的名称,文件名如下所示: 如何使用windows批处理脚本和ffmpeg合并这些多个视频/音频文件

  • 我编写了代码将几个音频文件与1个图像组合成WebM视频。(audio1与默认jpg结合,audio2与默认jpg结合等)。 问题是,在此之后,视频长度比音频长度长25秒(因此音频在视频结束前缩短25秒)。 有没有办法在音频的同时停止视频?这是我使用的代码(我启动一个BAT命令文件)

  • js怎么根据一个视频的在线url生成一个视频预览图? 相当于要获取该视频的第一秒或者第一帧的图片。

  • 我想把2个视频合成一个视频并排放。我还希望为每个视频设置开始/停止时间。最终视频应为H264/AAC编解码和mp4格式。我附上了样本视频。https://www.dropbox.com/s/e5eouyrrqsy44ts/1.webm?dl=0 https://www.dropbox.com/s/u0zqie0icxamt3q/2.webm?dl=0 我使用了下面的ffmpeg命令。 ffmpeg