2016-10-03 2 views
1

У меня есть ffmpeg, который объединяет 3 mp4 видео, а затем еще одну команду, которая добавляет аудио в выходной файл из первой команды. Команды являются следующие:FFMPEG - Слияние файлов 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 (НЕ имеет аудиопоток)
  • VID-2.mp4 (НЕ имеет аудиопоток)

Есть так или иначе, чтобы сделать это в одной команде? Я также хотел бы добавить звук к видео, которое создается в первой команде. Это возможно?

Консоль выход "FFMPEG -i вид-1.mp4 -i вид-2.mp4 -i вид-3.mp4 -i audio.mp3"

[[email protected] 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 
+0

Пожалуйста, покажите полный вывод консоли 'ffmpeg -i vid-1.mp4 -i vid-2.mp4 -i vid-3.mp4 -i audio.mp3'. Кроме того, [su] - лучшее место для вопросов использования 'ffmpeg' cli, поскольку Stack Overflow предназначен только для программирования вопросов. – LordNeckbeard

+0

Вы хотите, чтобы консольный вывод команды «ffmpeg -i vid-1.mp4 -i vid-2.mp4 -i vid-3.mp4 -i audio.mp3» без кодирования или записи в любой файл? –

+0

Я добавил вывод, но как я могу отформатировать его, как показывает терминал? –

ответ

1
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 вместо того, чтобы полагаться на default stream selection behavior.

  • Добавлена ​​опция -shortest, поскольку продолжительность конкатенированного видеоролика короче, чем продолжительность звука.

+0

Это прекрасно сработало! У меня есть еще один вопрос о слиянии видео, если вы не против смотреть на него. Http://superuser.com/questions/1131383/ffmpeg-merge-mp4s-and-apply-watermark –