Моя команда:

ffmpeg -y -i 2.mp4 -i 2.mp4 -filter_complex '[0:0] [0:1] [1:0] [1:1] concat=n=2:v=1:a=1 [v] [a]' -map '[v]' -map '[a]' output.mp4

результат:

ffmpeg version N-50911-g9efcfbe Copyright (c) 2000-2013 the FFmpeg developers built on Mar 13 2013 21:26:48 with gcc 4.7.2 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnu tls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmp3lame --enable-libopencore -amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex - -enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxa vs --enable-libxvid --enable-zlib libavutil 52. 19.100 / 52. 19.100 libavcodec 55. 0.100 / 55. 0.100 libavformat 55. 0.100 / 55. 0.100 libavdevice 54. 4.100 / 54. 4.100 libavfilter 3. 45.103 / 3. 45.103 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 '2.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 date : 2015-07-02T14:59:07.00754+03:00 encoder : Lavf55.0.100 Duration: 00:00:07.03, start: 0.000000, bitrate: 24 kb/s
Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 500x281, 21 kb/s, 29.74 fps, 29.74 tbr, 11896 tbn, 59.48 tbc Metadata: handler_name : VideoHandler
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '2.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 date : 2015-07-02T14:59:07.00754+03:00 encoder : Lavf55.0.100 Duration: 00:00:07.03, start: 0.000000, bitrate: 24 kb/s
Stream #1:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 500x281, 21 kb/s, 29.74 fps, 29.74 tbr, 11896 tbn, 59.48 tbc Metadata: handler_name : VideoHandler
[AVFilterGraph @ 020ae7c0] No such filter: '[0:0]' Error configuring filters.

1 ответ1

0

Ваши два входа кажутся одним и тем же файлом (2.mp4); так что вы можете сделать битовый поток, как упомянуто на странице документации « Конкатенация видео», так как параметры кодека будут соответствовать:

файл concat.txt:

file '/full/path/to/2.mp4'
file '/full/path/to/2.mp4'

и затем используйте команду:

$ ffmpeg  -f concat -i concat.txt -c copy out.mp4

Однако вам придется перейти на более новую версию ffmpeg, так как эта опция была добавлена только после v1.1.

Метод, который вы пытаетесь использовать (указанный в разделе «Объединение файлов с разными кодеками»), отмечает, что:

Фильтр concat доступен в последних версиях ffmpeg.

(акцент мой)

Поэтому вам нужно будет обновить его, если вы хотите использовать это для файлов с разными кодеками.

Ваша команда работает у меня как есть с заменой других видеофайлов. Если вы абсолютно не можете обновить ffmpeg, прочитайте раздел протокола concat документации для вариантов там:

Если у вас есть файлы MP4, их можно объединить без потерь, сначала перекодировав их в транспортные потоки mpeg. С видео h.264 и аудио AAC может использоваться следующее:

ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts
ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.ts
ffmpeg -i "concat:intermediate1.ts|intermediate2.ts" -c copy -bsf:a aac_adtstoasc output.mp4

Я включил это для полноты, но я сам не использовал этот метод, в отличие от других. Вы также можете использовать внешний скрипт, который они отмечают, если у вас есть файлы с разными кодеками.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .