使用 ffmpeg 连接视频不起作用

使用 ffmpeg 连接视频不起作用

我目前正在尝试连接 3 个没有音频流的视频并在同一步骤中添加音频文件。

我创建了这个命令来完成这项工作:

ffmpeg -y -r 30 -i data\intro.mp4 -vcodec ppm -f image2pipe -i data\render.ppm -i data\outro.mp4 -i "data\I could be the one.mp3" -c:v libx264 -crf 18 -preset slow -pix_fmt yuv420p -c:a copy -filter_complex "[0:0] [1:0] [2:0] concat=n=3:v=1:a=0 [v]" -map [v] -map 3:0 -shortest -metadata title="Development of BrainStoneMod" -metadata description="This is the development of the BrainStoneMod starting from 08th April, 2013" -metadata author="The_BrainStone" -metadata copyright="2013" -metadata year="2013" -metadata composer="" -metadata TBPM="" -metadata TDAT="" gource.mp4

这确实是一个很长的命令,但它满足了我的需求,直到我想在简介和结尾之间嵌入实际视频。

我收到了这个日志:

ffmpeg version N-51639-g7775992 Copyright (c) 2000-2013 the FFmpeg developers
  built on Apr  5 2013 22:24:22 with gcc 4.8.0 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
e --enable-libgsm --enable-libilbc --enable-libmp3lame --enable-libopencore-amrn
b --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libr
tmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheo
ra --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-li
bvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --ena
ble-zlib
  libavutil      52. 25.100 / 52. 25.100
  libavcodec     55.  2.100 / 55.  2.100
  libavformat    55.  1.100 / 55.  1.100
  libavdevice    55.  0.100 / 55.  0.100
  libavfilter     3. 49.100 /  3. 49.100
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'data\intro.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.1.100
  Duration: 00:00:04.00, start: 0.000000, bitrate: 42 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720
[SAR 1:1 DAR 16:9], 38 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc
    Metadata:
      handler_name    : VideoHandler
[image2pipe @ 027f0a80] Stream #0: not enough frames to estimate rate; consider
increasing probesize
Input #1, image2pipe, from 'data\render.ppm':
  Duration: N/A, bitrate: N/A
    Stream #1:0: Video: ppm, rgb24, 1280x720, 25 tbr, 25 tbn, 25 tbc
Input #2, mov,mp4,m4a,3gp,3g2,mj2, from 'data\outro.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.1.100
  Duration: 00:00:04.00, start: 0.000000, bitrate: 42 kb/s
    Stream #2:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720
[SAR 1:1 DAR 16:9], 38 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc
    Metadata:
      handler_name    : VideoHandler
[mp3 @ 02757020] max_analyze_duration 5000000 reached at 5015510 microseconds
[mp3 @ 02757020] Estimating duration from bitrate, this may be inaccurate
Input #3, mp3, from 'data\I could be the one.mp3':
  Metadata:
    TBPM            : 140
    TDAT            : 0000
    composer        : Kevin Als
  Duration: 00:03:55.91, start: 0.000000, bitrate: 320 kb/s
    Stream #3:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s
[Parsed_concat_0 @ 028b20e0] Input link in1:v0 parameters (size 1280x720, SAR 0:
1) do not match the corresponding output link in0:v0 parameters (1280x720, SAR 1
:1)
[Parsed_concat_0 @ 028b20e0] Failed to configure output pad on Parsed_concat_0

我应该怎么办?

顺便说一句:这是我以前使用过的命令,效果很好:

ffmpeg -y -r 30 -i "data\I could be the one.mp3" -vcodec ppm -f image2pipe -i data\render.ppm -c:v libx264 -crf 18 -preset slow -pix_fmt yuv420p -c:a copy -map 1:0 -map 0:0 -shortest -metadata title="Development of BrainStoneMod" -metadata description="This is the development of the BrainStoneMod starting from 08th April, 2013" -metadata author="The_BrainStone" -metadata copyright="2013" -metadata year="2013" -metadata composer="" -metadata TBPM="" -metadata TDAT="" gource.mp4

有任何想法吗?

答案1

好吧,我通过将其分成两个命令来解决这个问题:

ffmpeg -y -r 30 -i data\intro.mp4 -r 30 -i data\outro.mp4 -r 30 -vcodec ppm -f image2pipe -i data\render.ppm -filter_complex "[0:0] [2:0] [1:0] concat=n=3:v=1:a=0:unsafe=1 [v]" -c:v libx264 -preset ultrafast -map [v] data\tmp.mp4
ffmpeg -y -r 30 -i data\tmp.mp4 -i "data\I could be the one.mp3" -c:v libx264 -crf 18 -preset slow -pix_fmt yuv420p -c:a copy -map 0:0 -map 1:0 -shortest -metadata title="Development of BrainStoneMod" -metadata description="This is the development of the BrainStoneMod starting from 08th April, 2013" -metadata author="The_BrainStone" -metadata copyright="2013" -metadata year="2013" -metadata composer="" -metadata TBPM="" -metadata TDAT="" gource.mp4

但是,难道没有可能一次性完成这一切吗?

相关内容