Audio FFMPEG mux视频和音频(来自另一个视频)-映射问题

Audio FFMPEG mux视频和音频(来自另一个视频)-映射问题,audio,video,map,ffmpeg,mux,Audio,Video,Map,Ffmpeg,Mux,我想将音频从一个视频放置到另一个没有音频的视频(在一个命令中): 我想“-map”是正确的方法,但我被它弄糊涂了 您能建议如何解决吗?输入概述 input_0.mp4具有所需的视频流,而input_1.mp4具有所需的音频流: 在ffmpeg中,流如下所示: $ ffmpeg -i input_0.mp4 -i input_1.mp4 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input_0.mp4': Duration: 00:01:48.50,

我想将音频从一个视频放置到另一个没有音频的视频(在一个命令中):

我想“-map”是正确的方法,但我被它弄糊涂了

您能建议如何解决吗?

输入概述
input_0.mp4
具有所需的视频流,而
input_1.mp4
具有所需的音频流:

ffmpeg
中,流如下所示:

$ ffmpeg -i input_0.mp4 -i input_1.mp4

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input_0.mp4':
  Duration: 00:01:48.50, start: 0.000000, bitrate: 4144 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 4014 kb/s, SAR 115:87 DAR 1840:783, 23.98 fps, 23.98 tbr, 16k tbn, 47.95 tbc (default)
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 124 kb/s (default)

Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'input_1.mp4':
  Duration: 00:00:30.05, start: 0.000000, bitrate: 1754 kb/s
    Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x480 [SAR 8:9 DAR 4:3], 1687 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 119.88 tbc (default)
    Stream #1:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 55 kb/s (default)
身份证号码
ffmpeg
是指带有索引号的输入文件和流。格式为
input\u file\u id:input\u stream\u id
。由于
ffmpeg
从0开始计数,因此流
1:1
指的是来自
input\u 1.mp4
的音频

流说明符 这可以通过以下方式得到增强。例如,您可以告诉
ffmpeg
,您想要来自第一个输入的第一个视频流(
0:v:0
),以及来自第二个输入的第一个音频流(
1:a:0
)。我更喜欢这种方法,因为它更有效。此外,它不太容易发生意外映射,因为
1:1
可以引用任何类型的流,而
2:v:3
仅引用第三个输入文件的第四个视频流

例子 该选项指示所需的流。要从
input\u 0.mp4
复制视频,从
input\u 1.mp4
复制音频,请执行以下操作:

$ ffmpeg -i input_0.mp4 -i input_1.mp4 -c copy -map 0:0 -map 1:1 -shortest out.mp4
下一个示例将执行相同的操作:

$ ffmpeg -i input_0.mp4 -i input_1.mp4 -c copy -map 0:v:0 -map 1:a:0 -shortest out.mp4
  • -映射0:v:0
    可以翻译为:从第一个输入(
    0
    ),选择视频流类型(
    v
    ),第一个视频流(
    0

  • -map 1:a:0
    可以翻译为:从第二个输入(
    1
    ),选择音频流类型(
    a
    ),第一个音频流(
    0

附加说明
  • 使用
    -c copy
    将对流进行编码,而不是重新编码,因此不会出现质量损失。如果要重新编码,请参阅

  • -shortest
    选项将使输出持续时间与最短输入流的持续时间匹配

  • 有关更多信息,请参阅


我有一个新命令用于将音频合并到视频

ffmpeg -i video.mp4 -i audio.mp4 -map 0.0 -map 1.0 -acodec copy -qscale 4 -vcodec mpeg4 outvideo.mp4
-qscale是ffmpeg视频质量设置选项

-acodec copy是将音频的默认质量复制到输出视频的选项

-vcodec mpeg4是将视频的默认质量复制到输出视频的选项


作为MKV特定的补充答案:

我能做到。我更喜欢GUI

添加第一个视频后,添加第二个(“添加源文件”),然后仅选择所需的流,然后按“开始多路复用”


投票赞成,因为这是我发现的最好的描述+示例,我花了好几个小时试图做这件事。感谢您不仅解决了它,而且还解释了它!此解释非常适合于地图初学者请帮助:@FernandoEspinosa此编辑实际上不正确<代码>-映射1:0将引用
输入1.mp4的视频,而不是音频。示例应获得音频,因此必须是
-map 1:1
-map 1:a:0
,在本例中,这将导致获得所需的音频流。请参阅答案中的图像,以获取视觉表示。
-vcodec
已经存在很久了。它与较新的别名
-codec:v
-c:v
相同@HoangHieu我可以将wav音频添加到mp4视频吗?我尝试了
ffmpeg-i1.mp4-i0.wav-map0-map1-codeccopy-shortest new.mp4
命令,但不起作用??你的命令。0.0不是0,1.0不是1-1.0它的意思是:索引[1]通道[0]…-acodec copy not-codec copy,它意味着复制音频编解码器您可能希望
-vcodec copy
以避免重新编码视频
ffmpeg -i video.mp4 -i audio.mp4 -map 0.0 -map 1.0 -acodec copy -qscale 4 -vcodec mpeg4 outvideo.mp4