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

FFMPEG-合并mp4文件和音频文件

冯茂实
2023-03-14

我有一个ffmpeg,它可以合并3个mp4视频,然后另一个命令可以将音频从第一个命令添加到输出文件中。命令如下:

ffmpeg -i vid-1.mp4 -i vid-2.mp4 -i vid-3.mp4 -filter_complex "[0:v][1:v][2:v]concat=n=3:v=1" -preset ultrafast -crf 1 output.mp4

ffmpeg -i output.mp4 -i audio.mp3 -preset ultrafast -crf 1 final.mp4
  • vid-1。mp4(没有音频流)

有没有在一个命令中执行此操作?我还想将音频添加到在第一个命令中创建的视频中。这可能吗?

“ffmpeg-i vid-1.mp4-i vid-2.mp4-i vid-3.mp4-i audio.mp3”的控制台输出

[jstevens@jr testing]$ ffmpeg -i vid-1.mp4 -i vid-2.mp4 -i vid-3.mp4 -i audio.mp3
ffmpeg version 3.0.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 6.1.1 (GCC) 20160510 (Red Hat 6.1.1-2)
  configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --enable-bzlib --disable-crystalhd --enable-frei0r --enable-gnutls --enable-ladspa --enable-libass --enable-libcdio --enable-libdc1394 --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
  libavutil      55. 17.103 / 55. 17.103
  libavcodec     57. 24.102 / 57. 24.102
  libavformat    57. 25.100 / 57. 25.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 31.100 /  6. 31.100
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'vid-1.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.25.101
  Duration: 00:00:05.00, start: 0.000000, bitrate: 1085 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1081 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'vid-2.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.25.101
  Duration: 00:00:05.00, start: 0.000000, bitrate: 1018 kb/s
    Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1014 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
Input #2, mov,mp4,m4a,3gp,3g2,mj2, from 'vid-3.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.25.101
  Duration: 00:00:05.00, start: 0.000000, bitrate: 823 kb/s
    Stream #2:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 819 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
[mp3 @ 0x1ca30c0] Skipping 0 bytes of junk at 0.
[mp3 @ 0x1ca30c0] Estimating duration from bitrate, this may be inaccurate
Input #3, mp3, from 'audio.mp3':
  Duration: 00:00:19.57, start: 0.000000, bitrate: 64 kb/s
    Stream #3:0: Audio: mp3, 44100 Hz, mono, s16p, 64 kb/s
At least one output file must be specified

共有1个答案

慕容明煦
2023-03-14
ffmpeg -i vid-1.mp4 -i vid-2.mp4 -i vid-3.mp4 -i audio.mp3 \
-filter_complex "[0:v][1:v][2:v]concat=n=3:v=1:a=0[v]" \
-map "[v]" -map 3:a -shortest output.mp4

>

  • 我建议使用-map手动定义映射,而不是依赖默认的流选择行为。

    添加了-shortest选项,因为连接的视频持续时间比音频持续时间短。

  •  类似资料:
    • 我使用ffmpeg合并mp4和png,我使用两种方式: > 使用命令 字符串cmd="-y-i"in.mp4"-i"in.png"-filter_complex[0: v][1: v]overlay=0:0[out]-预设veryFast-map[out]-map 1:0-map 0:0-codec: a复制"out.mp4; 输出文件缺少音频: 使用命令: 字符串cmd=“-y-i”输入。mp4

    • 我无法使用以下python代码从mp4文件创建带有ffmpeg的单声道音频文件 这是我的mp4文件的媒体信息 输出 {'index':'0','codec\u name':'h264','codec\u long\u name':'H.264/AVC/MPEG-4 AVC/MPEG-4第10部分','profile':'High','codec\u type':'video','codec\u t

    • 我正在尝试使用FFMPEG合并2个mp4文件。其中一个文件同时具有视频和音频(),而另一个只有音频()。这些文件的名称以以下方式列在名为的文本文件中: 然后执行下面的ffmpeg命令来合并它们。 但是,生成的连接文件只包含。也就是说,如果

    • 本文向大家介绍使用ffmpeg 合并aac格式音频文件的方法,包括了使用ffmpeg 合并aac格式音频文件的方法的使用技巧和注意事项,需要的朋友参考一下 FFmpeg简介 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保

    • 谁能帮助我理解为什么我尝试使用FFMPEG CLI用语言元数据标记音轨失败了?我已经找到了关于标签正确语法的各种信息,但我仍然不清楚(所以我的问题的第1部分是什么是正确的语法),但即使我得到了正确的(我可能有也可能没有),我想知道FFMPEG是否未能标记我的音轨,因为我的源被包装/混合了视频本质。这是否排除了语言标记的能力? 值得注意的是,尝试从MP4和MKV源(视频和音频)到MP4(视频和音频)

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